@gravity-ui/markdown-editor 13.3.0 → 13.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (106) hide show
  1. package/build/cjs/bundle/HorizontalDrag.d.ts +1 -0
  2. package/build/cjs/bundle/HorizontalDrag.js +2 -1
  3. package/build/cjs/bundle/config/action-names.d.ts +1 -1
  4. package/build/cjs/bundle/config/action-names.js +1 -0
  5. package/build/cjs/bundle/config/icons.d.ts +1 -1
  6. package/build/cjs/bundle/config/icons.js +1 -0
  7. package/build/cjs/bundle/config/markup.d.ts +1 -0
  8. package/build/cjs/bundle/config/markup.js +10 -1
  9. package/build/cjs/bundle/config/wysiwyg.d.ts +1 -0
  10. package/build/cjs/bundle/config/wysiwyg.js +12 -1
  11. package/build/cjs/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockNodeView/NodeView.d.ts +23 -0
  12. package/build/cjs/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockNodeView/NodeView.js +57 -0
  13. package/build/cjs/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlock.css +66 -0
  14. package/build/cjs/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.d.ts +17 -0
  15. package/build/cjs/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js +178 -0
  16. package/build/cjs/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockNodeView/index.d.ts +1 -0
  17. package/build/cjs/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockNodeView/index.js +4 -0
  18. package/build/cjs/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockSpecs/const.d.ts +15 -0
  19. package/build/cjs/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockSpecs/const.js +20 -0
  20. package/build/cjs/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockSpecs/index.d.ts +10 -0
  21. package/build/cjs/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockSpecs/index.js +43 -0
  22. package/build/cjs/extensions/yfm/YfmHtmlBlock/actions.d.ts +2 -0
  23. package/build/cjs/extensions/yfm/YfmHtmlBlock/actions.js +15 -0
  24. package/build/cjs/extensions/yfm/YfmHtmlBlock/const.d.ts +2 -0
  25. package/build/cjs/extensions/yfm/YfmHtmlBlock/const.js +6 -0
  26. package/build/cjs/extensions/yfm/YfmHtmlBlock/index.d.ts +14 -0
  27. package/build/cjs/extensions/yfm/YfmHtmlBlock/index.js +17 -0
  28. package/build/cjs/extensions/yfm/index.d.ts +1 -1
  29. package/build/cjs/extensions/yfm/index.js +1 -1
  30. package/build/cjs/i18n/common/en.json +6 -2
  31. package/build/cjs/i18n/common/index.d.ts +7 -3
  32. package/build/cjs/i18n/common/ru.json +6 -2
  33. package/build/cjs/i18n/menubar/en.json +37 -36
  34. package/build/cjs/i18n/menubar/index.d.ts +38 -37
  35. package/build/cjs/i18n/menubar/ru.json +37 -36
  36. package/build/cjs/icons/index.d.ts +1 -1
  37. package/build/cjs/icons/index.js +2 -1
  38. package/build/cjs/markup/commands/blocks.d.ts +1 -0
  39. package/build/cjs/markup/commands/blocks.js +12 -1
  40. package/build/cjs/version.js +1 -1
  41. package/build/cjs/view/components/YfmHtml/{YfmHtml.d.ts → YfmStaticView.d.ts} +2 -2
  42. package/build/cjs/view/components/YfmHtml/{YfmHtml.js → YfmStaticView.js} +2 -2
  43. package/build/cjs/view/components/YfmHtml/index.d.ts +12 -1
  44. package/build/cjs/view/components/YfmHtml/index.js +4 -2
  45. package/build/cjs/view/hocs/withYfmHtml/index.d.ts +13 -0
  46. package/build/cjs/view/hocs/withYfmHtml/index.js +24 -0
  47. package/build/cjs/view/hocs/withYfmHtml/types.d.ts +3 -0
  48. package/build/cjs/view/hocs/withYfmHtml/types.js +2 -0
  49. package/build/cjs/view/hocs/withYfmHtml/useYfmHtmlBlockRuntime.d.ts +1 -0
  50. package/build/cjs/view/hocs/withYfmHtml/useYfmHtmlBlockRuntime.js +34 -0
  51. package/build/cjs/view/hocs/withYfmHtml/utils.d.ts +16 -0
  52. package/build/cjs/view/hocs/withYfmHtml/utils.js +26 -0
  53. package/build/esm/bundle/HorizontalDrag.d.ts +1 -0
  54. package/build/esm/bundle/HorizontalDrag.js +2 -1
  55. package/build/esm/bundle/config/action-names.d.ts +1 -1
  56. package/build/esm/bundle/config/action-names.js +1 -0
  57. package/build/esm/bundle/config/icons.d.ts +1 -1
  58. package/build/esm/bundle/config/icons.js +2 -1
  59. package/build/esm/bundle/config/markup.d.ts +1 -0
  60. package/build/esm/bundle/config/markup.js +10 -1
  61. package/build/esm/bundle/config/wysiwyg.d.ts +1 -0
  62. package/build/esm/bundle/config/wysiwyg.js +11 -0
  63. package/build/esm/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockNodeView/NodeView.d.ts +23 -0
  64. package/build/esm/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockNodeView/NodeView.js +52 -0
  65. package/build/esm/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlock.css +66 -0
  66. package/build/esm/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.d.ts +18 -0
  67. package/build/esm/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockNodeView/YfmHtmlBlockView.js +173 -0
  68. package/build/esm/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockNodeView/index.d.ts +1 -0
  69. package/build/esm/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockNodeView/index.js +1 -0
  70. package/build/esm/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockSpecs/const.d.ts +15 -0
  71. package/build/esm/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockSpecs/const.js +17 -0
  72. package/build/esm/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockSpecs/index.d.ts +10 -0
  73. package/build/esm/extensions/yfm/YfmHtmlBlock/YfmHtmlBlockSpecs/index.js +39 -0
  74. package/build/esm/extensions/yfm/YfmHtmlBlock/actions.d.ts +2 -0
  75. package/build/esm/extensions/yfm/YfmHtmlBlock/actions.js +12 -0
  76. package/build/esm/extensions/yfm/YfmHtmlBlock/const.d.ts +2 -0
  77. package/build/esm/extensions/yfm/YfmHtmlBlock/const.js +2 -0
  78. package/build/esm/extensions/yfm/YfmHtmlBlock/index.d.ts +14 -0
  79. package/build/esm/extensions/yfm/YfmHtmlBlock/index.js +13 -0
  80. package/build/esm/extensions/yfm/index.d.ts +1 -1
  81. package/build/esm/extensions/yfm/index.js +1 -1
  82. package/build/esm/i18n/common/en.json +6 -2
  83. package/build/esm/i18n/common/index.d.ts +7 -3
  84. package/build/esm/i18n/common/ru.json +6 -2
  85. package/build/esm/i18n/menubar/en.json +37 -36
  86. package/build/esm/i18n/menubar/index.d.ts +38 -37
  87. package/build/esm/i18n/menubar/ru.json +37 -36
  88. package/build/esm/icons/index.d.ts +1 -1
  89. package/build/esm/icons/index.js +1 -1
  90. package/build/esm/markup/commands/blocks.d.ts +1 -0
  91. package/build/esm/markup/commands/blocks.js +10 -0
  92. package/build/esm/version.js +1 -1
  93. package/build/esm/view/components/YfmHtml/{YfmHtml.d.ts → YfmStaticView.d.ts} +2 -2
  94. package/build/esm/view/components/YfmHtml/{YfmHtml.js → YfmStaticView.js} +1 -1
  95. package/build/esm/view/components/YfmHtml/index.d.ts +12 -1
  96. package/build/esm/view/components/YfmHtml/index.js +6 -1
  97. package/build/esm/view/hocs/withYfmHtml/index.d.ts +13 -0
  98. package/build/esm/view/hocs/withYfmHtml/index.js +19 -0
  99. package/build/esm/view/hocs/withYfmHtml/types.d.ts +3 -0
  100. package/build/esm/view/hocs/withYfmHtml/types.js +1 -0
  101. package/build/esm/view/hocs/withYfmHtml/useYfmHtmlBlockRuntime.d.ts +1 -0
  102. package/build/esm/view/hocs/withYfmHtml/useYfmHtmlBlockRuntime.js +7 -0
  103. package/build/esm/view/hocs/withYfmHtml/utils.d.ts +16 -0
  104. package/build/esm/view/hocs/withYfmHtml/utils.js +22 -0
  105. package/build/styles.css +66 -0
  106. package/package.json +6 -1
@@ -6,6 +6,7 @@ export declare type HorizontalDragProps = {
6
6
  rightElRef: React.RefObject<HTMLDivElement>;
7
7
  wrapperRef: React.RefObject<HTMLDivElement>;
8
8
  editor: EditorInt;
9
+ onEndMove?: (right: HTMLDivElement | null, left: HTMLDivElement | null) => any;
9
10
  };
10
11
  declare const HorizontalDragWrapper: React.FC<HorizontalDragProps & {
11
12
  isMounted: boolean;
@@ -48,7 +48,7 @@ const useColResize = ({ onStart, onMove, onEnd }) => {
48
48
  },
49
49
  };
50
50
  };
51
- const HorizontalDrag = ({ leftElRef, rightElRef, wrapperRef, editor, }) => {
51
+ const HorizontalDrag = ({ leftElRef, rightElRef, wrapperRef, editor, onEndMove, }) => {
52
52
  var _a, _b, _c, _d;
53
53
  const cm = editor.cm;
54
54
  const [lCardWidth, lSetCardWidth] = (0, react_1.useState)(((_b = (_a = wrapperRef.current) === null || _a === void 0 ? void 0 : _a.clientWidth) !== null && _b !== void 0 ? _b : 0) / 2);
@@ -100,6 +100,7 @@ const HorizontalDrag = ({ leftElRef, rightElRef, wrapperRef, editor, }) => {
100
100
  cm.requestMeasure();
101
101
  (_b = rightElRef.current) === null || _b === void 0 ? void 0 : _b.classList.remove(exports.IN_RESIZE_CLASSNAME);
102
102
  (_c = leftElRef.current) === null || _c === void 0 ? void 0 : _c.classList.remove(exports.IN_RESIZE_CLASSNAME);
103
+ onEndMove === null || onEndMove === void 0 ? void 0 : onEndMove(rightElRef.current, leftElRef.current);
103
104
  }, [calculateWidth, cm, leftElRef, rightElRef, updateWidth, wrapperRef]);
104
105
  const { listeners } = useColResize({ onStart, onMove, onEnd });
105
106
  return (react_1.default.createElement("div", Object.assign({ className: (0, MarkdownEditorView_1.cnEditorComponent)('resizer', { horizontal: true }) }, listeners),
@@ -1,3 +1,3 @@
1
- declare const namesObj: Record<"bold" | "link" | "italic" | "strike" | "underline" | "mark" | "quote" | "mono" | "paragraph" | "anchor" | "table" | "image" | "code_inline" | "code_block" | "file" | "checkbox" | "bulletList" | "orderedList" | "emoji" | "tabs" | "yfm_cut" | "heading1" | "heading2" | "heading3" | "heading4" | "heading5" | "heading6" | "yfm_note" | "undo" | "redo" | "math_inline" | "math_block" | "mermaid" | "liftListItem" | "sinkListItem" | "yfm_block" | "yfm_layout" | "horizontalrule", string>;
1
+ declare const namesObj: Record<"bold" | "link" | "italic" | "strike" | "underline" | "mark" | "quote" | "mono" | "paragraph" | "anchor" | "table" | "image" | "code_inline" | "code_block" | "file" | "checkbox" | "bulletList" | "orderedList" | "emoji" | "tabs" | "yfm_cut" | "heading1" | "heading2" | "heading3" | "heading4" | "heading5" | "heading6" | "yfm_note" | "undo" | "redo" | "math_inline" | "math_block" | "mermaid" | "liftListItem" | "sinkListItem" | "yfm_block" | "yfm_html_block" | "yfm_layout" | "horizontalrule", string>;
2
2
  export declare const ActionName: Readonly<typeof namesObj>;
3
3
  export {};
@@ -27,6 +27,7 @@ const names = [
27
27
  'yfm_cut',
28
28
  'yfm_note',
29
29
  'yfm_block',
30
+ 'yfm_html_block',
30
31
  'yfm_layout',
31
32
  'table',
32
33
  'code_inline',
@@ -1,5 +1,5 @@
1
1
  import { ToolbarIconData } from '../../toolbar/types';
2
- declare type Icon = 'undo' | 'redo' | 'bold' | 'italic' | 'underline' | 'strikethrough' | 'mono' | 'mark' | 'textColor' | 'text' | 'headline' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'bulletList' | 'orderedList' | 'sink' | 'lift' | 'cut' | 'note' | 'code' | 'codeBlock' | 'link' | 'image' | 'table' | 'quote' | 'checklist' | 'horizontalRule' | 'file' | 'functionInline' | 'functionBlock' | 'emoji' | 'tabs' | 'mermaid';
2
+ declare type Icon = 'undo' | 'redo' | 'bold' | 'italic' | 'underline' | 'strikethrough' | 'mono' | 'mark' | 'textColor' | 'text' | 'headline' | 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6' | 'bulletList' | 'orderedList' | 'sink' | 'lift' | 'cut' | 'note' | 'code' | 'codeBlock' | 'link' | 'image' | 'table' | 'quote' | 'checklist' | 'horizontalRule' | 'file' | 'functionInline' | 'functionBlock' | 'emoji' | 'tabs' | 'mermaid' | 'html';
3
3
  declare type Icons = Record<Icon, ToolbarIconData>;
4
4
  export declare const icons: Icons;
5
5
  export {};
@@ -33,6 +33,7 @@ exports.icons = {
33
33
  table: { data: icons_1.TableIcon },
34
34
  quote: { data: icons_1.QuoteIcon },
35
35
  checklist: { data: icons_1.CheckListIcon },
36
+ html: { data: icons_1.HtmlBlockIcon },
36
37
  horizontalRule: { data: icons_1.HRuleIcon },
37
38
  file: { data: icons_1.FileIcon },
38
39
  functionInline: { data: icons_1.FunctionInlineIcon },
@@ -35,6 +35,7 @@ export declare const mCodeListConfig: MToolbarListButtonData;
35
35
  export declare const mMathListConfig: MToolbarListButtonData;
36
36
  export declare const mMathListItem: MToolbarListItemData;
37
37
  export declare const mMermaidButton: MToolbarSingleItemData;
38
+ export declare const mYfmHtmlBlockButton: MToolbarSingleItemData;
38
39
  export declare const mImagePopupData: MToolbarButtonPopupData;
39
40
  export declare const mFilePopupData: MToolbarButtonPopupData;
40
41
  /** prepared markup toolbar config */
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.mHiddenDataByPreset = exports.mToolbarConfigByPreset = exports.mHiddenData = exports.mTabsItemData = exports.mHruleItemData = exports.mToolbarConfig = exports.mFilePopupData = exports.mImagePopupData = exports.mMermaidButton = exports.mMathListItem = exports.mMathListConfig = exports.mCodeListConfig = exports.mCodeblockItemData = exports.mTableButton = exports.mCutButton = exports.mQuoteButton = exports.mNoteButton = exports.mLinkButton = exports.mListMoveListConfig = exports.mCheckboxButton = exports.mListsListConfig = exports.mHeadingListConfig = exports.mBiusGroupConfig = exports.mMarkedItemData = exports.mMonospaceItemData = exports.mStrikethroughItemData = exports.mUnderlineItemData = exports.mItalicItemData = exports.mBoldItemData = exports.mHistoryGroupConfig = void 0;
3
+ exports.mHiddenDataByPreset = exports.mToolbarConfigByPreset = exports.mHiddenData = exports.mTabsItemData = exports.mHruleItemData = exports.mToolbarConfig = exports.mFilePopupData = exports.mImagePopupData = exports.mYfmHtmlBlockButton = exports.mMermaidButton = exports.mMathListItem = exports.mMathListConfig = exports.mCodeListConfig = exports.mCodeblockItemData = exports.mTableButton = exports.mCutButton = exports.mQuoteButton = exports.mNoteButton = exports.mLinkButton = exports.mListMoveListConfig = exports.mCheckboxButton = exports.mListsListConfig = exports.mHeadingListConfig = exports.mBiusGroupConfig = exports.mMarkedItemData = exports.mMonospaceItemData = exports.mStrikethroughItemData = exports.mUnderlineItemData = exports.mItalicItemData = exports.mBoldItemData = exports.mHistoryGroupConfig = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const react_1 = tslib_1.__importDefault(require("react"));
6
6
  const menubar_1 = require("../../i18n/menubar");
@@ -360,6 +360,15 @@ exports.mMermaidButton = {
360
360
  isActive: isActiveFn,
361
361
  isEnable: isEnableFn,
362
362
  };
363
+ exports.mYfmHtmlBlockButton = {
364
+ id: action_names_1.ActionName.yfm_html_block,
365
+ type: types_1.ToolbarDataType.SingleButton,
366
+ title: menubar_1.i18n.bind(null, 'html'),
367
+ icon: icons_1.icons.html,
368
+ exec: (e) => (0, commands_1.insertYfmHtmlBlock)(e.cm),
369
+ isActive: isActiveFn,
370
+ isEnable: isEnableFn,
371
+ };
363
372
  exports.mImagePopupData = {
364
373
  id: 'image',
365
374
  type: types_1.ToolbarDataType.ButtonPopup,
@@ -44,6 +44,7 @@ export declare const wTabsItemData: WToolbarSingleItemData;
44
44
  export declare const wMathBlockItemData: WToolbarSingleItemData;
45
45
  export declare const wMathListConfig: WToolbarListButtonData;
46
46
  export declare const wMathListItem: WToolbarListItemData;
47
+ export declare const wYfmHtmlBlockItemData: WToolbarSingleItemData;
47
48
  export declare const wCommandMenuConfig: WToolbarItemData[];
48
49
  export declare const wHiddenData: WToolbarItemData[];
49
50
  /** prepared wysiwyg toolbar config */
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.wSelectionMenuConfigByPreset = exports.wHiddenDataByPreset = exports.wCommandMenuConfigByPreset = exports.wToolbarConfigByPreset = exports.wMermaidItemData = exports.wSelectionMenuConfig = exports.wToolbarConfig = exports.wHiddenData = exports.wCommandMenuConfig = exports.wMathListItem = exports.wMathListConfig = exports.wMathBlockItemData = exports.wTabsItemData = exports.wMathInlineItemData = exports.wFileItemData = exports.wEmojiItemData = exports.wHruleItemData = exports.wImageItemData = exports.wCodeListConfig = exports.wCodeBlockItemData = exports.wCodeItemData = exports.wTableItemData = exports.wNoteItemData = exports.wListMoveListConfig = exports.wCutItemData = exports.wQuoteItemData = exports.wLinkItemData = exports.wCheckboxItemData = exports.wListsListConfig = exports.wHeadingListConfig = exports.wTextItemData = exports.wBiusGroupConfig = exports.wMarkedItemData = exports.wMonospaceItemData = exports.wStrikethroughItemData = exports.wUnderlineItemData = exports.wItalicItemData = exports.wBoldItemData = exports.wHistoryGroupConfig = void 0;
3
+ exports.wSelectionMenuConfigByPreset = exports.wHiddenDataByPreset = exports.wCommandMenuConfigByPreset = exports.wToolbarConfigByPreset = exports.wMermaidItemData = exports.wSelectionMenuConfig = exports.wToolbarConfig = exports.wHiddenData = exports.wCommandMenuConfig = exports.wYfmHtmlBlockItemData = exports.wMathListItem = exports.wMathListConfig = exports.wMathBlockItemData = exports.wTabsItemData = exports.wMathInlineItemData = exports.wFileItemData = exports.wEmojiItemData = exports.wHruleItemData = exports.wImageItemData = exports.wCodeListConfig = exports.wCodeBlockItemData = exports.wCodeItemData = exports.wTableItemData = exports.wNoteItemData = exports.wListMoveListConfig = exports.wCutItemData = exports.wQuoteItemData = exports.wLinkItemData = exports.wCheckboxItemData = exports.wListsListConfig = exports.wHeadingListConfig = exports.wTextItemData = exports.wBiusGroupConfig = exports.wMarkedItemData = exports.wMonospaceItemData = exports.wStrikethroughItemData = exports.wUnderlineItemData = exports.wItalicItemData = exports.wBoldItemData = exports.wHistoryGroupConfig = void 0;
4
4
  const extensions_1 = require("../../extensions");
5
5
  const hints_1 = require("../../i18n/hints");
6
6
  const menubar_1 = require("../../i18n/menubar");
@@ -394,6 +394,15 @@ exports.wMathListConfig = {
394
394
  data: [exports.wMathInlineItemData, exports.wMathBlockItemData],
395
395
  };
396
396
  exports.wMathListItem = Object.assign({ id: 'math', type: types_1.ToolbarDataType.ListButton }, exports.wMathListConfig);
397
+ exports.wYfmHtmlBlockItemData = {
398
+ id: action_names_1.ActionName.yfm_html_block,
399
+ type: types_1.ToolbarDataType.SingleButton,
400
+ title: menubar_1.i18n.bind(null, 'html'),
401
+ icon: icons_1.icons.html,
402
+ exec: (e) => e.actions.createYfmHtmlBlock.run(),
403
+ isActive: (e) => e.actions.createYfmHtmlBlock.isActive(),
404
+ isEnable: (e) => e.actions.createYfmHtmlBlock.isEnable(),
405
+ };
397
406
  exports.wCommandMenuConfig = [
398
407
  ...exports.wHeadingListConfig.data,
399
408
  ...exports.wListsListConfig.data,
@@ -411,6 +420,7 @@ exports.wCommandMenuConfig = [
411
420
  // wMathInlineItemData,
412
421
  // wMathBlockItemData,
413
422
  exports.wTabsItemData,
423
+ exports.wYfmHtmlBlockItemData,
414
424
  ];
415
425
  exports.wHiddenData = exports.wCommandMenuConfig;
416
426
  /** prepared wysiwyg toolbar config */
@@ -546,6 +556,7 @@ exports.wCommandMenuConfigByPreset = {
546
556
  exports.wHruleItemData,
547
557
  exports.wFileItemData,
548
558
  exports.wTabsItemData,
559
+ exports.wYfmHtmlBlockItemData,
549
560
  ],
550
561
  full: exports.wCommandMenuConfig.slice(),
551
562
  };
@@ -0,0 +1,23 @@
1
+ import { Node } from 'prosemirror-model';
2
+ import { EditorView, NodeView } from 'prosemirror-view';
3
+ import { YfmHtmlBlockOptions } from '../index';
4
+ export declare class WYfmHtmlBlockNodeView implements NodeView {
5
+ readonly dom: HTMLElement;
6
+ private node;
7
+ private readonly view;
8
+ private readonly getPos;
9
+ private readonly options;
10
+ private readonly renderItem;
11
+ constructor({ node, view, getPos, options, }: {
12
+ node: Node;
13
+ view: EditorView;
14
+ getPos: () => number | undefined;
15
+ options: YfmHtmlBlockOptions;
16
+ });
17
+ update(node: Node): boolean;
18
+ destroy(): void;
19
+ ignoreMutation(): boolean;
20
+ stopEvent(e: Event): boolean;
21
+ private onChange;
22
+ private renderYfmHtmlBlock;
23
+ }
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WYfmHtmlBlockNodeView = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importDefault(require("react"));
6
+ const react_dom_1 = require("react-dom");
7
+ const behavior_1 = require("../../../behavior");
8
+ const const_1 = require("../YfmHtmlBlockSpecs/const");
9
+ const YfmHtmlBlockView_1 = require("./YfmHtmlBlockView");
10
+ class WYfmHtmlBlockNodeView {
11
+ constructor({ node, view, getPos, options, }) {
12
+ this.options = {};
13
+ this.node = node;
14
+ this.dom = document.createElement('div');
15
+ this.dom.classList.add('yfm-html-block-container');
16
+ this.dom.contentEditable = 'false';
17
+ this.view = view;
18
+ this.getPos = getPos;
19
+ this.options = options;
20
+ this.renderItem = (0, behavior_1.getReactRendererFromState)(view.state).createItem('yfmHtmlBlock-view', this.renderYfmHtmlBlock.bind(this));
21
+ }
22
+ update(node) {
23
+ if (node.type !== this.node.type)
24
+ return false;
25
+ if (node.attrs[const_1.YfmHtmlBlockConsts.NodeAttrs.newCreated] !==
26
+ this.node.attrs[const_1.YfmHtmlBlockConsts.NodeAttrs.newCreated])
27
+ return false;
28
+ this.node = node;
29
+ this.renderItem.rerender();
30
+ return true;
31
+ }
32
+ destroy() {
33
+ this.renderItem.remove();
34
+ }
35
+ ignoreMutation() {
36
+ return true;
37
+ }
38
+ stopEvent(e) {
39
+ const target = e.target;
40
+ if (typeof target.className === 'string' &&
41
+ target.className.includes('prosemirror-stop-event')) {
42
+ return true;
43
+ }
44
+ return false;
45
+ }
46
+ onChange(attrs) {
47
+ const pos = this.getPos();
48
+ if (pos === undefined)
49
+ return;
50
+ const tr = this.view.state.tr.setNodeMarkup(pos, undefined, Object.assign(Object.assign({}, this.node.attrs), attrs), []);
51
+ this.view.dispatch(tr);
52
+ }
53
+ renderYfmHtmlBlock() {
54
+ return (0, react_dom_1.createPortal)(react_1.default.createElement(YfmHtmlBlockView_1.YfmHtmlBlockView, { useConfig: this.options.useConfig, view: this.view, onChange: this.onChange.bind(this), node: this.node, getPos: this.getPos }), this.dom);
55
+ }
56
+ }
57
+ exports.WYfmHtmlBlockNodeView = WYfmHtmlBlockNodeView;
@@ -0,0 +1,66 @@
1
+ .g-md-yfm-html-block {
2
+ position: relative;
3
+ display: flex;
4
+ justify-content: space-between;
5
+ margin-bottom: 15px;
6
+ padding-top: 28px;
7
+ border: 1px solid var(--g-color-line-generic);
8
+ border-radius: var(--g-border-radius-m);
9
+ }
10
+ .g-md-yfm-html-block_editing {
11
+ display: flex;
12
+ padding-top: 0;
13
+ border: 0;
14
+ }
15
+ .g-md-yfm-html-block__label {
16
+ position: absolute;
17
+ top: 8px;
18
+ left: 8px;
19
+ }
20
+ .g-md-yfm-html-block__menu {
21
+ position: absolute;
22
+ top: 0;
23
+ right: 0;
24
+ }
25
+ .g-md-yfm-html-block__preview {
26
+ flex: 1;
27
+ }
28
+ .g-md-yfm-html-block__error {
29
+ flex: 1;
30
+ font-family: var(--g-font-family-monospace);
31
+ color: var(--g-color-text-danger);
32
+ }
33
+ .g-md-yfm-html-block__editor {
34
+ flex: 1;
35
+ width: 50%;
36
+ white-space: nowrap;
37
+ caret-color: auto;
38
+ }
39
+ .g-md-yfm-html-block__editor .g-text-area__content {
40
+ font-size: 1em;
41
+ color: var(--yfm-color-hljs-subst);
42
+ border: 0;
43
+ border-radius: var(--g-border-radius-m);
44
+ background: var(--yfm-color-hljs-background);
45
+ font-feature-settings: normal;
46
+ }
47
+ .g-md-yfm-html-block__editor .g-text-area__control.g-md-YfmHtmlBlockHelper {
48
+ font-family: var(--yfm-font-family-monospace);
49
+ }
50
+ .g-md-yfm-html-block__editor-popover {
51
+ z-index: 1;
52
+ float: right;
53
+ }
54
+ .g-md-yfm-html-block__controls {
55
+ display: flex;
56
+ justify-content: end;
57
+ margin-top: 5px;
58
+ }
59
+ .g-md-yfm-html-block__content {
60
+ flex-grow: 1;
61
+ }
62
+
63
+ .g-root_theme_dark-hc .g-md-yfm-html-block_editing .g-text-area__content,
64
+ .g-root_theme_dark .g-md-yfm-html-block_editing .g-text-area__content {
65
+ color: var(--g-color-text-primary);
66
+ }
@@ -0,0 +1,17 @@
1
+ import React from 'react';
2
+ import type { IHTMLIFrameElementConfig } from '@diplodoc/html-extension/runtime';
3
+ import { Node } from 'prosemirror-model';
4
+ import { EditorView } from 'prosemirror-view';
5
+ import { YfmHtmlBlockConsts } from '../YfmHtmlBlockSpecs/const';
6
+ export declare const cnYfmHtmlBlock: import("@bem-react/classname").ClassNameFormatter;
7
+ export declare const cnHelper: import("@bem-react/classname").ClassNameFormatter;
8
+ export declare function generateID(): string;
9
+ export declare const YfmHtmlBlockView: React.FC<{
10
+ view: EditorView;
11
+ onChange: (attrs: {
12
+ [YfmHtmlBlockConsts.NodeAttrs.srcdoc]: string;
13
+ }) => void;
14
+ node: Node;
15
+ getPos: () => number | undefined;
16
+ useConfig?: () => IHTMLIFrameElementConfig | undefined;
17
+ }>;
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.YfmHtmlBlockView = exports.generateID = exports.cnHelper = exports.cnYfmHtmlBlock = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const react_1 = tslib_1.__importStar(require("react"));
6
+ const icons_1 = require("@gravity-ui/icons");
7
+ const uikit_1 = require("@gravity-ui/uikit");
8
+ const debounce_1 = tslib_1.__importDefault(require("lodash/debounce"));
9
+ const classname_1 = require("../../../../classname");
10
+ const TextInput_1 = require("../../../../forms/TextInput");
11
+ const common_1 = require("../../../../i18n/common");
12
+ const hooks_1 = require("../../../../react-utils/hooks");
13
+ const remove_node_1 = require("../../../../utils/remove-node");
14
+ const const_1 = require("../YfmHtmlBlockSpecs/const");
15
+ exports.cnYfmHtmlBlock = (0, classname_1.cn)('yfm-html-block');
16
+ exports.cnHelper = (0, classname_1.cn)('yfm-html-block-helper');
17
+ const b = exports.cnYfmHtmlBlock;
18
+ function generateID() {
19
+ return Math.random().toString(36).substr(2, 8);
20
+ }
21
+ exports.generateID = generateID;
22
+ const DEFAULT_PADDING = 20;
23
+ const DEFAULT_DELAY = 100;
24
+ const YfmHtmlBlockPreview = ({ html, onСlick, config }) => {
25
+ var _a, _b, _c, _d, _e, _f;
26
+ const ref = (0, react_1.useRef)(null);
27
+ const styles = (0, react_1.useRef)({});
28
+ const classNames = (0, react_1.useRef)([]);
29
+ const resizeConfig = (0, react_1.useRef)({});
30
+ const [height, setHeight] = (0, react_1.useState)('100%');
31
+ (0, react_1.useEffect)(() => {
32
+ var _a, _b;
33
+ resizeConfig.current = {
34
+ padding: (_a = config === null || config === void 0 ? void 0 : config.resizePadding) !== null && _a !== void 0 ? _a : DEFAULT_PADDING,
35
+ delay: (_b = config === null || config === void 0 ? void 0 : config.resizeDelay) !== null && _b !== void 0 ? _b : DEFAULT_DELAY,
36
+ };
37
+ setStyles(config === null || config === void 0 ? void 0 : config.styles);
38
+ setClassNames(config === null || config === void 0 ? void 0 : config.classNames);
39
+ }, [config, (_c = (_b = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.contentWindow) === null || _b === void 0 ? void 0 : _b.document) === null || _c === void 0 ? void 0 : _c.body]);
40
+ const handleLoadIFrame = () => {
41
+ var _a;
42
+ const contentWindow = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.contentWindow;
43
+ handleResizeIFrame();
44
+ if (contentWindow) {
45
+ const frameDocument = contentWindow.document;
46
+ frameDocument.addEventListener('dblclick', () => {
47
+ onСlick();
48
+ });
49
+ }
50
+ };
51
+ const handleResizeIFrame = () => {
52
+ var _a, _b;
53
+ if (ref.current) {
54
+ const contentWindow = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.contentWindow;
55
+ if (contentWindow) {
56
+ const body = contentWindow.document.body;
57
+ if (body) {
58
+ const height = body.scrollHeight +
59
+ (((_b = resizeConfig.current) === null || _b === void 0 ? void 0 : _b.padding) || DEFAULT_PADDING) +
60
+ 'px';
61
+ setHeight(height);
62
+ }
63
+ }
64
+ }
65
+ };
66
+ const setClassNames = (newClassNames) => {
67
+ var _a, _b;
68
+ const body = (_b = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.contentWindow) === null || _b === void 0 ? void 0 : _b.document.body;
69
+ if (body && newClassNames) {
70
+ const previousClassNames = classNames.current;
71
+ // remove all classes that were in previousClassNames but are not in classNames
72
+ previousClassNames.forEach((className) => {
73
+ if (!newClassNames.includes(className)) {
74
+ body.classList.remove(className);
75
+ }
76
+ });
77
+ // add classes that are in classNames
78
+ newClassNames.forEach((className) => {
79
+ if (!body.classList.contains(className)) {
80
+ body.classList.add(className);
81
+ }
82
+ });
83
+ classNames.current = newClassNames;
84
+ }
85
+ };
86
+ const setStyles = (newStyles) => {
87
+ var _a, _b;
88
+ const body = (_b = (_a = ref.current) === null || _a === void 0 ? void 0 : _a.contentWindow) === null || _b === void 0 ? void 0 : _b.document.body;
89
+ if (body && newStyles) {
90
+ const previousStyles = styles.current;
91
+ // remove all styles that are in previousStyles but not in styles
92
+ Object.keys(previousStyles).forEach((property) => {
93
+ if (!Object.prototype.hasOwnProperty.call(newStyles, property)) {
94
+ body.style.removeProperty(property);
95
+ }
96
+ });
97
+ // sdd or update styles that are in styles
98
+ Object.keys(newStyles).forEach((property) => {
99
+ body.style.setProperty(property, newStyles[property]);
100
+ });
101
+ // update current styles to the new styles
102
+ styles.current = newStyles;
103
+ }
104
+ };
105
+ (0, react_1.useEffect)(() => {
106
+ var _a;
107
+ (_a = ref.current) === null || _a === void 0 ? void 0 : _a.addEventListener('load', handleLoadIFrame);
108
+ return () => {
109
+ var _a;
110
+ (_a = ref.current) === null || _a === void 0 ? void 0 : _a.removeEventListener('load', handleLoadIFrame);
111
+ };
112
+ }, [html]);
113
+ (0, react_1.useEffect)(() => {
114
+ var _a, _b;
115
+ if (ref.current) {
116
+ const resizeObserver = new window.ResizeObserver((0, debounce_1.default)(handleResizeIFrame, (_b = (_a = resizeConfig.current) === null || _a === void 0 ? void 0 : _a.delay) !== null && _b !== void 0 ? _b : DEFAULT_DELAY));
117
+ resizeObserver.observe(ref.current);
118
+ }
119
+ }, [(_f = (_e = (_d = ref.current) === null || _d === void 0 ? void 0 : _d.contentWindow) === null || _e === void 0 ? void 0 : _e.document) === null || _f === void 0 ? void 0 : _f.body]);
120
+ return (react_1.default.createElement("iframe", { style: {
121
+ height,
122
+ }, ref: ref, title: generateID(), frameBorder: 0, className: b('content'), srcDoc: html }));
123
+ };
124
+ const CodeEditMode = ({ initialText, onSave, onCancel }) => {
125
+ const [text, setText] = (0, react_1.useState)(initialText || '\n');
126
+ return (react_1.default.createElement("div", { className: b({ editing: true }) },
127
+ react_1.default.createElement("div", { className: b('editor') },
128
+ react_1.default.createElement(TextInput_1.TextAreaFixed, { controlProps: {
129
+ className: (0, exports.cnHelper)({ 'prosemirror-stop-event': true }),
130
+ }, value: text, onUpdate: (v) => {
131
+ setText(v);
132
+ }, autoFocus: true }),
133
+ react_1.default.createElement("div", { className: b('controls') },
134
+ react_1.default.createElement("div", null,
135
+ react_1.default.createElement(uikit_1.Button, { onClick: onCancel, view: 'flat' },
136
+ react_1.default.createElement("span", { className: (0, exports.cnHelper)({ 'prosemirror-stop-event': true }) }, (0, common_1.i18n)('cancel'))),
137
+ react_1.default.createElement(uikit_1.Button, { onClick: () => onSave(text), view: 'action' },
138
+ react_1.default.createElement("span", { className: (0, exports.cnHelper)({ 'prosemirror-stop-event': true }) }, (0, common_1.i18n)('save'))))))));
139
+ };
140
+ const YfmHtmlBlockView = ({ onChange, node, getPos, view, useConfig }) => {
141
+ const [editing, setEditing, unsetEditing, toggleEditing] = (0, hooks_1.useBooleanState)(Boolean(node.attrs[const_1.YfmHtmlBlockConsts.NodeAttrs.newCreated]));
142
+ const config = useConfig === null || useConfig === void 0 ? void 0 : useConfig();
143
+ const [menuOpen, , , toggleMenuOpen] = (0, hooks_1.useBooleanState)(false);
144
+ const buttonRef = (0, react_1.useRef)(null);
145
+ const handleClick = () => {
146
+ setEditing();
147
+ };
148
+ if (editing) {
149
+ return (react_1.default.createElement(CodeEditMode, { initialText: node.attrs[const_1.YfmHtmlBlockConsts.NodeAttrs.srcdoc], onCancel: unsetEditing, onSave: (v) => {
150
+ onChange({ [const_1.YfmHtmlBlockConsts.NodeAttrs.srcdoc]: v });
151
+ unsetEditing();
152
+ } }));
153
+ }
154
+ return (react_1.default.createElement("div", { className: b(), onDoubleClick: setEditing },
155
+ react_1.default.createElement(uikit_1.Label, { className: b('label'), icon: react_1.default.createElement(uikit_1.Icon, { size: 16, data: icons_1.Eye }) }, (0, common_1.i18n)('preview')),
156
+ react_1.default.createElement(YfmHtmlBlockPreview, { html: node.attrs[const_1.YfmHtmlBlockConsts.NodeAttrs.srcdoc], "on\u0421lick": handleClick, config: config }),
157
+ react_1.default.createElement("div", { className: b('menu') },
158
+ react_1.default.createElement(uikit_1.Button, { onClick: toggleMenuOpen, ref: buttonRef, size: 's', className: (0, exports.cnHelper)({ 'prosemirror-stop-event': true }) },
159
+ react_1.default.createElement(uikit_1.Icon, { data: icons_1.Ellipsis, className: (0, exports.cnHelper)({ 'prosemirror-stop-event': true }) })),
160
+ react_1.default.createElement(uikit_1.Popup, { anchorRef: buttonRef, open: menuOpen, onClose: toggleMenuOpen, placement: ['bottom-end'] },
161
+ react_1.default.createElement(uikit_1.Menu, null,
162
+ react_1.default.createElement(uikit_1.Menu.Item, { onClick: () => {
163
+ toggleEditing();
164
+ toggleMenuOpen();
165
+ } }, (0, common_1.i18n)('edit')),
166
+ react_1.default.createElement(uikit_1.Menu.Item, { onClick: () => {
167
+ const pos = getPos();
168
+ if (pos === undefined)
169
+ return;
170
+ (0, remove_node_1.removeNode)({
171
+ node,
172
+ pos,
173
+ tr: view.state.tr,
174
+ dispatch: view.dispatch,
175
+ });
176
+ } }, (0, common_1.i18n)('remove')))))));
177
+ };
178
+ exports.YfmHtmlBlockView = YfmHtmlBlockView;
@@ -0,0 +1 @@
1
+ export * from './NodeView';
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./NodeView"), exports);
@@ -0,0 +1,15 @@
1
+ export declare enum YfmHtmlBlockAttrs {
2
+ class = "class",
3
+ frameborder = "frameborder",
4
+ newCreated = "newCreated",
5
+ srcdoc = "srcdoc",
6
+ style = "style"
7
+ }
8
+ export declare const yfmHtmlBlockNodeName = "yfm_html_block";
9
+ export declare const yfmHtmlBlockNodeType: (schema: import("prosemirror-model").Schema<any, any>) => import("prosemirror-model").NodeType;
10
+ export declare const YfmHtmlBlockAction = "createYfmHtmlBlock";
11
+ export declare const YfmHtmlBlockConsts: {
12
+ readonly NodeName: "yfm_html_block";
13
+ readonly NodeAttrs: typeof YfmHtmlBlockAttrs;
14
+ readonly nodeType: (schema: import("prosemirror-model").Schema<any, any>) => import("prosemirror-model").NodeType;
15
+ };
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.YfmHtmlBlockConsts = exports.YfmHtmlBlockAction = exports.yfmHtmlBlockNodeType = exports.yfmHtmlBlockNodeName = exports.YfmHtmlBlockAttrs = void 0;
4
+ const schema_1 = require("../../../../utils/schema");
5
+ var YfmHtmlBlockAttrs;
6
+ (function (YfmHtmlBlockAttrs) {
7
+ YfmHtmlBlockAttrs["class"] = "class";
8
+ YfmHtmlBlockAttrs["frameborder"] = "frameborder";
9
+ YfmHtmlBlockAttrs["newCreated"] = "newCreated";
10
+ YfmHtmlBlockAttrs["srcdoc"] = "srcdoc";
11
+ YfmHtmlBlockAttrs["style"] = "style";
12
+ })(YfmHtmlBlockAttrs = exports.YfmHtmlBlockAttrs || (exports.YfmHtmlBlockAttrs = {}));
13
+ exports.yfmHtmlBlockNodeName = 'yfm_html_block';
14
+ exports.yfmHtmlBlockNodeType = (0, schema_1.nodeTypeFactory)(exports.yfmHtmlBlockNodeName);
15
+ exports.YfmHtmlBlockAction = 'createYfmHtmlBlock';
16
+ exports.YfmHtmlBlockConsts = {
17
+ NodeName: exports.yfmHtmlBlockNodeName,
18
+ NodeAttrs: YfmHtmlBlockAttrs,
19
+ nodeType: exports.yfmHtmlBlockNodeType,
20
+ };
@@ -0,0 +1,10 @@
1
+ import type { ExtensionNodeSpec } from '../../../../core';
2
+ export { yfmHtmlBlockNodeName } from './const';
3
+ export declare type YfmHtmlBlockSpecsOptions = {
4
+ nodeView?: ExtensionNodeSpec['view'];
5
+ };
6
+ export declare const YfmHtmlBlockSpecs: import("../../../../core").ExtensionWithOptions<YfmHtmlBlockSpecsOptions> & {
7
+ readonly NodeName: "yfm_html_block";
8
+ readonly NodeAttrs: typeof import("./const").YfmHtmlBlockAttrs;
9
+ readonly nodeType: (schema: import("prosemirror-model").Schema<any, any>) => import("prosemirror-model").NodeType;
10
+ };
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.YfmHtmlBlockSpecs = exports.yfmHtmlBlockNodeName = void 0;
4
+ // eslint-disable-next-line import/no-extraneous-dependencies
5
+ const html_extension_1 = require("@diplodoc/html-extension");
6
+ const const_1 = require("./const");
7
+ var const_2 = require("./const");
8
+ Object.defineProperty(exports, "yfmHtmlBlockNodeName", { enumerable: true, get: function () { return const_2.yfmHtmlBlockNodeName; } });
9
+ const YfmHtmlBlockSpecsExtension = (builder, { nodeView }) => {
10
+ builder
11
+ .configureMd((md) => md.use((0, html_extension_1.transform)({ bundle: false }), {}))
12
+ .addNode(const_1.YfmHtmlBlockConsts.NodeName, () => ({
13
+ fromMd: {
14
+ tokenSpec: {
15
+ name: const_1.YfmHtmlBlockConsts.NodeName,
16
+ type: 'node',
17
+ noCloseToken: true,
18
+ getAttrs: (token) => { var _a; return Object.fromEntries((_a = token.attrs) !== null && _a !== void 0 ? _a : []); },
19
+ },
20
+ },
21
+ spec: {
22
+ group: 'block',
23
+ attrs: {
24
+ [const_1.YfmHtmlBlockConsts.NodeAttrs.class]: { default: 'yfm-html' },
25
+ [const_1.YfmHtmlBlockConsts.NodeAttrs.frameborder]: { default: '' },
26
+ [const_1.YfmHtmlBlockConsts.NodeAttrs.srcdoc]: { default: '' },
27
+ [const_1.YfmHtmlBlockConsts.NodeAttrs.style]: { default: null },
28
+ [const_1.YfmHtmlBlockConsts.NodeAttrs.newCreated]: { default: null },
29
+ },
30
+ toDOM: (node) => ['iframe', node.attrs],
31
+ },
32
+ toMd: (state, node) => {
33
+ state.write('::: html');
34
+ state.write('\n');
35
+ state.write(node.attrs[const_1.YfmHtmlBlockConsts.NodeAttrs.srcdoc]);
36
+ state.ensureNewLine();
37
+ state.write(':::');
38
+ state.closeBlock(node);
39
+ },
40
+ view: nodeView,
41
+ }));
42
+ };
43
+ exports.YfmHtmlBlockSpecs = Object.assign(YfmHtmlBlockSpecsExtension, const_1.YfmHtmlBlockConsts);
@@ -0,0 +1,2 @@
1
+ import { ActionSpec } from '../../../core';
2
+ export declare const addYfmHtmlBlock: ActionSpec;
@@ -0,0 +1,15 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addYfmHtmlBlock = void 0;
4
+ const const_1 = require("./YfmHtmlBlockSpecs/const");
5
+ exports.addYfmHtmlBlock = {
6
+ isEnable(state) {
7
+ return state.selection.empty;
8
+ },
9
+ run(state, dispatch, _view) {
10
+ dispatch(state.tr.insert(state.selection.from, (0, const_1.yfmHtmlBlockNodeType)(state.schema).create({
11
+ [const_1.YfmHtmlBlockConsts.NodeAttrs.srcdoc]: '\n',
12
+ [const_1.YfmHtmlBlockConsts.NodeAttrs.newCreated]: true,
13
+ })));
14
+ },
15
+ };
@@ -0,0 +1,2 @@
1
+ export * from './YfmHtmlBlockSpecs/const';
2
+ export declare const YfmHtmlBlockAction = "createYfmHtmlBlock";
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.YfmHtmlBlockAction = void 0;
4
+ const tslib_1 = require("tslib");
5
+ tslib_1.__exportStar(require("./YfmHtmlBlockSpecs/const"), exports);
6
+ exports.YfmHtmlBlockAction = 'createYfmHtmlBlock';
@@ -0,0 +1,14 @@
1
+ import type { IHTMLIFrameElementConfig } from '@diplodoc/html-extension/runtime';
2
+ import { Action, ExtensionAuto } from '../../../core';
3
+ import { YfmHtmlBlockAction } from './YfmHtmlBlockSpecs/const';
4
+ export declare type YfmHtmlBlockOptions = {
5
+ useConfig?: () => IHTMLIFrameElementConfig | undefined;
6
+ };
7
+ export declare const YfmHtmlBlock: ExtensionAuto<YfmHtmlBlockOptions>;
8
+ declare global {
9
+ namespace WysiwygEditor {
10
+ interface Actions {
11
+ [YfmHtmlBlockAction]: Action;
12
+ }
13
+ }
14
+ }