@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.
- package/dist/{SubmitShortcutPlugin-D-7XrQfm.js → SubmitShortcutPlugin-DhyVFzoj.js} +3 -3
- package/dist/components/decorators/PollEditDecorator.d.ts +13 -0
- package/dist/components/decorators/PollEditDecorator.d.ts.map +1 -0
- package/dist/components/renderers/PollRenderer.d.ts +3 -0
- package/dist/components/renderers/PollRenderer.d.ts.map +1 -0
- package/dist/{config-CNiK9v2M.js → config-B5BuLljq.js} +390 -3
- package/dist/config-edit.d.ts.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/context/PollDataContext.d.ts +11 -0
- package/dist/context/PollDataContext.d.ts.map +1 -0
- package/dist/{PresentDialogContext-DKNicgia.js → extractPolls-DO31LNrp.js} +43 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +5 -5
- package/dist/{node-registry-DOYK_WIp.js → node-registry-Dz5OTkh4.js} +281 -4
- package/dist/nodes/PollEditNode.d.ts +14 -0
- package/dist/nodes/PollEditNode.d.ts.map +1 -0
- package/dist/nodes/PollNode.d.ts +52 -0
- package/dist/nodes/PollNode.d.ts.map +1 -0
- package/dist/nodes-entry.d.ts +3 -0
- package/dist/nodes-entry.d.ts.map +1 -1
- package/dist/nodes-entry.mjs +3 -3
- package/dist/plugins-entry.mjs +1 -1
- package/dist/rich-editor.css +1 -1
- package/dist/static-entry.d.ts +5 -0
- package/dist/static-entry.d.ts.map +1 -1
- package/dist/static-entry.mjs +3 -3
- package/dist/styles/index.d.ts +2 -0
- package/dist/styles/index.d.ts.map +1 -1
- package/dist/styles/poll-edit.css.d.ts +35 -0
- package/dist/styles/poll-edit.css.d.ts.map +1 -0
- package/dist/styles/poll.css.d.ts +43 -0
- package/dist/styles/poll.css.d.ts.map +1 -0
- package/dist/types/poll.d.ts +36 -0
- package/dist/types/poll.d.ts.map +1 -0
- package/dist/types/renderer-config.d.ts +3 -0
- package/dist/types/renderer-config.d.ts.map +1 -1
- package/dist/utils/extractPolls.d.ts +4 -0
- package/dist/utils/extractPolls.d.ts.map +1 -0
- package/package.json +4 -4
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { d as setCodeBlockCursorIntent, l as $createCodeBlockEditNode, t as getResolvedEditNodes, u as $createBannerEditNode } from "./node-registry-Dz5OTkh4.js";
|
|
2
2
|
import { A as AlertQuoteNode, E as FootnoteNode, M as extractTextContent, T as $createFootnoteNode, _ as KaTeXInlineNode, b as KaTeXBlockNode, c as SpoilerNode, f as $createMentionNode, h as $createKaTeXInlineNode, m as MentionNode, o as $createSpoilerNode, v as $createKaTeXBlockNode, w as OPEN_IMAGE_UPLOAD_DIALOG_COMMAND, x as $createImageNode } from "./theme-B5B2EOWM.js";
|
|
3
3
|
import { a as FootnoteDefinitionsProvider, n as computeImageMeta } from "./KaTeXRenderer-CQQT3BMw.js";
|
|
4
4
|
import "./katex.css-CIOEOXyd.js";
|
|
5
|
-
import {
|
|
5
|
+
import { A as $createCommentPlaceholderNode, D as $createDetailsNode, E as FootnoteSectionNode, M as CommentNode, O as DetailsNode, P as CodeBlockNode, S as $isGridContainerNode, T as $isFootnoteSectionNode, V as BannerNode, a as $createRubyNode, k as $createCommentNode, s as RubyNode, w as $createFootnoteSectionNode } from "./config-B5BuLljq.js";
|
|
6
6
|
import { t as $createAlertQuoteEditNode } from "./AlertQuoteEditNode-C55sxsR3.js";
|
|
7
7
|
import { n as getHostname, r as probeFavicon, t as normalizeSerializedEditorState } from "./normalizeSerializedEditorState-B-1wmGzd.js";
|
|
8
8
|
import { CheckListPlugin } from "@lexical/react/LexicalCheckListPlugin";
|
|
@@ -21,8 +21,8 @@ import { $convertFromMarkdownString, CHECK_LIST, CODE, QUOTE, TRANSFORMERS } fro
|
|
|
21
21
|
import { $createTableCellNode, $createTableNode, $createTableRowNode, TableCellHeaderStates } from "@lexical/table";
|
|
22
22
|
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
23
23
|
import { Check, Info, Link2, Upload } from "lucide-react";
|
|
24
|
-
import { MarkdownShortcutPlugin } from "@lexical/react/LexicalMarkdownShortcutPlugin";
|
|
25
24
|
import { nanoid } from "nanoid";
|
|
25
|
+
import { MarkdownShortcutPlugin } from "@lexical/react/LexicalMarkdownShortcutPlugin";
|
|
26
26
|
import { ActionBar, ActionButton, Dialog, DialogPopup, DialogTitle, SegmentedControl } from "@haklex/rich-editor-ui";
|
|
27
27
|
//#region src/plugins/AutoLinkPlugin.tsx
|
|
28
28
|
var DEFAULT_MATCHERS = [createLinkMatcherWithRegExp(/https?:\/\/(?:www\.)?[\w#%+.:=@~-]{1,256}\.[A-Za-z]{2}[\w#%&()+./:=?@~-]*/), createLinkMatcherWithRegExp(/(?:[\w%+.-]+@[\d.a-z-]+\.[a-z]{2,})/i, (text) => `mailto:${text}`)];
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { PollMode, PollOption, PollShowResults } from '../../types/poll';
|
|
2
|
+
interface PollEditDecoratorProps {
|
|
3
|
+
closeAt?: string;
|
|
4
|
+
mode: PollMode;
|
|
5
|
+
nodeKey: string;
|
|
6
|
+
options: PollOption[];
|
|
7
|
+
pollId: string;
|
|
8
|
+
question: string;
|
|
9
|
+
showResults?: PollShowResults;
|
|
10
|
+
}
|
|
11
|
+
export declare function PollEditDecorator({ closeAt, mode, nodeKey, options, pollId, question, showResults, }: PollEditDecoratorProps): import("react").JSX.Element;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=PollEditDecorator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PollEditDecorator.d.ts","sourceRoot":"","sources":["../../../src/components/decorators/PollEditDecorator.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAK9E,UAAU,sBAAsB;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,eAAe,CAAC;CAC/B;AAUD,wBAAgB,iBAAiB,CAAC,EAChC,OAAO,EACP,IAAI,EACJ,OAAO,EACP,OAAO,EACP,MAAM,EACN,QAAQ,EACR,WAAW,GACZ,EAAE,sBAAsB,+BA8MxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PollRenderer.d.ts","sourceRoot":"","sources":["../../../src/components/renderers/PollRenderer.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAGV,iBAAiB,EAGlB,MAAM,kBAAkB,CAAC;AAgP1B,wBAAgB,YAAY,CAAC,KAAK,EAAE,iBAAiB,+BAIpD"}
|
|
@@ -4,7 +4,7 @@ import { l as semanticClassNames, r as clsx, u as sharedStyles } from "./katex.c
|
|
|
4
4
|
import { i as detailsStyles, n as gridStyles, r as detailsClassNames, t as gridClassNames } from "./grid.css-CJCkLTZc.js";
|
|
5
5
|
import { t as LinkCardRenderer } from "./LinkCardRenderer-CigqFwCv.js";
|
|
6
6
|
import { AutoLinkNode, LinkNode } from "@lexical/link";
|
|
7
|
-
import { createContext, createElement, use, useCallback, useEffect, useRef, useState } from "react";
|
|
7
|
+
import { createContext, createElement, use, useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
8
8
|
import { HeadingNode, QuoteNode } from "@lexical/rich-text";
|
|
9
9
|
import { $createTextNode, $insertNodes, DecoratorNode, ElementNode, TextNode } from "lexical";
|
|
10
10
|
import { HorizontalRuleNode } from "@lexical/extension";
|
|
@@ -13,6 +13,7 @@ import { ListItemNode, ListNode } from "@lexical/list";
|
|
|
13
13
|
import { TableCellNode, TableNode, TableRowNode } from "@lexical/table";
|
|
14
14
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
15
15
|
import { ChevronRight, Code, Link, MessageSquareQuote, Video } from "lucide-react";
|
|
16
|
+
import { customAlphabet } from "nanoid";
|
|
16
17
|
//#region src/components/renderers/BannerRenderer.tsx
|
|
17
18
|
var BannerRenderer = ({ type }) => {
|
|
18
19
|
return /* @__PURE__ */ jsx("span", { className: `rich-banner-icon rich-banner-icon-${type}` });
|
|
@@ -996,6 +997,391 @@ function $isLinkCardNode(node) {
|
|
|
996
997
|
return node instanceof LinkCardNode;
|
|
997
998
|
}
|
|
998
999
|
//#endregion
|
|
1000
|
+
//#region src/context/PollDataContext.tsx
|
|
1001
|
+
var PollDataContext = createContext({
|
|
1002
|
+
adapter: null,
|
|
1003
|
+
initialStates: {}
|
|
1004
|
+
});
|
|
1005
|
+
function PollDataProvider({ adapter, initialStates, children }) {
|
|
1006
|
+
const value = useMemo(() => ({
|
|
1007
|
+
adapter,
|
|
1008
|
+
initialStates: initialStates ?? {}
|
|
1009
|
+
}), [adapter, initialStates]);
|
|
1010
|
+
return /* @__PURE__ */ jsx(PollDataContext.Provider, {
|
|
1011
|
+
value,
|
|
1012
|
+
children
|
|
1013
|
+
});
|
|
1014
|
+
}
|
|
1015
|
+
function usePollDataAdapter() {
|
|
1016
|
+
return use(PollDataContext).adapter;
|
|
1017
|
+
}
|
|
1018
|
+
function useInitialPollState(pollId) {
|
|
1019
|
+
return use(PollDataContext).initialStates[pollId];
|
|
1020
|
+
}
|
|
1021
|
+
//#endregion
|
|
1022
|
+
//#region src/styles/poll.css.ts
|
|
1023
|
+
var pollClasses = {
|
|
1024
|
+
container: "_1m5xzan0",
|
|
1025
|
+
meta: "_1m5xzan1",
|
|
1026
|
+
question: "_1m5xzan2",
|
|
1027
|
+
optionList: "_1m5xzan3",
|
|
1028
|
+
option: "_1m5xzan4",
|
|
1029
|
+
optionInteractive: "_1m5xzan5",
|
|
1030
|
+
optionSelected: "_1m5xzan6",
|
|
1031
|
+
optionDisabled: "_1m5xzan7",
|
|
1032
|
+
tint: "_1m5xzan8",
|
|
1033
|
+
tintActive: "_1m5xzan9",
|
|
1034
|
+
optionRow: "_1m5xzana",
|
|
1035
|
+
optionLabel: "_1m5xzanb",
|
|
1036
|
+
optionPct: "_1m5xzanc",
|
|
1037
|
+
optionPctActive: "_1m5xzand",
|
|
1038
|
+
hint: "_1m5xzane",
|
|
1039
|
+
submit: "_1m5xzanf",
|
|
1040
|
+
submitActive: "_1m5xzang",
|
|
1041
|
+
footer: "_1m5xzanh",
|
|
1042
|
+
errorMessage: "_1m5xzani",
|
|
1043
|
+
skeleton: "_1m5xzanj"
|
|
1044
|
+
};
|
|
1045
|
+
//#endregion
|
|
1046
|
+
//#region src/components/renderers/PollRenderer.tsx
|
|
1047
|
+
function shouldShowTallies(state, showResults) {
|
|
1048
|
+
if (showResults === "after-vote") return state.userVote !== void 0 || state.closed;
|
|
1049
|
+
if (showResults === "after-close") return state.closed;
|
|
1050
|
+
return true;
|
|
1051
|
+
}
|
|
1052
|
+
function classNames(...names) {
|
|
1053
|
+
return names.filter((n) => Boolean(n)).join(" ");
|
|
1054
|
+
}
|
|
1055
|
+
function PollStaticFallback({ question, options }) {
|
|
1056
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
1057
|
+
className: pollClasses.container,
|
|
1058
|
+
children: [/* @__PURE__ */ jsx("p", {
|
|
1059
|
+
className: pollClasses.question,
|
|
1060
|
+
children: question
|
|
1061
|
+
}), /* @__PURE__ */ jsx("ul", {
|
|
1062
|
+
className: pollClasses.optionList,
|
|
1063
|
+
children: options.map((option) => /* @__PURE__ */ jsx("li", {
|
|
1064
|
+
className: pollClasses.option,
|
|
1065
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
1066
|
+
className: pollClasses.optionRow,
|
|
1067
|
+
children: /* @__PURE__ */ jsx("span", {
|
|
1068
|
+
className: pollClasses.optionLabel,
|
|
1069
|
+
children: option.label
|
|
1070
|
+
})
|
|
1071
|
+
})
|
|
1072
|
+
}, option.id))
|
|
1073
|
+
})]
|
|
1074
|
+
});
|
|
1075
|
+
}
|
|
1076
|
+
function PollInteractive({ adapter, closeAt, mode, options, pollId, question, showResults }) {
|
|
1077
|
+
const initialState = useInitialPollState(pollId);
|
|
1078
|
+
const liveState = adapter.usePollState(pollId);
|
|
1079
|
+
const submit = adapter.useSubmit(pollId);
|
|
1080
|
+
const state = liveState ?? initialState ?? {
|
|
1081
|
+
tallies: {},
|
|
1082
|
+
totalVotes: 0,
|
|
1083
|
+
status: "loading",
|
|
1084
|
+
closed: false,
|
|
1085
|
+
canVote: false
|
|
1086
|
+
};
|
|
1087
|
+
const [pendingSelection, setPendingSelection] = useState([]);
|
|
1088
|
+
const [isSubmitting, setIsSubmitting] = useState(false);
|
|
1089
|
+
const showTallies = shouldShowTallies(state, showResults);
|
|
1090
|
+
const userVoted = state.userVote !== void 0;
|
|
1091
|
+
const isClosed = state.closed;
|
|
1092
|
+
const canInteract = !userVoted && !isClosed && state.canVote && state.status !== "loading";
|
|
1093
|
+
const tallyShare = useCallback((optionId) => {
|
|
1094
|
+
if (!showTallies || state.totalVotes <= 0) return 0;
|
|
1095
|
+
const tally = state.tallies[optionId] ?? 0;
|
|
1096
|
+
return Math.max(0, Math.min(1, tally / state.totalVotes));
|
|
1097
|
+
}, [
|
|
1098
|
+
showTallies,
|
|
1099
|
+
state.tallies,
|
|
1100
|
+
state.totalVotes
|
|
1101
|
+
]);
|
|
1102
|
+
const handleSingleClick = useCallback(async (optionId) => {
|
|
1103
|
+
if (!canInteract || isSubmitting) return;
|
|
1104
|
+
setIsSubmitting(true);
|
|
1105
|
+
try {
|
|
1106
|
+
await submit([optionId]);
|
|
1107
|
+
} finally {
|
|
1108
|
+
setIsSubmitting(false);
|
|
1109
|
+
}
|
|
1110
|
+
}, [
|
|
1111
|
+
canInteract,
|
|
1112
|
+
isSubmitting,
|
|
1113
|
+
submit
|
|
1114
|
+
]);
|
|
1115
|
+
const handleMultiToggle = useCallback((optionId) => {
|
|
1116
|
+
if (!canInteract || isSubmitting) return;
|
|
1117
|
+
setPendingSelection((prev) => prev.includes(optionId) ? prev.filter((id) => id !== optionId) : [...prev, optionId]);
|
|
1118
|
+
}, [canInteract, isSubmitting]);
|
|
1119
|
+
const handleMultiSubmit = useCallback(async () => {
|
|
1120
|
+
if (!canInteract || isSubmitting || pendingSelection.length === 0) return;
|
|
1121
|
+
setIsSubmitting(true);
|
|
1122
|
+
try {
|
|
1123
|
+
await submit([...pendingSelection]);
|
|
1124
|
+
} finally {
|
|
1125
|
+
setIsSubmitting(false);
|
|
1126
|
+
}
|
|
1127
|
+
}, [
|
|
1128
|
+
canInteract,
|
|
1129
|
+
isSubmitting,
|
|
1130
|
+
pendingSelection,
|
|
1131
|
+
submit
|
|
1132
|
+
]);
|
|
1133
|
+
const metaLabel = useMemo(() => {
|
|
1134
|
+
const parts = [mode === "single" ? "Single choice" : "Multiple choice"];
|
|
1135
|
+
if (isClosed) parts.push("Voting closed");
|
|
1136
|
+
else if (userVoted) parts.push("Voted");
|
|
1137
|
+
return parts.join(" · ");
|
|
1138
|
+
}, [
|
|
1139
|
+
mode,
|
|
1140
|
+
isClosed,
|
|
1141
|
+
userVoted
|
|
1142
|
+
]);
|
|
1143
|
+
if (state.status === "loading") return /* @__PURE__ */ jsxs("div", {
|
|
1144
|
+
className: pollClasses.container,
|
|
1145
|
+
children: [
|
|
1146
|
+
/* @__PURE__ */ jsx("p", {
|
|
1147
|
+
className: pollClasses.meta,
|
|
1148
|
+
children: metaLabel
|
|
1149
|
+
}),
|
|
1150
|
+
/* @__PURE__ */ jsx("p", {
|
|
1151
|
+
className: pollClasses.question,
|
|
1152
|
+
children: question
|
|
1153
|
+
}),
|
|
1154
|
+
/* @__PURE__ */ jsx("ul", {
|
|
1155
|
+
className: pollClasses.optionList,
|
|
1156
|
+
children: options.map((option) => /* @__PURE__ */ jsx("li", { className: pollClasses.skeleton }, option.id))
|
|
1157
|
+
})
|
|
1158
|
+
]
|
|
1159
|
+
});
|
|
1160
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
1161
|
+
className: pollClasses.container,
|
|
1162
|
+
children: [
|
|
1163
|
+
/* @__PURE__ */ jsx("p", {
|
|
1164
|
+
className: pollClasses.meta,
|
|
1165
|
+
children: metaLabel
|
|
1166
|
+
}),
|
|
1167
|
+
/* @__PURE__ */ jsx("p", {
|
|
1168
|
+
className: pollClasses.question,
|
|
1169
|
+
children: question
|
|
1170
|
+
}),
|
|
1171
|
+
/* @__PURE__ */ jsx("ul", {
|
|
1172
|
+
className: pollClasses.optionList,
|
|
1173
|
+
children: options.map((option) => {
|
|
1174
|
+
const isUserChoice = state.userVote?.includes(option.id) ?? false;
|
|
1175
|
+
const isPending = pendingSelection.includes(option.id);
|
|
1176
|
+
const tintWidth = (() => {
|
|
1177
|
+
if (canInteract && mode === "multiple" && isPending) return 1;
|
|
1178
|
+
return tallyShare(option.id);
|
|
1179
|
+
})();
|
|
1180
|
+
const tintShouldBeActive = isUserChoice || isPending;
|
|
1181
|
+
const labelHighlighted = isUserChoice || isPending;
|
|
1182
|
+
const handleClick = canInteract ? mode === "single" ? () => handleSingleClick(option.id) : () => handleMultiToggle(option.id) : void 0;
|
|
1183
|
+
return /* @__PURE__ */ jsxs("li", {
|
|
1184
|
+
className: classNames(pollClasses.option, canInteract ? pollClasses.optionInteractive : pollClasses.optionDisabled, labelHighlighted && pollClasses.optionSelected),
|
|
1185
|
+
onClick: handleClick,
|
|
1186
|
+
...canInteract ? {
|
|
1187
|
+
role: "button",
|
|
1188
|
+
tabIndex: 0,
|
|
1189
|
+
onKeyDown: (event) => {
|
|
1190
|
+
if (event.key === "Enter" || event.key === " ") {
|
|
1191
|
+
event.preventDefault();
|
|
1192
|
+
handleClick?.();
|
|
1193
|
+
}
|
|
1194
|
+
}
|
|
1195
|
+
} : {},
|
|
1196
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
1197
|
+
"aria-hidden": true,
|
|
1198
|
+
style: { width: `${tintWidth * 100}%` },
|
|
1199
|
+
className: classNames(pollClasses.tint, tintShouldBeActive && pollClasses.tintActive)
|
|
1200
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
1201
|
+
className: pollClasses.optionRow,
|
|
1202
|
+
children: [/* @__PURE__ */ jsxs("span", {
|
|
1203
|
+
className: pollClasses.optionLabel,
|
|
1204
|
+
children: [labelHighlighted && "✓ ", option.label]
|
|
1205
|
+
}), showTallies && (userVoted || isClosed) ? /* @__PURE__ */ jsxs("span", {
|
|
1206
|
+
className: classNames(pollClasses.optionPct, labelHighlighted && pollClasses.optionPctActive),
|
|
1207
|
+
children: [Math.round(tallyShare(option.id) * 100), "%"]
|
|
1208
|
+
}) : canInteract && mode === "single" ? /* @__PURE__ */ jsx("span", {
|
|
1209
|
+
className: pollClasses.hint,
|
|
1210
|
+
children: "Click to vote"
|
|
1211
|
+
}) : null]
|
|
1212
|
+
})]
|
|
1213
|
+
}, option.id);
|
|
1214
|
+
})
|
|
1215
|
+
}),
|
|
1216
|
+
canInteract && mode === "multiple" && /* @__PURE__ */ jsx("button", {
|
|
1217
|
+
disabled: pendingSelection.length === 0 || isSubmitting,
|
|
1218
|
+
type: "button",
|
|
1219
|
+
className: classNames(pollClasses.submit, pendingSelection.length > 0 && !isSubmitting && pollClasses.submitActive),
|
|
1220
|
+
onClick: handleMultiSubmit,
|
|
1221
|
+
children: isSubmitting ? "Submitting…" : pendingSelection.length > 0 ? `Submit ${pendingSelection.length} ${pendingSelection.length === 1 ? "item" : "items"}` : "Submit (select at least one)"
|
|
1222
|
+
}),
|
|
1223
|
+
/* @__PURE__ */ jsxs("div", {
|
|
1224
|
+
className: pollClasses.footer,
|
|
1225
|
+
children: [(userVoted || isClosed) && state.totalVotes > 0 ? /* @__PURE__ */ jsxs("span", { children: [
|
|
1226
|
+
state.totalVotes.toLocaleString(),
|
|
1227
|
+
" ",
|
|
1228
|
+
state.totalVotes === 1 ? "vote" : "votes"
|
|
1229
|
+
] }) : /* @__PURE__ */ jsx("span", {}), closeAt && !isClosed ? /* @__PURE__ */ jsxs("span", { children: ["Closes ", closeAt] }) : null]
|
|
1230
|
+
}),
|
|
1231
|
+
state.status === "error" && state.errorMessage ? /* @__PURE__ */ jsx("p", {
|
|
1232
|
+
className: pollClasses.errorMessage,
|
|
1233
|
+
children: state.errorMessage
|
|
1234
|
+
}) : !state.canVote && !userVoted && !isClosed && state.errorMessage ? /* @__PURE__ */ jsx("p", {
|
|
1235
|
+
className: pollClasses.errorMessage,
|
|
1236
|
+
children: state.errorMessage
|
|
1237
|
+
}) : null
|
|
1238
|
+
]
|
|
1239
|
+
});
|
|
1240
|
+
}
|
|
1241
|
+
function PollRenderer(props) {
|
|
1242
|
+
const adapter = usePollDataAdapter();
|
|
1243
|
+
if (!adapter) return /* @__PURE__ */ jsx(PollStaticFallback, { ...props });
|
|
1244
|
+
return /* @__PURE__ */ jsx(PollInteractive, {
|
|
1245
|
+
adapter,
|
|
1246
|
+
...props
|
|
1247
|
+
});
|
|
1248
|
+
}
|
|
1249
|
+
//#endregion
|
|
1250
|
+
//#region src/nodes/PollNode.ts
|
|
1251
|
+
var idAlphabet = "abcdefghijklmnopqrstuvwxyz0123456789";
|
|
1252
|
+
var makePollIdSuffix = customAlphabet(idAlphabet, 10);
|
|
1253
|
+
var makeOptionIdSuffix = customAlphabet(idAlphabet, 6);
|
|
1254
|
+
function createPollId() {
|
|
1255
|
+
return `p_${makePollIdSuffix()}`;
|
|
1256
|
+
}
|
|
1257
|
+
function createOptionId() {
|
|
1258
|
+
return `o_${makeOptionIdSuffix()}`;
|
|
1259
|
+
}
|
|
1260
|
+
var PollNode = class PollNode extends DecoratorNode {
|
|
1261
|
+
static getType() {
|
|
1262
|
+
return "poll";
|
|
1263
|
+
}
|
|
1264
|
+
static clone(node) {
|
|
1265
|
+
return new PollNode({
|
|
1266
|
+
pollId: node.__pollId,
|
|
1267
|
+
question: node.__question,
|
|
1268
|
+
options: node.__options,
|
|
1269
|
+
mode: node.__mode,
|
|
1270
|
+
closeAt: node.__closeAt,
|
|
1271
|
+
showResults: node.__showResults
|
|
1272
|
+
}, node.__key);
|
|
1273
|
+
}
|
|
1274
|
+
constructor(payload = {}, key) {
|
|
1275
|
+
super(key);
|
|
1276
|
+
_defineProperty(this, "__pollId", void 0);
|
|
1277
|
+
_defineProperty(this, "__question", void 0);
|
|
1278
|
+
_defineProperty(this, "__options", void 0);
|
|
1279
|
+
_defineProperty(this, "__mode", void 0);
|
|
1280
|
+
_defineProperty(this, "__closeAt", void 0);
|
|
1281
|
+
_defineProperty(this, "__showResults", void 0);
|
|
1282
|
+
this.__pollId = payload.pollId ?? createPollId();
|
|
1283
|
+
this.__question = payload.question ?? "";
|
|
1284
|
+
this.__options = payload.options && payload.options.length > 0 ? payload.options : [{
|
|
1285
|
+
id: createOptionId(),
|
|
1286
|
+
label: ""
|
|
1287
|
+
}, {
|
|
1288
|
+
id: createOptionId(),
|
|
1289
|
+
label: ""
|
|
1290
|
+
}];
|
|
1291
|
+
this.__mode = payload.mode ?? "single";
|
|
1292
|
+
this.__closeAt = payload.closeAt;
|
|
1293
|
+
this.__showResults = payload.showResults;
|
|
1294
|
+
}
|
|
1295
|
+
createDOM(_config) {
|
|
1296
|
+
const div = document.createElement("div");
|
|
1297
|
+
div.className = "rich-poll-wrapper";
|
|
1298
|
+
return div;
|
|
1299
|
+
}
|
|
1300
|
+
updateDOM() {
|
|
1301
|
+
return false;
|
|
1302
|
+
}
|
|
1303
|
+
isInline() {
|
|
1304
|
+
return false;
|
|
1305
|
+
}
|
|
1306
|
+
getPollId() {
|
|
1307
|
+
return this.getLatest().__pollId;
|
|
1308
|
+
}
|
|
1309
|
+
getQuestion() {
|
|
1310
|
+
return this.getLatest().__question;
|
|
1311
|
+
}
|
|
1312
|
+
setQuestion(question) {
|
|
1313
|
+
const writable = this.getWritable();
|
|
1314
|
+
writable.__question = question;
|
|
1315
|
+
}
|
|
1316
|
+
getOptions() {
|
|
1317
|
+
return this.getLatest().__options;
|
|
1318
|
+
}
|
|
1319
|
+
setOptions(options) {
|
|
1320
|
+
const writable = this.getWritable();
|
|
1321
|
+
writable.__options = options;
|
|
1322
|
+
}
|
|
1323
|
+
getMode() {
|
|
1324
|
+
return this.getLatest().__mode;
|
|
1325
|
+
}
|
|
1326
|
+
setMode(mode) {
|
|
1327
|
+
const writable = this.getWritable();
|
|
1328
|
+
writable.__mode = mode;
|
|
1329
|
+
}
|
|
1330
|
+
getCloseAt() {
|
|
1331
|
+
return this.getLatest().__closeAt;
|
|
1332
|
+
}
|
|
1333
|
+
setCloseAt(closeAt) {
|
|
1334
|
+
const writable = this.getWritable();
|
|
1335
|
+
writable.__closeAt = closeAt;
|
|
1336
|
+
}
|
|
1337
|
+
getShowResults() {
|
|
1338
|
+
return this.getLatest().__showResults;
|
|
1339
|
+
}
|
|
1340
|
+
setShowResults(showResults) {
|
|
1341
|
+
const writable = this.getWritable();
|
|
1342
|
+
writable.__showResults = showResults;
|
|
1343
|
+
}
|
|
1344
|
+
static importJSON(serializedNode) {
|
|
1345
|
+
return new PollNode({
|
|
1346
|
+
pollId: serializedNode.pollId,
|
|
1347
|
+
question: serializedNode.question,
|
|
1348
|
+
options: serializedNode.options,
|
|
1349
|
+
mode: serializedNode.mode,
|
|
1350
|
+
closeAt: serializedNode.closeAt,
|
|
1351
|
+
showResults: serializedNode.showResults
|
|
1352
|
+
});
|
|
1353
|
+
}
|
|
1354
|
+
exportJSON() {
|
|
1355
|
+
return {
|
|
1356
|
+
...super.exportJSON(),
|
|
1357
|
+
type: "poll",
|
|
1358
|
+
pollId: this.__pollId,
|
|
1359
|
+
question: this.__question,
|
|
1360
|
+
options: this.__options,
|
|
1361
|
+
mode: this.__mode,
|
|
1362
|
+
...this.__closeAt ? { closeAt: this.__closeAt } : {},
|
|
1363
|
+
...this.__showResults ? { showResults: this.__showResults } : {},
|
|
1364
|
+
version: 1
|
|
1365
|
+
};
|
|
1366
|
+
}
|
|
1367
|
+
decorate(_editor, _config) {
|
|
1368
|
+
return createRendererDecoration("Poll", PollRenderer, {
|
|
1369
|
+
pollId: this.__pollId,
|
|
1370
|
+
question: this.__question,
|
|
1371
|
+
options: this.__options,
|
|
1372
|
+
mode: this.__mode,
|
|
1373
|
+
closeAt: this.__closeAt,
|
|
1374
|
+
showResults: this.__showResults
|
|
1375
|
+
});
|
|
1376
|
+
}
|
|
1377
|
+
};
|
|
1378
|
+
function $createPollNode(payload) {
|
|
1379
|
+
return new PollNode(payload);
|
|
1380
|
+
}
|
|
1381
|
+
function $isPollNode(node) {
|
|
1382
|
+
return node instanceof PollNode;
|
|
1383
|
+
}
|
|
1384
|
+
//#endregion
|
|
999
1385
|
//#region src/nodes/RubyNode.ts
|
|
1000
1386
|
function readBaseTextFromRuby(element) {
|
|
1001
1387
|
let base = "";
|
|
@@ -1239,8 +1625,9 @@ var customNodes = [
|
|
|
1239
1625
|
BannerNode,
|
|
1240
1626
|
MermaidNode,
|
|
1241
1627
|
RubyNode,
|
|
1242
|
-
TagNode
|
|
1628
|
+
TagNode,
|
|
1629
|
+
PollNode
|
|
1243
1630
|
];
|
|
1244
1631
|
var allNodes = [...builtinNodes, ...customNodes];
|
|
1245
1632
|
//#endregion
|
|
1246
|
-
export {
|
|
1633
|
+
export { $createCommentPlaceholderNode as A, BANNER_TYPES as B, GridContainerNode as C, $createDetailsNode as D, FootnoteSectionNode as E, CodeBlockRenderer as F, normalizeBannerType as H, ColorSchemeProvider as I, useColorScheme as L, CommentNode as M, $isCodeBlockNode as N, DetailsNode as O, CodeBlockNode as P, $isBannerNode as R, $isGridContainerNode as S, $isFootnoteSectionNode as T, BannerRenderer as U, BannerNode as V, usePollDataAdapter as _, $createRubyNode as a, LinkCardNode as b, $createPollNode as c, createOptionId as d, createPollId as f, useInitialPollState as g, PollDataProvider as h, VideoNode as i, $isCommentNode as j, $createCommentNode as k, $isPollNode as l, pollClasses as m, builtinNodes as n, $isRubyNode as o, PollRenderer as p, customNodes as r, RubyNode as s, allNodes as t, PollNode as u, $createLinkCardNode as v, $createFootnoteSectionNode as w, $createGridContainerNode as x, $isLinkCardNode as y, BANNER_LABELS as z };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-edit.d.ts","sourceRoot":"","sources":["../src/config-edit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"config-edit.d.ts","sourceRoot":"","sources":["../src/config-edit.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAuBlD,eAAO,MAAM,eAAe,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAoBrD,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAyC,CAAC"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAsBlD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAYlD,CAAC;AAEF,eAAO,MAAM,WAAW,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAoBjD,CAAC;AAEF,eAAO,MAAM,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CAAqC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { ReactNode } from 'react';
|
|
2
|
+
import { PollDataAdapter, PollState } from '../types/poll';
|
|
3
|
+
export interface PollDataProviderProps {
|
|
4
|
+
adapter: PollDataAdapter;
|
|
5
|
+
children: ReactNode;
|
|
6
|
+
initialStates?: Record<string, PollState>;
|
|
7
|
+
}
|
|
8
|
+
export declare function PollDataProvider({ adapter, initialStates, children }: PollDataProviderProps): import("react").JSX.Element;
|
|
9
|
+
export declare function usePollDataAdapter(): PollDataAdapter | null;
|
|
10
|
+
export declare function useInitialPollState(pollId: string): PollState | undefined;
|
|
11
|
+
//# sourceMappingURL=PollDataContext.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PollDataContext.d.ts","sourceRoot":"","sources":["../../src/context/PollDataContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGvC,OAAO,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAYhE,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,SAAS,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAC3C;AAED,wBAAgB,gBAAgB,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,qBAAqB,+BAM3F;AAED,wBAAgB,kBAAkB,IAAI,eAAe,GAAG,IAAI,CAE3D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,SAAS,CAEzE"}
|
|
@@ -71,4 +71,46 @@ function usePresentDialog() {
|
|
|
71
71
|
return use(PresentDialogContext);
|
|
72
72
|
}
|
|
73
73
|
//#endregion
|
|
74
|
-
|
|
74
|
+
//#region src/utils/extractPolls.ts
|
|
75
|
+
function isPollNode(node) {
|
|
76
|
+
return node.type === "poll";
|
|
77
|
+
}
|
|
78
|
+
function coercePollMetadata(node) {
|
|
79
|
+
if (typeof node.pollId !== "string" || typeof node.question !== "string") return null;
|
|
80
|
+
if (!Array.isArray(node.options)) return null;
|
|
81
|
+
if (node.mode !== "single" && node.mode !== "multiple") return null;
|
|
82
|
+
const options = node.options.filter((option) => !!option && typeof option === "object" && typeof option.id === "string" && typeof option.label === "string").map((option) => ({
|
|
83
|
+
id: option.id,
|
|
84
|
+
label: option.label
|
|
85
|
+
}));
|
|
86
|
+
return {
|
|
87
|
+
pollId: node.pollId,
|
|
88
|
+
question: node.question,
|
|
89
|
+
options,
|
|
90
|
+
mode: node.mode,
|
|
91
|
+
...typeof node.closeAt === "string" ? { closeAt: node.closeAt } : {},
|
|
92
|
+
...node.showResults === "always" || node.showResults === "after-vote" || node.showResults === "after-close" ? { showResults: node.showResults } : {}
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
function walk(node, out) {
|
|
96
|
+
if (isPollNode(node)) {
|
|
97
|
+
const meta = coercePollMetadata(node);
|
|
98
|
+
if (meta) out.push(meta);
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const maybe = node;
|
|
102
|
+
if (Array.isArray(maybe.children)) for (const child of maybe.children) walk(child, out);
|
|
103
|
+
if (maybe.content && typeof maybe.content === "object") walkSerializedState(maybe.content, out);
|
|
104
|
+
}
|
|
105
|
+
function walkSerializedState(state, out) {
|
|
106
|
+
const root = state.root;
|
|
107
|
+
if (!root || !Array.isArray(root.children)) return;
|
|
108
|
+
for (const child of root.children) walk(child, out);
|
|
109
|
+
}
|
|
110
|
+
function extractPolls(state) {
|
|
111
|
+
const out = [];
|
|
112
|
+
walkSerializedState(state, out);
|
|
113
|
+
return out;
|
|
114
|
+
}
|
|
115
|
+
//#endregion
|
|
116
|
+
export { useExtraNodes as a, ExtraNodesProvider as i, PresentDialogProvider as n, LinkFavicon as o, usePresentDialog as r, extractPolls as t };
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,8 @@ export type { FootnoteDefinitionsContextValue } from './context/FootnoteDefiniti
|
|
|
12
12
|
export { FootnoteDefinitionsProvider, useFootnoteContent, useFootnoteDefinitions, useFootnoteDisplayNumber, } from './context/FootnoteDefinitionsContext';
|
|
13
13
|
export type { RenderEditorStateFn } from './context/NestedContentRendererContext';
|
|
14
14
|
export { NestedContentRendererProvider, useNestedContentRenderer, useOptionalNestedContentRenderer, } from './context/NestedContentRendererContext';
|
|
15
|
+
export type { PollDataProviderProps } from './context/PollDataContext';
|
|
16
|
+
export { PollDataProvider, useInitialPollState, usePollDataAdapter, } from './context/PollDataContext';
|
|
15
17
|
export type { PresentDialogFn, PresentDialogProps } from './context/PresentDialogContext';
|
|
16
18
|
export { PresentDialogProvider, usePresentDialog } from './context/PresentDialogContext';
|
|
17
19
|
export type { RendererMode } from './context/RendererConfigContext';
|
|
@@ -21,10 +23,12 @@ export { createTextSelectionStore, TextSelectionStoreProvider, useTextSelectionS
|
|
|
21
23
|
export { blockIdState } from './plugins/BlockIdPlugin';
|
|
22
24
|
export * from './styles';
|
|
23
25
|
export type { RichEditorProps, RichEditorVariant } from './types';
|
|
26
|
+
export type { PollDataAdapter, PollMetadata, PollMode, PollOption, PollRendererProps, PollShowResults, PollState, } from './types/poll';
|
|
24
27
|
export type { RendererConfig } from './types/renderer-config';
|
|
25
28
|
export type { AnchorError, AnchorResult, BlockAnchor, CommentAnchor, RangeAnchor, } from './utils/comment-anchor';
|
|
26
29
|
export { $getRootBlock, $getTextOffsetInBlock, $resolveSelectionPoint, buildBlockAnchor, buildRangeAnchor, } from './utils/comment-anchor';
|
|
30
|
+
export { extractPolls } from './utils/extractPolls';
|
|
27
31
|
export type { DOMSelectionTarget, TextSelectionSnapshot } from './utils/text-selection';
|
|
28
|
-
export { TEXT_SELECTION_HIGHLIGHT_NAME } from './utils/text-selection-constants';
|
|
29
32
|
export { $captureTextSelection, $captureTextSelectionFromRangeSelection, $restoreTextSelection, createDOMRangeFromTextSelection, findDOMPointByTextOffset, getBlockElementById, getDOMRectFromTextSelection, getTextOffsetFromDOMPoint, } from './utils/text-selection';
|
|
33
|
+
export { TEXT_SELECTION_HIGHLIGHT_NAME } from './utils/text-selection-constants';
|
|
30
34
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAChF,YAAY,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,wCAAwC,CAAC;AAChD,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACzF,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,UAAU,GACX,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAClG,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAClE,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,YAAY,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AACnF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAChF,YAAY,EAAE,+BAA+B,EAAE,MAAM,sCAAsC,CAAC;AAC5F,OAAO,EACL,2BAA2B,EAC3B,kBAAkB,EAClB,sBAAsB,EACtB,wBAAwB,GACzB,MAAM,sCAAsC,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,EACL,6BAA6B,EAC7B,wBAAwB,EACxB,gCAAgC,GACjC,MAAM,wCAAwC,CAAC;AAChD,YAAY,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AAC1F,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AACzF,YAAY,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,EACL,sBAAsB,EACtB,iBAAiB,EACjB,eAAe,EACf,UAAU,GACX,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAClG,OAAO,EACL,wBAAwB,EACxB,0BAA0B,EAC1B,wBAAwB,EACxB,qBAAqB,GACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,cAAc,UAAU,CAAC;AACzB,YAAY,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAClE,YAAY,EACV,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,iBAAiB,EACjB,eAAe,EACf,SAAS,GACV,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC9D,YAAY,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,aAAa,EACb,WAAW,GACZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,sBAAsB,EACtB,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,YAAY,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AACxF,OAAO,EACL,qBAAqB,EACrB,uCAAuC,EACvC,qBAAqB,EACrB,+BAA+B,EAC/B,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,6BAA6B,EAAE,MAAM,kCAAkC,CAAC"}
|
package/dist/index.mjs
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import { A as ImageUploadProvider, C as useTextSelectionSnapshot, D as defaultImageUpload, E as ImageUploadPlugin, M as CorePlugins, O as BlockIdPlugin, S as createTextSelectionStore, T as LinkFaviconPlugin, _ as $getTextOffsetInBlock, a as AutoFocusPlugin, b as buildRangeAnchor, c as $captureTextSelectionFromRangeSelection, d as findDOMPointByTextOffset, f as getBlockElementById, g as $getRootBlock, h as TEXT_SELECTION_HIGHLIGHT_NAME, i as EditorRefPlugin, k as blockIdState, l as $restoreTextSelection, m as getTextOffsetFromDOMPoint, n as OnChangePlugin, o as TextSelectionPlugin, p as getDOMRectFromTextSelection, r as FootnotePlugin, s as $captureTextSelection, t as SubmitShortcutPlugin, u as createDOMRangeFromTextSelection, v as $resolveSelectionPoint, w as useTextSelectionStore, x as TextSelectionStoreProvider, y as buildBlockAnchor } from "./SubmitShortcutPlugin-
|
|
2
|
-
import { n as setResolvedEditNodes, r as allEditNodes } from "./node-registry-
|
|
1
|
+
import { A as ImageUploadProvider, C as useTextSelectionSnapshot, D as defaultImageUpload, E as ImageUploadPlugin, M as CorePlugins, O as BlockIdPlugin, S as createTextSelectionStore, T as LinkFaviconPlugin, _ as $getTextOffsetInBlock, a as AutoFocusPlugin, b as buildRangeAnchor, c as $captureTextSelectionFromRangeSelection, d as findDOMPointByTextOffset, f as getBlockElementById, g as $getRootBlock, h as TEXT_SELECTION_HIGHLIGHT_NAME, i as EditorRefPlugin, k as blockIdState, l as $restoreTextSelection, m as getTextOffsetFromDOMPoint, n as OnChangePlugin, o as TextSelectionPlugin, p as getDOMRectFromTextSelection, r as FootnotePlugin, s as $captureTextSelection, t as SubmitShortcutPlugin, u as createDOMRangeFromTextSelection, v as $resolveSelectionPoint, w as useTextSelectionStore, x as TextSelectionStoreProvider, y as buildBlockAnchor } from "./SubmitShortcutPlugin-DhyVFzoj.js";
|
|
2
|
+
import { n as setResolvedEditNodes, r as allEditNodes, s as pollEditClasses } from "./node-registry-Dz5OTkh4.js";
|
|
3
3
|
import { F as useNestedContentRenderer, I as useOptionalNestedContentRenderer, P as NestedContentRendererProvider, t as editorTheme } from "./theme-B5B2EOWM.js";
|
|
4
4
|
import { a as FootnoteDefinitionsProvider, c as useFootnoteDisplayNumber, d as RendererConfigProvider, f as useRendererConfig, m as useVariant, o as useFootnoteContent, p as useRendererMode, s as useFootnoteDefinitions } from "./KaTeXRenderer-CQQT3BMw.js";
|
|
5
5
|
import { a as noteVariant, c as richContent, i as getVariantClass, l as semanticClassNames, n as katexStyles, o as commentVariant, r as clsx, s as articleVariant, t as katexClassNames, u as sharedStyles } from "./katex.css-CIOEOXyd.js";
|
|
6
|
-
import {
|
|
6
|
+
import { I as ColorSchemeProvider, L as useColorScheme, _ as usePollDataAdapter, g as useInitialPollState, h as PollDataProvider, m as pollClasses } from "./config-B5BuLljq.js";
|
|
7
7
|
import { i as detailsStyles, n as gridStyles, r as detailsClassNames, t as gridClassNames } from "./grid.css-CJCkLTZc.js";
|
|
8
|
-
import { a as
|
|
8
|
+
import { a as useExtraNodes, i as ExtraNodesProvider, n as PresentDialogProvider, o as LinkFavicon, r as usePresentDialog, t as extractPolls } from "./extractPolls-DO31LNrp.js";
|
|
9
9
|
import { a as KaTeXPlugin, c as AlertPlugin, n as MermaidPlugin, s as ImagePlugin } from "./MermaidPlugin-BrOr-wQi.js";
|
|
10
10
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
11
11
|
import { ContentEditable } from "@lexical/react/LexicalContentEditable";
|
|
@@ -130,4 +130,4 @@ function RichEditor({ extraNodes, imageUpload, children, ...shellProps }) {
|
|
|
130
130
|
});
|
|
131
131
|
}
|
|
132
132
|
//#endregion
|
|
133
|
-
export { $captureTextSelection, $captureTextSelectionFromRangeSelection, $getRootBlock, $getTextOffsetInBlock, $resolveSelectionPoint, $restoreTextSelection, ColorSchemeProvider, CorePlugins, ExtraNodesProvider, FootnoteDefinitionsProvider, LinkFavicon, NestedContentRendererProvider, PresentDialogProvider, RendererConfigProvider, RichEditor, RichEditorShell, TEXT_SELECTION_HIGHLIGHT_NAME, TextSelectionStoreProvider, articleTheme, articleVariant, blockIdState, buildBlockAnchor, buildRangeAnchor, commentTheme, commentVariant, createDOMRangeFromTextSelection, createTextSelectionStore, detailsClassNames, detailsStyles, editorTheme, findDOMPointByTextOffset, getBlockElementById, getDOMRectFromTextSelection, getTextOffsetFromDOMPoint, getVariantClass, gridClassNames, gridStyles, katexClassNames, katexStyles, noteTheme, noteVariant, richContent, semanticClassNames, sharedStyles, useColorScheme, useExtraNodes, useFootnoteContent, useFootnoteDefinitions, useFootnoteDisplayNumber, useNestedContentRenderer, useOptionalNestedContentRenderer, usePresentDialog, useRendererConfig, useRendererMode, useTextSelectionSnapshot, useTextSelectionStore, useVariant, vars };
|
|
133
|
+
export { $captureTextSelection, $captureTextSelectionFromRangeSelection, $getRootBlock, $getTextOffsetInBlock, $resolveSelectionPoint, $restoreTextSelection, ColorSchemeProvider, CorePlugins, ExtraNodesProvider, FootnoteDefinitionsProvider, LinkFavicon, NestedContentRendererProvider, PollDataProvider, PresentDialogProvider, RendererConfigProvider, RichEditor, RichEditorShell, TEXT_SELECTION_HIGHLIGHT_NAME, TextSelectionStoreProvider, articleTheme, articleVariant, blockIdState, buildBlockAnchor, buildRangeAnchor, commentTheme, commentVariant, createDOMRangeFromTextSelection, createTextSelectionStore, detailsClassNames, detailsStyles, editorTheme, extractPolls, findDOMPointByTextOffset, getBlockElementById, getDOMRectFromTextSelection, getTextOffsetFromDOMPoint, getVariantClass, gridClassNames, gridStyles, katexClassNames, katexStyles, noteTheme, noteVariant, pollClasses, pollEditClasses, richContent, semanticClassNames, sharedStyles, useColorScheme, useExtraNodes, useFootnoteContent, useFootnoteDefinitions, useFootnoteDisplayNumber, useInitialPollState, useNestedContentRenderer, useOptionalNestedContentRenderer, usePollDataAdapter, usePresentDialog, useRendererConfig, useRendererMode, useTextSelectionSnapshot, useTextSelectionStore, useVariant, vars };
|