@plasmicpkgs/tiptap 0.0.1

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 (103) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +1 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/components/MentionList.d.ts +12 -0
  5. package/dist/contexts.d.ts +30 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.js +1400 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/registerBold.d.ts +9 -0
  10. package/dist/registerCode.d.ts +9 -0
  11. package/dist/registerItalic.d.ts +9 -0
  12. package/dist/registerLink.d.ts +9 -0
  13. package/dist/registerMention.d.ts +28 -0
  14. package/dist/registerStrike.d.ts +9 -0
  15. package/dist/registerTiptap.d.ts +18 -0
  16. package/dist/registerUnderline.d.ts +9 -0
  17. package/dist/tiptap.esm.js +1382 -0
  18. package/dist/tiptap.esm.js.map +1 -0
  19. package/dist/toolbar/registerToolbarBold.d.ts +13 -0
  20. package/dist/toolbar/registerToolbarCode.d.ts +13 -0
  21. package/dist/toolbar/registerToolbarItalic.d.ts +13 -0
  22. package/dist/toolbar/registerToolbarLink.d.ts +13 -0
  23. package/dist/toolbar/registerToolbarMention.d.ts +13 -0
  24. package/dist/toolbar/registerToolbarStrike.d.ts +13 -0
  25. package/dist/toolbar/registerToolbarUnderline.d.ts +13 -0
  26. package/dist/useIsClient.d.ts +3 -0
  27. package/dist/utils.d.ts +24 -0
  28. package/package.json +103 -0
  29. package/skinny/contexts.d.ts +30 -0
  30. package/skinny/registerBold.cjs.js +48 -0
  31. package/skinny/registerBold.cjs.js.map +1 -0
  32. package/skinny/registerBold.d.ts +9 -0
  33. package/skinny/registerBold.esm.js +41 -0
  34. package/skinny/registerBold.esm.js.map +1 -0
  35. package/skinny/registerCode.cjs.js +48 -0
  36. package/skinny/registerCode.cjs.js.map +1 -0
  37. package/skinny/registerCode.d.ts +9 -0
  38. package/skinny/registerCode.esm.js +41 -0
  39. package/skinny/registerCode.esm.js.map +1 -0
  40. package/skinny/registerItalic.cjs.js +48 -0
  41. package/skinny/registerItalic.cjs.js.map +1 -0
  42. package/skinny/registerItalic.d.ts +9 -0
  43. package/skinny/registerItalic.esm.js +41 -0
  44. package/skinny/registerItalic.esm.js.map +1 -0
  45. package/skinny/registerLink.cjs.js +48 -0
  46. package/skinny/registerLink.cjs.js.map +1 -0
  47. package/skinny/registerLink.d.ts +9 -0
  48. package/skinny/registerLink.esm.js +41 -0
  49. package/skinny/registerLink.esm.js.map +1 -0
  50. package/skinny/registerMention.cjs.js +420 -0
  51. package/skinny/registerMention.cjs.js.map +1 -0
  52. package/skinny/registerMention.d.ts +28 -0
  53. package/skinny/registerMention.esm.js +411 -0
  54. package/skinny/registerMention.esm.js.map +1 -0
  55. package/skinny/registerStrike.cjs.js +48 -0
  56. package/skinny/registerStrike.cjs.js.map +1 -0
  57. package/skinny/registerStrike.d.ts +9 -0
  58. package/skinny/registerStrike.esm.js +41 -0
  59. package/skinny/registerStrike.esm.js.map +1 -0
  60. package/skinny/registerTiptap-6a2d0bb4.esm.js +375 -0
  61. package/skinny/registerTiptap-6a2d0bb4.esm.js.map +1 -0
  62. package/skinny/registerTiptap-fd9bf882.cjs.js +391 -0
  63. package/skinny/registerTiptap-fd9bf882.cjs.js.map +1 -0
  64. package/skinny/registerTiptap.cjs.js +20 -0
  65. package/skinny/registerTiptap.cjs.js.map +1 -0
  66. package/skinny/registerTiptap.d.ts +18 -0
  67. package/skinny/registerTiptap.esm.js +10 -0
  68. package/skinny/registerTiptap.esm.js.map +1 -0
  69. package/skinny/registerToolbarBold.cjs.js +78 -0
  70. package/skinny/registerToolbarBold.cjs.js.map +1 -0
  71. package/skinny/registerToolbarBold.esm.js +71 -0
  72. package/skinny/registerToolbarBold.esm.js.map +1 -0
  73. package/skinny/registerToolbarCode.cjs.js +78 -0
  74. package/skinny/registerToolbarCode.cjs.js.map +1 -0
  75. package/skinny/registerToolbarCode.esm.js +71 -0
  76. package/skinny/registerToolbarCode.esm.js.map +1 -0
  77. package/skinny/registerToolbarItalic.cjs.js +81 -0
  78. package/skinny/registerToolbarItalic.cjs.js.map +1 -0
  79. package/skinny/registerToolbarItalic.esm.js +74 -0
  80. package/skinny/registerToolbarItalic.esm.js.map +1 -0
  81. package/skinny/registerToolbarLink.cjs.js +78 -0
  82. package/skinny/registerToolbarLink.cjs.js.map +1 -0
  83. package/skinny/registerToolbarLink.esm.js +71 -0
  84. package/skinny/registerToolbarLink.esm.js.map +1 -0
  85. package/skinny/registerToolbarMention.cjs.js +78 -0
  86. package/skinny/registerToolbarMention.cjs.js.map +1 -0
  87. package/skinny/registerToolbarMention.esm.js +71 -0
  88. package/skinny/registerToolbarMention.esm.js.map +1 -0
  89. package/skinny/registerToolbarStrike.cjs.js +78 -0
  90. package/skinny/registerToolbarStrike.cjs.js.map +1 -0
  91. package/skinny/registerToolbarStrike.esm.js +71 -0
  92. package/skinny/registerToolbarStrike.esm.js.map +1 -0
  93. package/skinny/registerToolbarUnderline.cjs.js +78 -0
  94. package/skinny/registerToolbarUnderline.cjs.js.map +1 -0
  95. package/skinny/registerToolbarUnderline.esm.js +71 -0
  96. package/skinny/registerToolbarUnderline.esm.js.map +1 -0
  97. package/skinny/registerUnderline.cjs.js +48 -0
  98. package/skinny/registerUnderline.cjs.js.map +1 -0
  99. package/skinny/registerUnderline.d.ts +9 -0
  100. package/skinny/registerUnderline.esm.js +41 -0
  101. package/skinny/registerUnderline.esm.js.map +1 -0
  102. package/skinny/useIsClient.d.ts +3 -0
  103. package/skinny/utils.d.ts +24 -0
@@ -0,0 +1,391 @@
1
+ 'use strict';
2
+
3
+ var Document = require('@tiptap/extension-document');
4
+ var Paragraph = require('@tiptap/extension-paragraph');
5
+ var Text = require('@tiptap/extension-text');
6
+ var react = require('@tiptap/react');
7
+ var antd = require('antd');
8
+ var React = require('react');
9
+ var registerComponent = require('@plasmicapp/host/registerComponent');
10
+ require('@plasmicapp/host/registerGlobalContext');
11
+
12
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
13
+
14
+ var Document__default = /*#__PURE__*/_interopDefault(Document);
15
+ var Paragraph__default = /*#__PURE__*/_interopDefault(Paragraph);
16
+ var Text__default = /*#__PURE__*/_interopDefault(Text);
17
+ var React__default = /*#__PURE__*/_interopDefault(React);
18
+ var registerComponent__default = /*#__PURE__*/_interopDefault(registerComponent);
19
+
20
+ const RESET_TIMEOUT_MS = 500;
21
+ const allExtensions = [
22
+ "bold",
23
+ "italic",
24
+ "underline",
25
+ "strike",
26
+ "code",
27
+ "link",
28
+ "mention"
29
+ ];
30
+ const TiptapContext = React__default.default.createContext(void 0);
31
+ const useTiptapContext = () => {
32
+ const context = React__default.default.useContext(TiptapContext);
33
+ if (!context) {
34
+ throw new Error(
35
+ "useTiptapContext must be used within a TiptapContextProvider"
36
+ );
37
+ }
38
+ return context;
39
+ };
40
+ const TiptapContextProvider = ({ children }) => {
41
+ const [bold, setBold] = React.useState(void 0);
42
+ const [code, setCode] = React.useState(void 0);
43
+ const [italic, setItalic] = React.useState(
44
+ void 0
45
+ );
46
+ const [link, setLink] = React.useState(void 0);
47
+ const [mention, setMention] = React.useState(
48
+ void 0
49
+ );
50
+ const [strike, setStrike] = React.useState(
51
+ void 0
52
+ );
53
+ const [underline, setUnderline] = React.useState(void 0);
54
+ return /* @__PURE__ */ React__default.default.createElement(
55
+ TiptapContext.Provider,
56
+ {
57
+ value: {
58
+ bold,
59
+ setBold,
60
+ code,
61
+ setCode,
62
+ italic,
63
+ setItalic,
64
+ link,
65
+ setLink,
66
+ mention,
67
+ /**
68
+ * In situations where I want to remove an extension and add it again with new options (e.g. within a useEffect - see registerMention)
69
+ * the options are not updated.
70
+ * So after removing the extension, I want to wait a few seconds before I add it again,
71
+ * so the Tiptap editor acknowledges the removal before it adds the extension back with new updated options.
72
+ * @param mentionOptions
73
+ * @returns
74
+ */
75
+ setMention: (mentionOptions) => {
76
+ if (!mentionOptions) {
77
+ setMention(mentionOptions);
78
+ return;
79
+ }
80
+ setTimeout(() => {
81
+ setMention(mentionOptions);
82
+ }, RESET_TIMEOUT_MS);
83
+ },
84
+ strike,
85
+ setStrike,
86
+ underline,
87
+ setUnderline
88
+ }
89
+ },
90
+ children
91
+ );
92
+ };
93
+
94
+ function useIsClient() {
95
+ const [loaded, setLoaded] = React__default.default.useState(false);
96
+ useIsomorphicLayoutEffect(() => {
97
+ setLoaded(true);
98
+ });
99
+ return loaded;
100
+ }
101
+ const isBrowser = typeof window !== "undefined";
102
+ const useIsomorphicLayoutEffect = isBrowser ? React__default.default.useLayoutEffect : React__default.default.useEffect;
103
+
104
+ function registerComponentHelper(loader, component, meta) {
105
+ if (loader) {
106
+ loader.registerComponent(component, meta);
107
+ } else {
108
+ registerComponent__default.default(component, meta);
109
+ }
110
+ }
111
+ function traverseReactEltTree(children, callback) {
112
+ const rec = (elts) => {
113
+ (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {
114
+ var _a;
115
+ if (elt) {
116
+ callback(elt);
117
+ if (elt.children) {
118
+ rec(elt.children);
119
+ }
120
+ if (((_a = elt.props) == null ? void 0 : _a.children) && elt.props.children !== elt.children) {
121
+ rec(elt.props.children);
122
+ }
123
+ }
124
+ });
125
+ };
126
+ rec(children);
127
+ }
128
+
129
+ var __defProp = Object.defineProperty;
130
+ var __getOwnPropSymbols = Object.getOwnPropertySymbols;
131
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
132
+ var __propIsEnum = Object.prototype.propertyIsEnumerable;
133
+ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
134
+ var __spreadValues = (a, b) => {
135
+ for (var prop in b || (b = {}))
136
+ if (__hasOwnProp.call(b, prop))
137
+ __defNormalProp(a, prop, b[prop]);
138
+ if (__getOwnPropSymbols)
139
+ for (var prop of __getOwnPropSymbols(b)) {
140
+ if (__propIsEnum.call(b, prop))
141
+ __defNormalProp(a, prop, b[prop]);
142
+ }
143
+ return a;
144
+ };
145
+ var __objRest = (source, exclude) => {
146
+ var target = {};
147
+ for (var prop in source)
148
+ if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
149
+ target[prop] = source[prop];
150
+ if (source != null && __getOwnPropSymbols)
151
+ for (var prop of __getOwnPropSymbols(source)) {
152
+ if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
153
+ target[prop] = source[prop];
154
+ }
155
+ return target;
156
+ };
157
+ const TIPTAP_COMPONENT_NAME = "hostless-tiptap";
158
+ function Tiptap(props) {
159
+ const isClient = useIsClient();
160
+ const [active, setActive] = React.useState(false);
161
+ const [refreshKey, setRefreshKey] = React.useState(0);
162
+ const activeRef = React.useRef();
163
+ activeRef.current = active;
164
+ const {
165
+ extensions,
166
+ contentHtml,
167
+ defaultContentHtml,
168
+ className,
169
+ onChange,
170
+ toolbar
171
+ } = props;
172
+ const tiptapContext = __objRest(useTiptapContext(), []);
173
+ const usedExtensions = allExtensions.reduce(
174
+ (acc, ext) => {
175
+ if (tiptapContext[ext] !== void 0) {
176
+ acc[ext] = tiptapContext[ext];
177
+ }
178
+ return acc;
179
+ },
180
+ {}
181
+ );
182
+ const extensionsProp = [
183
+ Document__default.default,
184
+ Paragraph__default.default,
185
+ Text__default.default,
186
+ ...Object.values(usedExtensions)
187
+ ];
188
+ React.useEffect(() => {
189
+ if (activeRef.current)
190
+ return;
191
+ setRefreshKey(Math.random() * 1e6);
192
+ }, [contentHtml]);
193
+ if (!isClient) {
194
+ return null;
195
+ }
196
+ const css = `
197
+ .tiptap {
198
+ padding: 0;
199
+ outline: none;
200
+ }
201
+ `;
202
+ const toolbarProp = toolbar ? /* @__PURE__ */ React__default.default.createElement("div", { style: { display: "flex", alignItems: "center" } }, toolbar) : null;
203
+ return /* @__PURE__ */ React__default.default.createElement("div", { className, style: { position: "relative" } }, /* @__PURE__ */ React__default.default.createElement(
204
+ react.EditorProvider,
205
+ {
206
+ key: `${extensionsProp.length}${refreshKey}`,
207
+ extensions: extensionsProp,
208
+ content: contentHtml || defaultContentHtml,
209
+ onCreate: ({ editor }) => {
210
+ onChange(editor.getJSON());
211
+ },
212
+ onUpdate: ({ editor }) => {
213
+ onChange(editor.getJSON());
214
+ },
215
+ onFocus: () => setActive(true),
216
+ onBlur: () => setActive(false),
217
+ slotBefore: toolbarProp,
218
+ children: void 0,
219
+ editorProps: {
220
+ attributes: {
221
+ className
222
+ }
223
+ }
224
+ }
225
+ ), extensions, /* @__PURE__ */ React__default.default.createElement("style", { dangerouslySetInnerHTML: { __html: css } }));
226
+ }
227
+ function TiptapWrapper(props) {
228
+ return /* @__PURE__ */ React__default.default.createElement(TiptapContextProvider, null, /* @__PURE__ */ React__default.default.createElement(Tiptap, __spreadValues({}, props)));
229
+ }
230
+ function AddExtension({
231
+ studioOps,
232
+ componentProps
233
+ }) {
234
+ const usedExtensions = React.useMemo(() => {
235
+ const list = [];
236
+ traverseReactEltTree(componentProps == null ? void 0 : componentProps.extensions, (elt) => {
237
+ var _a, _b, _c;
238
+ const ext = (_c = (_b = (_a = elt == null ? void 0 : elt.type) == null ? void 0 : _a.displayName) == null ? void 0 : _b.toLowerCase) == null ? void 0 : _c.call(_b);
239
+ if (ext) {
240
+ list.push(ext);
241
+ }
242
+ });
243
+ return list;
244
+ }, [componentProps == null ? void 0 : componentProps.extensions]);
245
+ const usedExtensionTools = React.useMemo(() => {
246
+ const list = [];
247
+ traverseReactEltTree(componentProps == null ? void 0 : componentProps.toolbar, (elt) => {
248
+ var _a, _b, _c;
249
+ const ext = (_c = (_b = (_a = elt == null ? void 0 : elt.type) == null ? void 0 : _a.displayName) == null ? void 0 : _b.toLowerCase) == null ? void 0 : _c.call(_b);
250
+ if (ext && ext.includes("toolbar")) {
251
+ list.push(ext.replace("toolbar", ""));
252
+ }
253
+ });
254
+ return list;
255
+ }, [componentProps == null ? void 0 : componentProps.toolbar]);
256
+ const handleChange = (extName, add) => {
257
+ if (add) {
258
+ studioOps.appendToSlot(
259
+ {
260
+ type: "component",
261
+ name: `${TIPTAP_COMPONENT_NAME}-extension-${extName}`,
262
+ props: {}
263
+ },
264
+ "extensions"
265
+ );
266
+ studioOps.appendToSlot(
267
+ {
268
+ type: "component",
269
+ name: `${TIPTAP_COMPONENT_NAME}-toolbar-${extName}`,
270
+ props: {}
271
+ },
272
+ "toolbar"
273
+ );
274
+ } else {
275
+ const extIndices = usedExtensions.flatMap(
276
+ (ext, i) => ext === extName ? i : []
277
+ );
278
+ extIndices.reverse().forEach(
279
+ (i) => i !== -1 && studioOps.removeFromSlotAt(i, "extensions")
280
+ );
281
+ const toolIndices = usedExtensionTools.flatMap(
282
+ (ext, i) => ext === extName ? i : []
283
+ );
284
+ toolIndices.reverse().forEach((i) => i !== -1 && studioOps.removeFromSlotAt(i, "toolbar"));
285
+ }
286
+ };
287
+ return /* @__PURE__ */ React__default.default.createElement(
288
+ "div",
289
+ {
290
+ style: {
291
+ marginBottom: 10,
292
+ paddingBottom: 10,
293
+ borderBottom: "1px dashed #ccc"
294
+ }
295
+ },
296
+ /* @__PURE__ */ React__default.default.createElement("p", null, "You can add capabilities to Tiptap Rich Text Editor using the tools below."),
297
+ /* @__PURE__ */ React__default.default.createElement("p", null, `To further customize the extensions, find them under the Editor's "extensions" and "toolbar" slots`),
298
+ allExtensions.map((ext) => /* @__PURE__ */ React__default.default.createElement(
299
+ "label",
300
+ {
301
+ "data-test-id": `custom-action-${ext}`,
302
+ style: {
303
+ display: "flex",
304
+ justifyContent: "space-between",
305
+ marginBottom: 5,
306
+ color: "#1b1b18"
307
+ }
308
+ },
309
+ /* @__PURE__ */ React__default.default.createElement("span", null, ext),
310
+ /* @__PURE__ */ React__default.default.createElement(
311
+ antd.Switch,
312
+ {
313
+ size: "small",
314
+ checked: usedExtensions.includes(ext) || usedExtensionTools.includes(ext),
315
+ onChange: (checked) => handleChange(ext, checked)
316
+ }
317
+ )
318
+ ))
319
+ );
320
+ }
321
+ function registerTiptap(loader) {
322
+ registerComponentHelper(loader, TiptapWrapper, {
323
+ name: TIPTAP_COMPONENT_NAME,
324
+ displayName: "Tiptap Rich Text Editor",
325
+ defaultStyles: {
326
+ borderWidth: "1px",
327
+ borderStyle: "solid",
328
+ borderColor: "rgb(204,204,204)",
329
+ borderRadius: "4px",
330
+ padding: "10px",
331
+ width: "300px"
332
+ },
333
+ actions: [
334
+ {
335
+ type: "custom-action",
336
+ control: AddExtension
337
+ }
338
+ ],
339
+ props: {
340
+ contentHtml: {
341
+ type: "string",
342
+ displayName: "HTML Content",
343
+ editOnly: true,
344
+ uncontrolledProp: "defaultContentHtml",
345
+ description: "Contents of the editor"
346
+ },
347
+ contentJson: {
348
+ type: "object",
349
+ displayName: "JSON Content",
350
+ hidden: () => true
351
+ },
352
+ extensions: {
353
+ type: "slot",
354
+ hidePlaceholder: true,
355
+ allowedComponents: allExtensions.map(
356
+ (ext) => `${TIPTAP_COMPONENT_NAME}-extension-${ext}`
357
+ )
358
+ },
359
+ toolbar: {
360
+ type: "slot",
361
+ hidePlaceholder: true,
362
+ allowedComponents: allExtensions.map(
363
+ (ext) => `${TIPTAP_COMPONENT_NAME}-toolbar-${ext}`
364
+ )
365
+ },
366
+ onChange: {
367
+ type: "eventHandler",
368
+ argTypes: [{ name: "content", type: "object" }]
369
+ }
370
+ },
371
+ states: {
372
+ content: {
373
+ type: "writable",
374
+ variableType: "object",
375
+ valueProp: "contentJson",
376
+ onChangeProp: "onChange"
377
+ }
378
+ },
379
+ importName: "TiptapWrapper",
380
+ importPath: "@plasmicpkgs/tiptap/skinny/registerTiptap"
381
+ });
382
+ }
383
+
384
+ exports.AddExtension = AddExtension;
385
+ exports.TIPTAP_COMPONENT_NAME = TIPTAP_COMPONENT_NAME;
386
+ exports.Tiptap = Tiptap;
387
+ exports.TiptapWrapper = TiptapWrapper;
388
+ exports.registerComponentHelper = registerComponentHelper;
389
+ exports.registerTiptap = registerTiptap;
390
+ exports.useTiptapContext = useTiptapContext;
391
+ //# sourceMappingURL=registerTiptap-fd9bf882.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerTiptap-fd9bf882.cjs.js","sources":["../src/contexts.tsx","../src/useIsClient.ts","../src/utils.ts","../src/registerTiptap.tsx"],"sourcesContent":["import { Mark, Node } from \"@tiptap/core\";\nimport type { BoldOptions } from \"@tiptap/extension-bold\";\nimport type { CodeOptions } from \"@tiptap/extension-code\";\nimport type { ItalicOptions } from \"@tiptap/extension-italic\";\nimport type { LinkOptions } from \"@tiptap/extension-link\";\nimport type { MentionOptions } from \"@tiptap/extension-mention\";\nimport type { StrikeOptions } from \"@tiptap/extension-strike\";\nimport type { UnderlineOptions } from \"@tiptap/extension-underline\";\nimport React, { useState } from \"react\";\n\nexport const RESET_TIMEOUT_MS = 500;\nexport interface TiptapContextProps {\n bold?: Mark<BoldOptions>;\n setBold: (boldOptions?: Mark<BoldOptions>) => void;\n code?: Mark<CodeOptions>;\n setCode: (codeOptions?: Mark<CodeOptions>) => void;\n italic?: Mark<ItalicOptions>;\n setItalic: (italicOptions?: Mark<ItalicOptions>) => void;\n link?: Mark<LinkOptions>;\n setLink: (linkOptions?: Mark<LinkOptions>) => void;\n mention?: Node<MentionOptions>;\n setMention: (mentionOptions?: Node<MentionOptions>) => void;\n strike?: Mark<StrikeOptions>;\n setStrike: (strikeOptions?: Mark<StrikeOptions>) => void;\n underline?: Mark<UnderlineOptions>;\n setUnderline: (underlineOptions?: Mark<UnderlineOptions>) => void;\n}\n\nexport const allExtensions: Extract<keyof TiptapContextProps, string>[] = [\n \"bold\",\n \"italic\",\n \"underline\",\n \"strike\",\n \"code\",\n \"link\",\n \"mention\",\n];\n\nexport const TiptapContext = React.createContext<\n TiptapContextProps | undefined\n>(undefined);\n\nexport const useTiptapContext = () => {\n const context = React.useContext(TiptapContext);\n if (!context) {\n throw new Error(\n \"useTiptapContext must be used within a TiptapContextProvider\"\n );\n }\n return context;\n};\n\nexport const TiptapContextProvider = ({ children }: any) => {\n const [bold, setBold] = useState<Mark<BoldOptions> | undefined>(undefined);\n const [code, setCode] = useState<Mark<CodeOptions> | undefined>(undefined);\n const [italic, setItalic] = useState<Mark<ItalicOptions> | undefined>(\n undefined\n );\n const [link, setLink] = useState<Mark<LinkOptions> | undefined>(undefined);\n const [mention, setMention] = useState<Node<MentionOptions> | undefined>(\n undefined\n );\n const [strike, setStrike] = useState<Mark<StrikeOptions> | undefined>(\n undefined\n );\n const [underline, setUnderline] = useState<\n Mark<UnderlineOptions> | undefined\n >(undefined);\n\n return (\n <TiptapContext.Provider\n value={{\n bold,\n setBold,\n code,\n setCode,\n italic,\n setItalic,\n link,\n setLink,\n mention,\n /**\n * In situations where I want to remove an extension and add it again with new options (e.g. within a useEffect - see registerMention)\n * the options are not updated.\n * So after removing the extension, I want to wait a few seconds before I add it again,\n * so the Tiptap editor acknowledges the removal before it adds the extension back with new updated options.\n * @param mentionOptions\n * @returns\n */\n setMention: (mentionOptions?: Node<MentionOptions>) => {\n if (!mentionOptions) {\n setMention(mentionOptions);\n return;\n }\n setTimeout(() => {\n setMention(mentionOptions);\n }, RESET_TIMEOUT_MS);\n },\n strike,\n setStrike,\n underline,\n setUnderline,\n }}\n >\n {children}\n </TiptapContext.Provider>\n );\n};\n","import React from \"react\";\n\nexport function useIsClient() {\n const [loaded, setLoaded] = React.useState(false);\n useIsomorphicLayoutEffect(() => {\n setLoaded(true);\n });\n return loaded;\n}\n\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-ignore\nconst isBrowser = typeof window !== \"undefined\";\nexport const useIsomorphicLayoutEffect = isBrowser\n ? React.useLayoutEffect\n : React.useEffect;\n","import {\n ComponentMeta,\n default as registerComponent,\n} from \"@plasmicapp/host/registerComponent\";\nimport {\n default as registerGlobalContext,\n GlobalContextMeta,\n} from \"@plasmicapp/host/registerGlobalContext\";\nimport { default as registerToken } from \"@plasmicapp/host/registerToken\";\nimport React from \"react\";\n\nexport type Registerable = {\n registerComponent: typeof registerComponent;\n registerGlobalContext: typeof registerGlobalContext;\n registerToken: typeof registerToken;\n};\n\nexport function makeRegisterComponent<T extends React.ComponentType<any>>(\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n registerComponentHelper(loader, component, meta);\n };\n}\n\nexport function makeRegisterGlobalContext<T extends React.ComponentType<any>>(\n component: T,\n meta: GlobalContextMeta<React.ComponentProps<T>>\n) {\n return function (loader?: Registerable) {\n if (loader) {\n loader.registerGlobalContext(component, meta);\n } else {\n registerGlobalContext(component, meta);\n }\n };\n}\n\nexport function registerComponentHelper<T extends React.ComponentType<any>>(\n loader: Registerable | undefined,\n component: T,\n meta: ComponentMeta<React.ComponentProps<T>>\n) {\n if (loader) {\n loader.registerComponent(component, meta);\n } else {\n registerComponent(component, meta);\n }\n}\n\ntype ReactElt = {\n children: ReactElt | ReactElt[];\n props: {\n children: ReactElt | ReactElt[];\n [prop: string]: any;\n } | null;\n type: React.ComponentType<any> | null;\n key: string | null;\n} | null;\n\nexport function traverseReactEltTree(\n children: React.ReactNode,\n callback: (elt: ReactElt) => void\n) {\n const rec = (elts: ReactElt | ReactElt[] | null) => {\n (Array.isArray(elts) ? elts : [elts]).forEach((elt) => {\n if (elt) {\n callback(elt);\n if (elt.children) {\n rec(elt.children);\n }\n if (elt.props?.children && elt.props.children !== elt.children) {\n rec(elt.props.children);\n }\n }\n });\n };\n rec(children as any);\n}\n\nexport function asArray<T>(x: T[] | T | undefined | null) {\n if (Array.isArray(x)) {\n return x;\n } else if (x == null) {\n return [];\n } else {\n return [x];\n }\n}\n","import { ActionProps } from \"@plasmicapp/host/registerComponent\";\nimport Document from \"@tiptap/extension-document\";\nimport Paragraph from \"@tiptap/extension-paragraph\";\nimport Text from \"@tiptap/extension-text\";\nimport type { Extensions, JSONContent } from \"@tiptap/react\";\nimport { EditorProvider } from \"@tiptap/react\";\nimport { Switch } from \"antd\";\nimport React, { useEffect, useMemo, useRef, useState } from \"react\";\nimport {\n allExtensions,\n TiptapContextProvider,\n useTiptapContext,\n} from \"./contexts\";\nimport { useIsClient } from \"./useIsClient\";\nimport {\n Registerable,\n registerComponentHelper,\n traverseReactEltTree,\n} from \"./utils\";\n\nexport const TIPTAP_COMPONENT_NAME = \"hostless-tiptap\";\n\nexport type TiptapProps = {\n contentHtml?: string;\n defaultContentHtml?: string;\n contentJson?: JSONContent;\n extensions?: React.ReactElement;\n toolbar?: React.ReactElement;\n className: string;\n onChange: (content: JSONContent) => void;\n};\n\nexport function Tiptap(props: TiptapProps) {\n const isClient = useIsClient();\n const [active, setActive] = useState<boolean>(false);\n const [refreshKey, setRefreshKey] = useState(0);\n const activeRef = useRef<boolean>();\n activeRef.current = active;\n\n const {\n extensions,\n contentHtml,\n defaultContentHtml,\n className,\n onChange,\n toolbar,\n } = props;\n const { ...tiptapContext } = useTiptapContext();\n const usedExtensions: Record<string, any> = allExtensions.reduce(\n (acc: any, ext) => {\n if (tiptapContext[ext] !== undefined) {\n acc[ext] = tiptapContext[ext];\n }\n return acc;\n },\n {}\n );\n\n const extensionsProp: Extensions = [\n Document,\n Paragraph,\n Text,\n ...Object.values(usedExtensions),\n ];\n\n // If you try to update the content via the content prop (as opposed to directly typing into the tiptap editor), the new content won't show. So we got to refresh the editor to make the default content appear.\n useEffect(() => {\n if (activeRef.current) return;\n setRefreshKey(Math.random() * 1000000);\n }, [contentHtml]);\n\n if (!isClient) {\n return null;\n }\n\n const css = `\n .tiptap {\n padding: 0;\n outline: none;\n }\n `;\n\n const toolbarProp = toolbar ? (\n <div style={{ display: \"flex\", alignItems: \"center\" }}>{toolbar}</div>\n ) : null;\n\n return (\n <div className={className} style={{ position: \"relative\" }}>\n <EditorProvider\n key={`${extensionsProp.length}${refreshKey}`}\n // extensions={extensionsProp}\n extensions={extensionsProp}\n content={contentHtml || defaultContentHtml}\n onCreate={({ editor }) => {\n onChange(editor.getJSON());\n }}\n onUpdate={({ editor }) => {\n onChange(editor.getJSON());\n }}\n onFocus={() => setActive(true)}\n onBlur={() => setActive(false)}\n slotBefore={toolbarProp}\n // slotAfter={<MyEditorFooter />}\n\n // TODO: HIDE children prop\n children={undefined}\n editorProps={{\n attributes: {\n className,\n },\n }}\n />\n {extensions}\n <style dangerouslySetInnerHTML={{ __html: css }} />\n </div>\n );\n}\n\nexport function TiptapWrapper(props: TiptapProps) {\n return (\n <TiptapContextProvider>\n <Tiptap {...props} />\n </TiptapContextProvider>\n );\n}\n\nexport function AddExtension({\n studioOps,\n componentProps,\n}: ActionProps<TiptapProps>) {\n const usedExtensions: string[] = useMemo(() => {\n const list: string[] = [];\n traverseReactEltTree(componentProps?.extensions, (elt) => {\n const ext = elt?.type?.displayName?.toLowerCase?.();\n if (ext) {\n list.push(ext);\n }\n });\n return list;\n }, [componentProps?.extensions]);\n\n const usedExtensionTools: string[] = useMemo(() => {\n const list: string[] = [];\n traverseReactEltTree(componentProps?.toolbar, (elt) => {\n const ext = elt?.type?.displayName?.toLowerCase?.();\n if (ext && ext.includes(\"toolbar\")) {\n list.push(ext.replace(\"toolbar\", \"\"));\n }\n });\n return list;\n }, [componentProps?.toolbar]);\n\n const handleChange = (extName: string, add: boolean) => {\n if (add) {\n studioOps.appendToSlot(\n {\n type: \"component\",\n name: `${TIPTAP_COMPONENT_NAME}-extension-${extName}`,\n props: {},\n },\n \"extensions\"\n );\n studioOps.appendToSlot(\n {\n type: \"component\",\n name: `${TIPTAP_COMPONENT_NAME}-toolbar-${extName}`,\n props: {},\n },\n \"toolbar\"\n );\n } else {\n const extIndices = usedExtensions.flatMap((ext, i) =>\n ext === extName ? i : []\n );\n extIndices\n .reverse()\n .forEach(\n (i) => i !== -1 && studioOps.removeFromSlotAt(i, \"extensions\")\n );\n\n const toolIndices = usedExtensionTools.flatMap((ext, i) =>\n ext === extName ? i : []\n );\n toolIndices\n .reverse()\n .forEach((i) => i !== -1 && studioOps.removeFromSlotAt(i, \"toolbar\"));\n }\n };\n\n return (\n <div\n style={{\n marginBottom: 10,\n paddingBottom: 10,\n borderBottom: \"1px dashed #ccc\",\n }}\n >\n <p>\n You can add capabilities to Tiptap Rich Text Editor using the tools\n below.\n </p>\n <p>\n To further customize the extensions, find them under the Editor's\n \"extensions\" and \"toolbar\" slots\n </p>\n {allExtensions.map((ext) => (\n <label\n data-test-id={`custom-action-${ext}`}\n style={{\n display: \"flex\",\n justifyContent: \"space-between\",\n marginBottom: 5,\n color: \"#1b1b18\",\n }}\n >\n <span>{ext}</span>\n <Switch\n size=\"small\"\n checked={\n usedExtensions.includes(ext) || usedExtensionTools.includes(ext)\n }\n onChange={(checked) => handleChange(ext, checked)}\n />\n </label>\n ))}\n </div>\n );\n}\n\nexport function registerTiptap(loader?: Registerable) {\n registerComponentHelper(loader, TiptapWrapper, {\n name: TIPTAP_COMPONENT_NAME,\n displayName: \"Tiptap Rich Text Editor\",\n defaultStyles: {\n borderWidth: \"1px\",\n borderStyle: \"solid\",\n borderColor: \"rgb(204,204,204)\",\n borderRadius: \"4px\",\n padding: \"10px\",\n width: \"300px\",\n },\n actions: [\n {\n type: \"custom-action\",\n control: AddExtension,\n },\n ],\n props: {\n contentHtml: {\n type: \"string\",\n displayName: \"HTML Content\",\n editOnly: true,\n uncontrolledProp: \"defaultContentHtml\",\n description: \"Contents of the editor\",\n },\n contentJson: {\n type: \"object\",\n displayName: \"JSON Content\",\n hidden: () => true,\n },\n extensions: {\n type: \"slot\",\n hidePlaceholder: true,\n allowedComponents: allExtensions.map(\n (ext) => `${TIPTAP_COMPONENT_NAME}-extension-${ext}`\n ),\n },\n toolbar: {\n type: \"slot\",\n hidePlaceholder: true,\n allowedComponents: allExtensions.map(\n (ext) => `${TIPTAP_COMPONENT_NAME}-toolbar-${ext}`\n ),\n },\n onChange: {\n type: \"eventHandler\",\n argTypes: [{ name: \"content\", type: \"object\" }],\n },\n },\n states: {\n content: {\n type: \"writable\",\n variableType: \"object\",\n valueProp: \"contentJson\",\n onChangeProp: \"onChange\",\n },\n },\n importName: \"TiptapWrapper\",\n importPath: \"@plasmicpkgs/tiptap/skinny/registerTiptap\",\n });\n}\n"],"names":["React","useState","registerComponent","useRef","Document","Paragraph","Text","useEffect","EditorProvider","useMemo","Switch"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ 'use strict';
2
+
3
+ require('@tiptap/extension-document');
4
+ require('@tiptap/extension-paragraph');
5
+ require('@tiptap/extension-text');
6
+ require('@tiptap/react');
7
+ require('antd');
8
+ require('react');
9
+ var registerTiptap = require('./registerTiptap-fd9bf882.cjs.js');
10
+ require('@plasmicapp/host/registerComponent');
11
+ require('@plasmicapp/host/registerGlobalContext');
12
+
13
+
14
+
15
+ exports.AddExtension = registerTiptap.AddExtension;
16
+ exports.TIPTAP_COMPONENT_NAME = registerTiptap.TIPTAP_COMPONENT_NAME;
17
+ exports.Tiptap = registerTiptap.Tiptap;
18
+ exports.TiptapWrapper = registerTiptap.TiptapWrapper;
19
+ exports.registerTiptap = registerTiptap.registerTiptap;
20
+ //# sourceMappingURL=registerTiptap.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerTiptap.cjs.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,18 @@
1
+ import { ActionProps } from "@plasmicapp/host/registerComponent";
2
+ import type { JSONContent } from "@tiptap/react";
3
+ import React from "react";
4
+ import { Registerable } from "./utils";
5
+ export declare const TIPTAP_COMPONENT_NAME = "hostless-tiptap";
6
+ export type TiptapProps = {
7
+ contentHtml?: string;
8
+ defaultContentHtml?: string;
9
+ contentJson?: JSONContent;
10
+ extensions?: React.ReactElement;
11
+ toolbar?: React.ReactElement;
12
+ className: string;
13
+ onChange: (content: JSONContent) => void;
14
+ };
15
+ export declare function Tiptap(props: TiptapProps): React.JSX.Element | null;
16
+ export declare function TiptapWrapper(props: TiptapProps): React.JSX.Element;
17
+ export declare function AddExtension({ studioOps, componentProps, }: ActionProps<TiptapProps>): React.JSX.Element;
18
+ export declare function registerTiptap(loader?: Registerable): void;
@@ -0,0 +1,10 @@
1
+ import '@tiptap/extension-document';
2
+ import '@tiptap/extension-paragraph';
3
+ import '@tiptap/extension-text';
4
+ import '@tiptap/react';
5
+ import 'antd';
6
+ import 'react';
7
+ export { A as AddExtension, T as TIPTAP_COMPONENT_NAME, a as Tiptap, b as TiptapWrapper, c as registerTiptap } from './registerTiptap-6a2d0bb4.esm.js';
8
+ import '@plasmicapp/host/registerComponent';
9
+ import '@plasmicapp/host/registerGlobalContext';
10
+ //# sourceMappingURL=registerTiptap.esm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerTiptap.esm.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;"}
@@ -0,0 +1,78 @@
1
+ 'use strict';
2
+
3
+ var react = require('@tiptap/react');
4
+ var React = require('react');
5
+ var registerTiptap = require('./registerTiptap-fd9bf882.cjs.js');
6
+ require('@tiptap/extension-document');
7
+ require('@tiptap/extension-paragraph');
8
+ require('@tiptap/extension-text');
9
+ require('antd');
10
+ require('@plasmicapp/host/registerComponent');
11
+ require('@plasmicapp/host/registerGlobalContext');
12
+
13
+ function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
14
+
15
+ var React__default = /*#__PURE__*/_interopDefault(React);
16
+
17
+ function ToolbarBold(props) {
18
+ const { editor } = react.useCurrentEditor();
19
+ const { bold } = registerTiptap.useTiptapContext();
20
+ const { className, children, toolbarBoldScopeClassName } = props;
21
+ if (!editor || !bold)
22
+ return null;
23
+ return /* @__PURE__ */ React__default.default.createElement(
24
+ "div",
25
+ {
26
+ "data-active": editor.isActive("bold") ? true : false,
27
+ className: `${className} ${toolbarBoldScopeClassName}`,
28
+ style: { cursor: "pointer" },
29
+ role: "button",
30
+ onClick: () => editor.chain().focus().toggleMark("bold").run()
31
+ },
32
+ children
33
+ );
34
+ }
35
+ ToolbarBold.displayName = "ToolbarBold";
36
+ function registerToolbarBold(loader) {
37
+ registerTiptap.registerComponentHelper(loader, ToolbarBold, {
38
+ name: `${registerTiptap.TIPTAP_COMPONENT_NAME}-toolbar-bold`,
39
+ displayName: "Tiptap Bold Toolbar Option",
40
+ defaultStyles: {
41
+ width: "hug",
42
+ padding: "5px"
43
+ },
44
+ props: {
45
+ children: {
46
+ type: "slot",
47
+ hidePlaceholder: true,
48
+ defaultValue: [
49
+ {
50
+ type: "img",
51
+ src: "https://static1.plasmic.app/bold.svg"
52
+ }
53
+ ]
54
+ },
55
+ toolbarBoldScopeClassName: {
56
+ type: "styleScopeClass",
57
+ scopeName: "toolbarBold"
58
+ },
59
+ selectedClassName: {
60
+ type: "class",
61
+ displayName: "Tool Selected",
62
+ selectors: [
63
+ {
64
+ selector: ":toolbarBold[data-active=true]",
65
+ label: "Base"
66
+ }
67
+ ]
68
+ }
69
+ },
70
+ importName: "ToolbarBold",
71
+ importPath: "@plasmicpkgs/tiptap/skinny/registerToolbarBold",
72
+ parentComponentName: registerTiptap.TIPTAP_COMPONENT_NAME
73
+ });
74
+ }
75
+
76
+ exports.ToolbarBold = ToolbarBold;
77
+ exports.registerToolbarBold = registerToolbarBold;
78
+ //# sourceMappingURL=registerToolbarBold.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registerToolbarBold.cjs.js","sources":["../src/toolbar/registerToolbarBold.tsx"],"sourcesContent":["import { useCurrentEditor } from \"@tiptap/react\";\nimport React from \"react\";\nimport { useTiptapContext } from \"../contexts\";\nimport { TIPTAP_COMPONENT_NAME } from \"../registerTiptap\";\nimport { Registerable, registerComponentHelper } from \"../utils\";\n\nexport interface ToolbarBoldProps {\n className: string;\n children: React.ReactNode;\n selectedClassName: string;\n toolbarBoldScopeClassName: string;\n}\n\nexport function ToolbarBold(props: ToolbarBoldProps) {\n const { editor } = useCurrentEditor();\n const { bold } = useTiptapContext();\n\n const { className, children, toolbarBoldScopeClassName } = props;\n\n if (!editor || !bold) return null;\n\n return (\n <div\n // data-active attribute is used here to increase the priority/specificity of the selectedClassName prop styles\n data-active={editor.isActive(\"bold\") ? true : false}\n className={`${className} ${toolbarBoldScopeClassName}`}\n style={{ cursor: \"pointer\" }}\n role=\"button\"\n onClick={() => editor.chain().focus().toggleMark(\"bold\").run()}\n >\n {children}\n </div>\n );\n}\nToolbarBold.displayName = \"ToolbarBold\";\n\nexport function registerToolbarBold(loader?: Registerable) {\n registerComponentHelper(loader, ToolbarBold, {\n name: `${TIPTAP_COMPONENT_NAME}-toolbar-bold`,\n displayName: \"Tiptap Bold Toolbar Option\",\n defaultStyles: {\n width: \"hug\",\n padding: \"5px\",\n },\n props: {\n children: {\n type: \"slot\",\n hidePlaceholder: true,\n defaultValue: [\n {\n type: \"img\",\n src: \"https://static1.plasmic.app/bold.svg\",\n },\n ],\n },\n toolbarBoldScopeClassName: {\n type: \"styleScopeClass\",\n scopeName: \"toolbarBold\",\n } as any,\n selectedClassName: {\n type: \"class\",\n displayName: \"Tool Selected\",\n selectors: [\n {\n selector: \":toolbarBold[data-active=true]\",\n label: \"Base\",\n },\n ],\n },\n },\n importName: \"ToolbarBold\",\n importPath: \"@plasmicpkgs/tiptap/skinny/registerToolbarBold\",\n parentComponentName: TIPTAP_COMPONENT_NAME,\n });\n}\n"],"names":["useCurrentEditor","useTiptapContext","React","registerComponentHelper","TIPTAP_COMPONENT_NAME"],"mappings":";;;;;;;;;;;;;;;;AAaO,SAAS,YAAY,KAAyB,EAAA;AACnD,EAAM,MAAA,EAAE,MAAO,EAAA,GAAIA,sBAAiB,EAAA,CAAA;AACpC,EAAM,MAAA,EAAE,IAAK,EAAA,GAAIC,+BAAiB,EAAA,CAAA;AAElC,EAAA,MAAM,EAAE,SAAA,EAAW,QAAU,EAAA,yBAAA,EAA8B,GAAA,KAAA,CAAA;AAE3D,EAAI,IAAA,CAAC,UAAU,CAAC,IAAA;AAAM,IAAO,OAAA,IAAA,CAAA;AAE7B,EACE,uBAAAC,sBAAA,CAAA,aAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MAEC,aAAa,EAAA,MAAA,CAAO,QAAS,CAAA,MAAM,IAAI,IAAO,GAAA,KAAA;AAAA,MAC9C,SAAA,EAAW,GAAG,SAAa,CAAA,CAAA,EAAA,yBAAA,CAAA,CAAA;AAAA,MAC3B,KAAA,EAAO,EAAE,MAAA,EAAQ,SAAU,EAAA;AAAA,MAC3B,IAAK,EAAA,QAAA;AAAA,MACL,OAAA,EAAS,MAAM,MAAA,CAAO,KAAM,EAAA,CAAE,OAAQ,CAAA,UAAA,CAAW,MAAM,CAAA,CAAE,GAAI,EAAA;AAAA,KAAA;AAAA,IAE5D,QAAA;AAAA,GACH,CAAA;AAEJ,CAAA;AACA,WAAA,CAAY,WAAc,GAAA,aAAA,CAAA;AAEnB,SAAS,oBAAoB,MAAuB,EAAA;AACzD,EAAAC,sCAAA,CAAwB,QAAQ,WAAa,EAAA;AAAA,IAC3C,MAAM,CAAG,EAAAC,oCAAA,CAAA,aAAA,CAAA;AAAA,IACT,WAAa,EAAA,4BAAA;AAAA,IACb,aAAe,EAAA;AAAA,MACb,KAAO,EAAA,KAAA;AAAA,MACP,OAAS,EAAA,KAAA;AAAA,KACX;AAAA,IACA,KAAO,EAAA;AAAA,MACL,QAAU,EAAA;AAAA,QACR,IAAM,EAAA,MAAA;AAAA,QACN,eAAiB,EAAA,IAAA;AAAA,QACjB,YAAc,EAAA;AAAA,UACZ;AAAA,YACE,IAAM,EAAA,KAAA;AAAA,YACN,GAAK,EAAA,sCAAA;AAAA,WACP;AAAA,SACF;AAAA,OACF;AAAA,MACA,yBAA2B,EAAA;AAAA,QACzB,IAAM,EAAA,iBAAA;AAAA,QACN,SAAW,EAAA,aAAA;AAAA,OACb;AAAA,MACA,iBAAmB,EAAA;AAAA,QACjB,IAAM,EAAA,OAAA;AAAA,QACN,WAAa,EAAA,eAAA;AAAA,QACb,SAAW,EAAA;AAAA,UACT;AAAA,YACE,QAAU,EAAA,gCAAA;AAAA,YACV,KAAO,EAAA,MAAA;AAAA,WACT;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAAA,IACA,UAAY,EAAA,aAAA;AAAA,IACZ,UAAY,EAAA,gDAAA;AAAA,IACZ,mBAAqB,EAAAA,oCAAA;AAAA,GACtB,CAAA,CAAA;AACH;;;;;"}
@@ -0,0 +1,71 @@
1
+ import { useCurrentEditor } from '@tiptap/react';
2
+ import React from 'react';
3
+ import { u as useTiptapContext, r as registerComponentHelper, T as TIPTAP_COMPONENT_NAME } from './registerTiptap-6a2d0bb4.esm.js';
4
+ import '@tiptap/extension-document';
5
+ import '@tiptap/extension-paragraph';
6
+ import '@tiptap/extension-text';
7
+ import 'antd';
8
+ import '@plasmicapp/host/registerComponent';
9
+ import '@plasmicapp/host/registerGlobalContext';
10
+
11
+ function ToolbarBold(props) {
12
+ const { editor } = useCurrentEditor();
13
+ const { bold } = useTiptapContext();
14
+ const { className, children, toolbarBoldScopeClassName } = props;
15
+ if (!editor || !bold)
16
+ return null;
17
+ return /* @__PURE__ */ React.createElement(
18
+ "div",
19
+ {
20
+ "data-active": editor.isActive("bold") ? true : false,
21
+ className: `${className} ${toolbarBoldScopeClassName}`,
22
+ style: { cursor: "pointer" },
23
+ role: "button",
24
+ onClick: () => editor.chain().focus().toggleMark("bold").run()
25
+ },
26
+ children
27
+ );
28
+ }
29
+ ToolbarBold.displayName = "ToolbarBold";
30
+ function registerToolbarBold(loader) {
31
+ registerComponentHelper(loader, ToolbarBold, {
32
+ name: `${TIPTAP_COMPONENT_NAME}-toolbar-bold`,
33
+ displayName: "Tiptap Bold Toolbar Option",
34
+ defaultStyles: {
35
+ width: "hug",
36
+ padding: "5px"
37
+ },
38
+ props: {
39
+ children: {
40
+ type: "slot",
41
+ hidePlaceholder: true,
42
+ defaultValue: [
43
+ {
44
+ type: "img",
45
+ src: "https://static1.plasmic.app/bold.svg"
46
+ }
47
+ ]
48
+ },
49
+ toolbarBoldScopeClassName: {
50
+ type: "styleScopeClass",
51
+ scopeName: "toolbarBold"
52
+ },
53
+ selectedClassName: {
54
+ type: "class",
55
+ displayName: "Tool Selected",
56
+ selectors: [
57
+ {
58
+ selector: ":toolbarBold[data-active=true]",
59
+ label: "Base"
60
+ }
61
+ ]
62
+ }
63
+ },
64
+ importName: "ToolbarBold",
65
+ importPath: "@plasmicpkgs/tiptap/skinny/registerToolbarBold",
66
+ parentComponentName: TIPTAP_COMPONENT_NAME
67
+ });
68
+ }
69
+
70
+ export { ToolbarBold, registerToolbarBold };
71
+ //# sourceMappingURL=registerToolbarBold.esm.js.map