@haklex/rich-editor 0.2.0 → 0.3.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 (40) hide show
  1. package/dist/{SubmitShortcutPlugin-D-7XrQfm.js → SubmitShortcutPlugin-DhyVFzoj.js} +3 -3
  2. package/dist/components/decorators/PollEditDecorator.d.ts +13 -0
  3. package/dist/components/decorators/PollEditDecorator.d.ts.map +1 -0
  4. package/dist/components/renderers/PollRenderer.d.ts +3 -0
  5. package/dist/components/renderers/PollRenderer.d.ts.map +1 -0
  6. package/dist/{config-CNiK9v2M.js → config-B5BuLljq.js} +390 -3
  7. package/dist/config-edit.d.ts.map +1 -1
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/context/PollDataContext.d.ts +11 -0
  10. package/dist/context/PollDataContext.d.ts.map +1 -0
  11. package/dist/{PresentDialogContext-DKNicgia.js → extractPolls-DO31LNrp.js} +43 -1
  12. package/dist/index.d.ts +5 -1
  13. package/dist/index.d.ts.map +1 -1
  14. package/dist/index.mjs +5 -5
  15. package/dist/{node-registry-DOYK_WIp.js → node-registry-Dz5OTkh4.js} +281 -4
  16. package/dist/nodes/PollEditNode.d.ts +14 -0
  17. package/dist/nodes/PollEditNode.d.ts.map +1 -0
  18. package/dist/nodes/PollNode.d.ts +52 -0
  19. package/dist/nodes/PollNode.d.ts.map +1 -0
  20. package/dist/nodes-entry.d.ts +3 -0
  21. package/dist/nodes-entry.d.ts.map +1 -1
  22. package/dist/nodes-entry.mjs +3 -3
  23. package/dist/plugins-entry.mjs +1 -1
  24. package/dist/rich-editor.css +1 -1
  25. package/dist/static-entry.d.ts +5 -0
  26. package/dist/static-entry.d.ts.map +1 -1
  27. package/dist/static-entry.mjs +3 -3
  28. package/dist/styles/index.d.ts +2 -0
  29. package/dist/styles/index.d.ts.map +1 -1
  30. package/dist/styles/poll-edit.css.d.ts +35 -0
  31. package/dist/styles/poll-edit.css.d.ts.map +1 -0
  32. package/dist/styles/poll.css.d.ts +43 -0
  33. package/dist/styles/poll.css.d.ts.map +1 -0
  34. package/dist/types/poll.d.ts +36 -0
  35. package/dist/types/poll.d.ts.map +1 -0
  36. package/dist/types/renderer-config.d.ts +3 -0
  37. package/dist/types/renderer-config.d.ts.map +1 -1
  38. package/dist/utils/extractPolls.d.ts +4 -0
  39. package/dist/utils/extractPolls.d.ts.map +1 -0
  40. package/package.json +4 -4
@@ -1,7 +1,7 @@
1
1
  import { C as ImageNode, E as FootnoteNode, _ as KaTeXInlineNode, b as KaTeXBlockNode, c as SpoilerNode, d as MermaidNode, i as TagNode, j as _defineProperty, m as MentionNode, t as editorTheme } from "./theme-B5B2EOWM.js";
2
2
  import { l as RendererWrapper, s as useFootnoteDefinitions } from "./KaTeXRenderer-CQQT3BMw.js";
3
3
  import { l as semanticClassNames, r as clsx, u as sharedStyles } from "./katex.css-CIOEOXyd.js";
4
- import { C as $isCodeBlockNode, M as normalizeBannerType, N as BannerRenderer, O as $isBannerNode, S as CommentNode, T as CodeBlockRenderer, f as $isGridContainerNode, g as FootnoteSectionNode, i as VideoNode, j as BannerNode, n as builtinNodes, p as GridContainerNode, s as RubyNode, u as LinkCardNode, v as DetailsNode, w as CodeBlockNode } from "./config-CNiK9v2M.js";
4
+ import { C as GridContainerNode, E as FootnoteSectionNode, F as CodeBlockRenderer, H as normalizeBannerType, M as CommentNode, N as $isCodeBlockNode, O as DetailsNode, P as CodeBlockNode, R as $isBannerNode, S as $isGridContainerNode, U as BannerRenderer, V as BannerNode, b as LinkCardNode, i as VideoNode, l as $isPollNode, n as builtinNodes, s as RubyNode, u as PollNode } from "./config-B5BuLljq.js";
5
5
  import { n as gridStyles, t as gridClassNames } from "./grid.css-CJCkLTZc.js";
6
6
  import { n as AlertQuoteEditNode, r as NESTED_EDITOR_NODES } from "./AlertQuoteEditNode-C55sxsR3.js";
7
7
  import { LinkPlugin } from "@lexical/react/LexicalLinkPlugin";
@@ -10,7 +10,8 @@ import { useLexicalComposerContext } from "@lexical/react/LexicalComposerContext
10
10
  import { createElement, useCallback, useEffect, useState } from "react";
11
11
  import { $createNodeSelection, $createParagraphNode, $getNodeByKey, $getRoot, $getSelection, $insertNodes, $isDecoratorNode, $isElementNode, $isNodeSelection, $nodesOfType, $setSelection, createEditor } from "lexical";
12
12
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
13
- import { Flag, LayoutGrid, Minus, Plus } from "lucide-react";
13
+ import { Flag, LayoutGrid, Minus, Plus, Vote } from "lucide-react";
14
+ import { customAlphabet } from "nanoid";
14
15
  import { ContentEditable } from "@lexical/react/LexicalContentEditable";
15
16
  import { LexicalErrorBoundary } from "@lexical/react/LexicalErrorBoundary";
16
17
  import { LexicalNestedComposer } from "@lexical/react/LexicalNestedComposer";
@@ -634,6 +635,281 @@ function $isGridEditNode(node) {
634
635
  return node instanceof GridEditNode;
635
636
  }
636
637
  //#endregion
638
+ //#region src/styles/poll-edit.css.ts
639
+ var pollEditClasses = {
640
+ container: "_15l32q50",
641
+ meta: "_15l32q51",
642
+ question: "_15l32q52",
643
+ optionList: "_15l32q53",
644
+ optionRow: "_15l32q54",
645
+ reorderColumn: "_15l32q55",
646
+ reorderButton: "_15l32q56",
647
+ optionInput: "_15l32q57",
648
+ removeButton: "_15l32q58",
649
+ addOption: "_15l32q59",
650
+ advancedSummary: "_15l32q5a",
651
+ advancedGrid: "_15l32q5b",
652
+ advancedLabel: "_15l32q5c",
653
+ advancedInput: "_15l32q5d",
654
+ modeRow: "_15l32q5e",
655
+ modeLabel: "_15l32q5f"
656
+ };
657
+ //#endregion
658
+ //#region src/components/decorators/PollEditDecorator.tsx
659
+ var makeOptionId = customAlphabet("abcdefghijklmnopqrstuvwxyz0123456789", 6);
660
+ function moveItem(arr, from, to) {
661
+ if (to < 0 || to >= arr.length) return arr;
662
+ const next = arr.slice();
663
+ const [item] = next.splice(from, 1);
664
+ next.splice(to, 0, item);
665
+ return next;
666
+ }
667
+ function PollEditDecorator({ closeAt, mode, nodeKey, options, pollId, question, showResults }) {
668
+ const [editor] = useLexicalComposerContext();
669
+ const editable = editor.isEditable();
670
+ const updatePoll = useCallback((mutate) => {
671
+ editor.update(() => {
672
+ const node = $getNodeByKey(nodeKey);
673
+ if ($isPollNode(node)) mutate(node);
674
+ });
675
+ }, [editor, nodeKey]);
676
+ const handleQuestionChange = useCallback((value) => {
677
+ updatePoll((node) => node.setQuestion(value));
678
+ }, [updatePoll]);
679
+ const handleOptionLabelChange = useCallback((id, label) => {
680
+ updatePoll((node) => node.setOptions(node.getOptions().map((o) => o.id === id ? {
681
+ ...o,
682
+ label
683
+ } : o)));
684
+ }, [updatePoll]);
685
+ const handleOptionRemove = useCallback((id) => {
686
+ updatePoll((node) => node.setOptions(node.getOptions().filter((o) => o.id !== id)));
687
+ }, [updatePoll]);
688
+ const handleOptionAdd = useCallback(() => {
689
+ updatePoll((node) => node.setOptions([...node.getOptions(), {
690
+ id: `o_${makeOptionId()}`,
691
+ label: ""
692
+ }]));
693
+ }, [updatePoll]);
694
+ const handleOptionMove = useCallback((index, direction) => {
695
+ updatePoll((node) => {
696
+ const current = node.getOptions();
697
+ const next = moveItem(current, index, index + direction);
698
+ if (next !== current) node.setOptions(next);
699
+ });
700
+ }, [updatePoll]);
701
+ const handleModeChange = useCallback((next) => {
702
+ updatePoll((node) => node.setMode(next));
703
+ }, [updatePoll]);
704
+ const handleCloseAtChange = useCallback((value) => {
705
+ updatePoll((node) => node.setCloseAt(value || void 0));
706
+ }, [updatePoll]);
707
+ const handleShowResultsChange = useCallback((value) => {
708
+ updatePoll((node) => {
709
+ if (value === "always" || value === "after-vote" || value === "after-close") node.setShowResults(value);
710
+ else node.setShowResults(void 0);
711
+ });
712
+ }, [updatePoll]);
713
+ const handleOptionKeyDown = useCallback((event, index) => {
714
+ if (event.key === "Enter") {
715
+ event.preventDefault();
716
+ if (index === options.length - 1) handleOptionAdd();
717
+ }
718
+ }, [handleOptionAdd, options.length]);
719
+ return /* @__PURE__ */ jsxs("div", {
720
+ className: pollEditClasses.container,
721
+ "data-poll-id": pollId,
722
+ children: [
723
+ /* @__PURE__ */ jsxs("div", {
724
+ className: pollEditClasses.meta,
725
+ children: ["Poll · ", mode === "single" ? "Single choice" : "Multiple choice"]
726
+ }),
727
+ /* @__PURE__ */ jsx("input", {
728
+ "aria-label": "Poll question",
729
+ className: pollEditClasses.question,
730
+ disabled: !editable,
731
+ placeholder: "Question",
732
+ value: question,
733
+ onChange: (event) => handleQuestionChange(event.target.value)
734
+ }),
735
+ /* @__PURE__ */ jsx("ul", {
736
+ className: pollEditClasses.optionList,
737
+ children: options.map((option, index) => /* @__PURE__ */ jsxs("li", {
738
+ className: pollEditClasses.optionRow,
739
+ children: [
740
+ editable && options.length > 1 && /* @__PURE__ */ jsxs("span", {
741
+ className: pollEditClasses.reorderColumn,
742
+ children: [/* @__PURE__ */ jsx("button", {
743
+ "aria-label": "Move option up",
744
+ className: pollEditClasses.reorderButton,
745
+ disabled: index === 0,
746
+ type: "button",
747
+ onClick: () => handleOptionMove(index, -1),
748
+ children: "▲"
749
+ }), /* @__PURE__ */ jsx("button", {
750
+ "aria-label": "Move option down",
751
+ className: pollEditClasses.reorderButton,
752
+ disabled: index === options.length - 1,
753
+ type: "button",
754
+ onClick: () => handleOptionMove(index, 1),
755
+ children: "▼"
756
+ })]
757
+ }),
758
+ /* @__PURE__ */ jsx("input", {
759
+ "aria-label": "Option label",
760
+ className: pollEditClasses.optionInput,
761
+ disabled: !editable,
762
+ placeholder: "Option",
763
+ value: option.label,
764
+ onChange: (event) => handleOptionLabelChange(option.id, event.target.value),
765
+ onKeyDown: (event) => handleOptionKeyDown(event, index)
766
+ }),
767
+ editable && options.length > 2 && /* @__PURE__ */ jsx("button", {
768
+ "aria-label": "Remove option",
769
+ className: pollEditClasses.removeButton,
770
+ type: "button",
771
+ onClick: () => handleOptionRemove(option.id),
772
+ children: "×"
773
+ })
774
+ ]
775
+ }, option.id))
776
+ }),
777
+ editable && /* @__PURE__ */ jsx("button", {
778
+ className: pollEditClasses.addOption,
779
+ type: "button",
780
+ onClick: handleOptionAdd,
781
+ children: "+ Add option"
782
+ }),
783
+ editable && /* @__PURE__ */ jsxs("div", {
784
+ className: pollEditClasses.modeRow,
785
+ children: [/* @__PURE__ */ jsxs("label", {
786
+ className: pollEditClasses.modeLabel,
787
+ children: [/* @__PURE__ */ jsx("input", {
788
+ checked: mode === "single",
789
+ name: `poll-mode-${nodeKey}`,
790
+ type: "radio",
791
+ onChange: () => handleModeChange("single")
792
+ }), "Single"]
793
+ }), /* @__PURE__ */ jsxs("label", {
794
+ className: pollEditClasses.modeLabel,
795
+ children: [/* @__PURE__ */ jsx("input", {
796
+ checked: mode === "multiple",
797
+ name: `poll-mode-${nodeKey}`,
798
+ type: "radio",
799
+ onChange: () => handleModeChange("multiple")
800
+ }), "Multiple"]
801
+ })]
802
+ }),
803
+ editable && /* @__PURE__ */ jsxs("details", { children: [/* @__PURE__ */ jsx("summary", {
804
+ className: pollEditClasses.advancedSummary,
805
+ children: "Advanced"
806
+ }), /* @__PURE__ */ jsxs("div", {
807
+ className: pollEditClasses.advancedGrid,
808
+ children: [
809
+ /* @__PURE__ */ jsx("span", {
810
+ className: pollEditClasses.advancedLabel,
811
+ children: "Close at"
812
+ }),
813
+ /* @__PURE__ */ jsx("input", {
814
+ "aria-label": "Closing time",
815
+ className: pollEditClasses.advancedInput,
816
+ type: "datetime-local",
817
+ value: closeAt ?? "",
818
+ onChange: (event) => handleCloseAtChange(event.target.value)
819
+ }),
820
+ /* @__PURE__ */ jsx("span", {
821
+ className: pollEditClasses.advancedLabel,
822
+ children: "Show results"
823
+ }),
824
+ /* @__PURE__ */ jsxs("select", {
825
+ "aria-label": "Show results policy",
826
+ className: pollEditClasses.advancedInput,
827
+ value: showResults ?? "always",
828
+ onChange: (event) => handleShowResultsChange(event.target.value),
829
+ children: [
830
+ /* @__PURE__ */ jsx("option", {
831
+ value: "always",
832
+ children: "Always"
833
+ }),
834
+ /* @__PURE__ */ jsx("option", {
835
+ value: "after-vote",
836
+ children: "After vote"
837
+ }),
838
+ /* @__PURE__ */ jsx("option", {
839
+ value: "after-close",
840
+ children: "After close"
841
+ })
842
+ ]
843
+ })
844
+ ]
845
+ })] })
846
+ ]
847
+ });
848
+ }
849
+ //#endregion
850
+ //#region src/nodes/PollEditNode.ts
851
+ var PollEditNode = class PollEditNode extends PollNode {
852
+ static getType() {
853
+ return "poll";
854
+ }
855
+ static clone(node) {
856
+ return new PollEditNode({
857
+ pollId: node.__pollId,
858
+ question: node.__question,
859
+ options: node.__options,
860
+ mode: node.__mode,
861
+ closeAt: node.__closeAt,
862
+ showResults: node.__showResults
863
+ }, node.__key);
864
+ }
865
+ constructor(payload, key) {
866
+ super(payload, key);
867
+ }
868
+ static importJSON(serializedNode) {
869
+ return new PollEditNode({
870
+ pollId: serializedNode.pollId,
871
+ question: serializedNode.question,
872
+ options: serializedNode.options,
873
+ mode: serializedNode.mode,
874
+ closeAt: serializedNode.closeAt,
875
+ showResults: serializedNode.showResults
876
+ });
877
+ }
878
+ decorate(_editor, _config) {
879
+ return createElement(PollEditDecorator, {
880
+ nodeKey: this.__key,
881
+ pollId: this.__pollId,
882
+ question: this.__question,
883
+ options: this.__options,
884
+ mode: this.__mode,
885
+ closeAt: this.__closeAt,
886
+ showResults: this.__showResults
887
+ });
888
+ }
889
+ };
890
+ _defineProperty(PollEditNode, "commandItems", [{
891
+ title: "Poll",
892
+ icon: createElement(Vote, { size: 20 }),
893
+ description: "Reader-facing vote widget",
894
+ keywords: [
895
+ "poll",
896
+ "vote",
897
+ "survey",
898
+ "choice"
899
+ ],
900
+ section: "ADVANCED",
901
+ placement: ["slash", "toolbar"],
902
+ group: "insert",
903
+ onSelect: (editor) => {
904
+ editor.update(() => {
905
+ $insertNodes([$createPollEditNode()]);
906
+ });
907
+ }
908
+ }]);
909
+ function $createPollEditNode(payload) {
910
+ return new PollEditNode(payload);
911
+ }
912
+ //#endregion
637
913
  //#region src/config-edit.ts
638
914
  var customEditNodes = [
639
915
  SpoilerNode,
@@ -653,7 +929,8 @@ var customEditNodes = [
653
929
  BannerEditNode,
654
930
  MermaidNode,
655
931
  RubyNode,
656
- TagNode
932
+ TagNode,
933
+ PollEditNode
657
934
  ];
658
935
  var allEditNodes = [...builtinNodes, ...customEditNodes];
659
936
  //#endregion
@@ -666,4 +943,4 @@ function getResolvedEditNodes() {
666
943
  return _resolvedEditNodes ?? allEditNodes;
667
944
  }
668
945
  //#endregion
669
- export { FootnoteSectionEditNode as a, setCodeBlockCursorIntent as c, customEditNodes as i, setResolvedEditNodes as n, $createCodeBlockEditNode as o, allEditNodes as r, $createBannerEditNode as s, getResolvedEditNodes as t };
946
+ export { $createPollEditNode as a, FootnoteSectionEditNode as c, setCodeBlockCursorIntent as d, customEditNodes as i, $createCodeBlockEditNode as l, setResolvedEditNodes as n, PollEditNode as o, allEditNodes as r, pollEditClasses as s, getResolvedEditNodes as t, $createBannerEditNode as u };
@@ -0,0 +1,14 @@
1
+ import { EditorConfig, LexicalEditor, NodeKey } from 'lexical';
2
+ import { ReactElement } from 'react';
3
+ import { CommandItemConfig } from '../types/slash-menu';
4
+ import { PollNode, PollNodePayload, SerializedPollNode } from './PollNode';
5
+ export declare class PollEditNode extends PollNode {
6
+ static commandItems: CommandItemConfig[];
7
+ static getType(): string;
8
+ static clone(node: PollEditNode): PollEditNode;
9
+ constructor(payload?: PollNodePayload, key?: NodeKey);
10
+ static importJSON(serializedNode: SerializedPollNode): PollEditNode;
11
+ decorate(_editor: LexicalEditor, _config: EditorConfig): ReactElement;
12
+ }
13
+ export declare function $createPollEditNode(payload?: PollNodePayload): PollEditNode;
14
+ //# sourceMappingURL=PollEditNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PollEditNode.d.ts","sourceRoot":"","sources":["../../src/nodes/PollEditNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAGpE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAI1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,KAAK,eAAe,EAAE,KAAK,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErF,qBAAa,YAAa,SAAQ,QAAQ;IACxC,MAAM,CAAC,YAAY,EAAE,iBAAiB,EAAE,CAetC;IAEF,MAAM,CAAC,OAAO,IAAI,MAAM;IAIxB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY;gBAclC,OAAO,CAAC,EAAE,eAAe,EAAE,GAAG,CAAC,EAAE,OAAO;IAIpD,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,kBAAkB,GAAG,YAAY;IAWnE,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY;CAWtE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,YAAY,CAE3E"}
@@ -0,0 +1,52 @@
1
+ import { EditorConfig, LexicalEditor, LexicalNode, NodeKey, SerializedLexicalNode, Spread, DecoratorNode } from 'lexical';
2
+ import { ReactElement } from 'react';
3
+ import { PollMode, PollOption, PollShowResults } from '../types/poll';
4
+ export declare function createPollId(): string;
5
+ export declare function createOptionId(): string;
6
+ export interface PollNodePayload {
7
+ closeAt?: string;
8
+ mode?: PollMode;
9
+ options?: PollOption[];
10
+ pollId?: string;
11
+ question?: string;
12
+ showResults?: PollShowResults;
13
+ }
14
+ export type SerializedPollNode = Spread<{
15
+ pollId: string;
16
+ question: string;
17
+ options: PollOption[];
18
+ mode: PollMode;
19
+ closeAt?: string;
20
+ showResults?: PollShowResults;
21
+ }, SerializedLexicalNode>;
22
+ export declare class PollNode extends DecoratorNode<ReactElement> {
23
+ __pollId: string;
24
+ __question: string;
25
+ __options: PollOption[];
26
+ __mode: PollMode;
27
+ __closeAt?: string;
28
+ __showResults?: PollShowResults;
29
+ static getType(): string;
30
+ static clone(node: PollNode): PollNode;
31
+ constructor(payload?: PollNodePayload, key?: NodeKey);
32
+ createDOM(_config: EditorConfig): HTMLElement;
33
+ updateDOM(): boolean;
34
+ isInline(): boolean;
35
+ getPollId(): string;
36
+ getQuestion(): string;
37
+ setQuestion(question: string): void;
38
+ getOptions(): PollOption[];
39
+ setOptions(options: PollOption[]): void;
40
+ getMode(): PollMode;
41
+ setMode(mode: PollMode): void;
42
+ getCloseAt(): string | undefined;
43
+ setCloseAt(closeAt: string | undefined): void;
44
+ getShowResults(): PollShowResults | undefined;
45
+ setShowResults(showResults: PollShowResults | undefined): void;
46
+ static importJSON(serializedNode: SerializedPollNode): PollNode;
47
+ exportJSON(): SerializedPollNode;
48
+ decorate(_editor: LexicalEditor, _config: EditorConfig): ReactElement;
49
+ }
50
+ export declare function $createPollNode(payload?: PollNodePayload): PollNode;
51
+ export declare function $isPollNode(node: LexicalNode | null | undefined): node is PollNode;
52
+ //# sourceMappingURL=PollNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PollNode.d.ts","sourceRoot":"","sources":["../../src/nodes/PollNode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,aAAa,EACb,WAAW,EACX,OAAO,EACP,qBAAqB,EACrB,MAAM,EACP,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAI1C,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAM3E,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAEvC;AAED,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,OAAO,CAAC,EAAE,UAAU,EAAE,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,CACrC;IACE,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B,EACD,qBAAqB,CACtB,CAAC;AAEF,qBAAa,QAAS,SAAQ,aAAa,CAAC,YAAY,CAAC;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,MAAM,EAAE,QAAQ,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,eAAe,CAAC;IAEhC,MAAM,CAAC,OAAO,IAAI,MAAM;IAIxB,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ;gBAc1B,OAAO,GAAE,eAAoB,EAAE,GAAG,CAAC,EAAE,OAAO;IAgBxD,SAAS,CAAC,OAAO,EAAE,YAAY,GAAG,WAAW;IAM7C,SAAS,IAAI,OAAO;IAIpB,QAAQ,IAAI,OAAO;IAInB,SAAS,IAAI,MAAM;IAInB,WAAW,IAAI,MAAM;IAIrB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;IAKnC,UAAU,IAAI,UAAU,EAAE;IAI1B,UAAU,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,IAAI;IAKvC,OAAO,IAAI,QAAQ;IAInB,OAAO,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI;IAK7B,UAAU,IAAI,MAAM,GAAG,SAAS;IAIhC,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAK7C,cAAc,IAAI,eAAe,GAAG,SAAS;IAI7C,cAAc,CAAC,WAAW,EAAE,eAAe,GAAG,SAAS,GAAG,IAAI;IAK9D,MAAM,CAAC,UAAU,CAAC,cAAc,EAAE,kBAAkB,GAAG,QAAQ;IAW/D,UAAU,IAAI,kBAAkB;IAchC,QAAQ,CAAC,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY;CAUtE;AAED,wBAAgB,eAAe,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,QAAQ,CAEnE;AAED,wBAAgB,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI,IAAI,QAAQ,CAElF"}
@@ -14,6 +14,9 @@ export type { SerializedMentionNode } from './nodes/MentionNode';
14
14
  export { $createMentionNode, $isMentionNode, MentionNode } from './nodes/MentionNode';
15
15
  export type { SerializedMermaidNode } from './nodes/MermaidNode';
16
16
  export { $createMermaidNode, $isMermaidNode, MermaidNode } from './nodes/MermaidNode';
17
+ export { $createPollEditNode, PollEditNode } from './nodes/PollEditNode';
18
+ export type { PollNodePayload, SerializedPollNode } from './nodes/PollNode';
19
+ export { $createPollNode, $isPollNode, createOptionId, createPollId, PollNode, } from './nodes/PollNode';
17
20
  export type { SerializedRubyNode } from './nodes/RubyNode';
18
21
  export { $createRubyNode, $isRubyNode, RubyNode } from './nodes/RubyNode';
19
22
  export type { SerializedGridContainerNode } from './nodes/GridContainerNode';
@@ -1 +1 @@
1
- {"version":3,"file":"nodes-entry.d.ts","sourceRoot":"","sources":["../src/nodes-entry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9E,YAAY,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC3E,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG9E,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAG1F,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGtF,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGtF,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG1E,YAAY,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,YAAY,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGnE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAGtE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGjE,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC"}
1
+ {"version":3,"file":"nodes-entry.d.ts","sourceRoot":"","sources":["../src/nodes-entry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGrD,YAAY,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9E,YAAY,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAC3E,YAAY,EAAE,yBAAyB,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAG9E,YAAY,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACxF,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAG1F,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGtF,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGtF,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzE,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC5E,OAAO,EACL,eAAe,EACf,WAAW,EACX,cAAc,EACd,YAAY,EACZ,QAAQ,GACT,MAAM,kBAAkB,CAAC;AAG1B,YAAY,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAG1E,YAAY,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,YAAY,EAAE,6BAA6B,EAAE,MAAM,6BAA6B,CAAC;AACjF,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,6BAA6B,CAAC;AAGrC,YAAY,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAGnE,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAGtE,YAAY,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGjE,YAAY,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC"}
@@ -1,5 +1,5 @@
1
- import { a as FootnoteSectionEditNode, i as customEditNodes, n as setResolvedEditNodes, r as allEditNodes, t as getResolvedEditNodes } from "./node-registry-DOYK_WIp.js";
1
+ import { a as $createPollEditNode, c as FootnoteSectionEditNode, i as customEditNodes, n as setResolvedEditNodes, o as PollEditNode, r as allEditNodes, t as getResolvedEditNodes } from "./node-registry-Dz5OTkh4.js";
2
2
  import { C as ImageNode, O as ALERT_LABELS, S as $isImageNode, _ as KaTeXInlineNode, b as KaTeXBlockNode, d as MermaidNode, f as $createMentionNode, g as $isKaTeXInlineNode, i as TagNode, k as ALERT_TYPES, l as $createMermaidNode, m as MentionNode, n as $createTagNode, p as $isMentionNode, r as $isTagNode, u as $isMermaidNode, x as $createImageNode, y as $isKaTeXBlockNode } from "./theme-B5B2EOWM.js";
3
- import { A as BANNER_TYPES, S as CommentNode, a as $createRubyNode, c as $createLinkCardNode, d as $createGridContainerNode, f as $isGridContainerNode, g as FootnoteSectionNode, h as $isFootnoteSectionNode, k as BANNER_LABELS, l as $isLinkCardNode, m as $createFootnoteSectionNode, n as builtinNodes, o as $isRubyNode, p as GridContainerNode, r as customNodes, s as RubyNode, t as allNodes, u as LinkCardNode, x as $isCommentNode, y as $createCommentNode } from "./config-CNiK9v2M.js";
3
+ import { B as BANNER_TYPES, C as GridContainerNode, E as FootnoteSectionNode, M as CommentNode, S as $isGridContainerNode, T as $isFootnoteSectionNode, a as $createRubyNode, b as LinkCardNode, c as $createPollNode, d as createOptionId, f as createPollId, j as $isCommentNode, k as $createCommentNode, l as $isPollNode, n as builtinNodes, o as $isRubyNode, r as customNodes, s as RubyNode, t as allNodes, u as PollNode, v as $createLinkCardNode, w as $createFootnoteSectionNode, x as $createGridContainerNode, y as $isLinkCardNode, z as BANNER_LABELS } from "./config-B5BuLljq.js";
4
4
  import { r as NESTED_EDITOR_NODES } from "./AlertQuoteEditNode-C55sxsR3.js";
5
- export { $createCommentNode, $createFootnoteSectionNode, $createGridContainerNode, $createImageNode, $createLinkCardNode, $createMentionNode, $createMermaidNode, $createRubyNode, $createTagNode, $isCommentNode, $isFootnoteSectionNode, $isGridContainerNode, $isImageNode, $isKaTeXBlockNode, $isKaTeXInlineNode, $isLinkCardNode, $isMentionNode, $isMermaidNode, $isRubyNode, $isTagNode, ALERT_LABELS, ALERT_TYPES, BANNER_LABELS, BANNER_TYPES, CommentNode, FootnoteSectionEditNode, FootnoteSectionNode, GridContainerNode, ImageNode, KaTeXBlockNode, KaTeXInlineNode, LinkCardNode, MentionNode, MermaidNode, NESTED_EDITOR_NODES, RubyNode, TagNode, allEditNodes, allNodes, builtinNodes, customEditNodes, customNodes, getResolvedEditNodes, setResolvedEditNodes };
5
+ export { $createCommentNode, $createFootnoteSectionNode, $createGridContainerNode, $createImageNode, $createLinkCardNode, $createMentionNode, $createMermaidNode, $createPollEditNode, $createPollNode, $createRubyNode, $createTagNode, $isCommentNode, $isFootnoteSectionNode, $isGridContainerNode, $isImageNode, $isKaTeXBlockNode, $isKaTeXInlineNode, $isLinkCardNode, $isMentionNode, $isMermaidNode, $isPollNode, $isRubyNode, $isTagNode, ALERT_LABELS, ALERT_TYPES, BANNER_LABELS, BANNER_TYPES, CommentNode, FootnoteSectionEditNode, FootnoteSectionNode, GridContainerNode, ImageNode, KaTeXBlockNode, KaTeXInlineNode, LinkCardNode, MentionNode, MermaidNode, NESTED_EDITOR_NODES, PollEditNode, PollNode, RubyNode, TagNode, allEditNodes, allNodes, builtinNodes, createOptionId, createPollId, customEditNodes, customNodes, getResolvedEditNodes, setResolvedEditNodes };
@@ -1,3 +1,3 @@
1
- import { A as ImageUploadProvider, D as defaultImageUpload, E as ImageUploadPlugin, F as ALL_TRANSFORMERS, I as HorizontalRulePlugin, L as BlockExitPlugin, M as CorePlugins, N as MarkdownShortcutsPlugin, O as BlockIdPlugin, P as MarkdownPastePlugin, R as AutoLinkPlugin, T as LinkFaviconPlugin, a as AutoFocusPlugin, i as EditorRefPlugin, j as useImageUpload, k as blockIdState, n as OnChangePlugin, o as TextSelectionPlugin, r as FootnotePlugin, t as SubmitShortcutPlugin } from "./SubmitShortcutPlugin-D-7XrQfm.js";
1
+ import { A as ImageUploadProvider, D as defaultImageUpload, E as ImageUploadPlugin, F as ALL_TRANSFORMERS, I as HorizontalRulePlugin, L as BlockExitPlugin, M as CorePlugins, N as MarkdownShortcutsPlugin, O as BlockIdPlugin, P as MarkdownPastePlugin, R as AutoLinkPlugin, T as LinkFaviconPlugin, a as AutoFocusPlugin, i as EditorRefPlugin, j as useImageUpload, k as blockIdState, n as OnChangePlugin, o as TextSelectionPlugin, r as FootnotePlugin, t as SubmitShortcutPlugin } from "./SubmitShortcutPlugin-DhyVFzoj.js";
2
2
  import { a as KaTeXPlugin, c as AlertPlugin, n as MermaidPlugin, s as ImagePlugin } from "./MermaidPlugin-BrOr-wQi.js";
3
3
  export { ALL_TRANSFORMERS, AlertPlugin, AutoFocusPlugin, AutoLinkPlugin, BlockExitPlugin, BlockIdPlugin, CorePlugins, EditorRefPlugin, FootnotePlugin, HorizontalRulePlugin, ImagePlugin, ImageUploadPlugin, ImageUploadProvider, KaTeXPlugin, LinkFaviconPlugin, MarkdownPastePlugin, MarkdownShortcutsPlugin, MermaidPlugin, OnChangePlugin, SubmitShortcutPlugin, TextSelectionPlugin, blockIdState, defaultImageUpload, useImageUpload };