@jotx-labs/editor 2.4.193 → 2.4.204
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/components/BlockMenu.d.ts.map +1 -1
- package/dist/components/BlockMenu.js +61 -7
- package/dist/components/BlockMenu.js.map +1 -1
- package/dist/components/ButtonNodeView.d.ts +1 -0
- package/dist/components/ButtonNodeView.d.ts.map +1 -1
- package/dist/components/ButtonNodeView.js +34 -13
- package/dist/components/ButtonNodeView.js.map +1 -1
- package/dist/components/ButtonStripNodeView.d.ts +13 -0
- package/dist/components/ButtonStripNodeView.d.ts.map +1 -0
- package/dist/components/ButtonStripNodeView.js +96 -0
- package/dist/components/ButtonStripNodeView.js.map +1 -0
- package/dist/components/ChartNodeView.d.ts.map +1 -1
- package/dist/components/ChartNodeView.js +504 -203
- package/dist/components/ChartNodeView.js.map +1 -1
- package/dist/components/ColumnNodeView.d.ts +6 -0
- package/dist/components/ColumnNodeView.d.ts.map +1 -0
- package/dist/components/ColumnNodeView.js +13 -0
- package/dist/components/ColumnNodeView.js.map +1 -0
- package/dist/components/ColumnsNodeView.d.ts +14 -0
- package/dist/components/ColumnsNodeView.d.ts.map +1 -0
- package/dist/components/ColumnsNodeView.js +122 -0
- package/dist/components/ColumnsNodeView.js.map +1 -0
- package/dist/components/DocumentHeader/DocumentHeader.d.ts.map +1 -1
- package/dist/components/DocumentHeader/DocumentHeader.js +1 -0
- package/dist/components/DocumentHeader/DocumentHeader.js.map +1 -1
- package/dist/components/DocumentHeader/ExportMenu.d.ts +2 -2
- package/dist/components/DocumentHeader/ExportMenu.d.ts.map +1 -1
- package/dist/components/DocumentHeader/ExportMenu.js +129 -9
- package/dist/components/DocumentHeader/ExportMenu.js.map +1 -1
- package/dist/components/JotxEditor.d.ts.map +1 -1
- package/dist/components/JotxEditor.js +52 -0
- package/dist/components/JotxEditor.js.map +1 -1
- package/dist/components/MathNodeView.d.ts.map +1 -1
- package/dist/components/MathNodeView.js +10 -1
- package/dist/components/MathNodeView.js.map +1 -1
- package/dist/components/PresentationToolbar.d.ts +13 -0
- package/dist/components/PresentationToolbar.d.ts.map +1 -0
- package/dist/components/PresentationToolbar.js +14 -0
- package/dist/components/PresentationToolbar.js.map +1 -0
- package/dist/components/PresentationView.d.ts +18 -0
- package/dist/components/PresentationView.d.ts.map +1 -0
- package/dist/components/PresentationView.js +77 -0
- package/dist/components/PresentationView.js.map +1 -0
- package/dist/components/SlashMenu.d.ts.map +1 -1
- package/dist/components/SlashMenu.js +16 -0
- package/dist/components/SlashMenu.js.map +1 -1
- package/dist/components/SlidePropertiesNodeView.d.ts +3 -0
- package/dist/components/SlidePropertiesNodeView.d.ts.map +1 -0
- package/dist/components/SlidePropertiesNodeView.js +87 -0
- package/dist/components/SlidePropertiesNodeView.js.map +1 -0
- package/dist/extensions/ButtonNode.d.ts.map +1 -1
- package/dist/extensions/ButtonNode.js +13 -9
- package/dist/extensions/ButtonNode.js.map +1 -1
- package/dist/extensions/ButtonStripNode.d.ts +8 -0
- package/dist/extensions/ButtonStripNode.d.ts.map +1 -0
- package/dist/extensions/ButtonStripNode.js +51 -0
- package/dist/extensions/ButtonStripNode.js.map +1 -0
- package/dist/extensions/ColumnNode.d.ts +11 -0
- package/dist/extensions/ColumnNode.d.ts.map +1 -0
- package/dist/extensions/ColumnNode.js +46 -0
- package/dist/extensions/ColumnNode.js.map +1 -0
- package/dist/extensions/ColumnsNode.d.ts +7 -0
- package/dist/extensions/ColumnsNode.d.ts.map +1 -0
- package/dist/extensions/ColumnsNode.js +56 -0
- package/dist/extensions/ColumnsNode.js.map +1 -0
- package/dist/extensions/SlideMarkerPlugin.d.ts +9 -0
- package/dist/extensions/SlideMarkerPlugin.d.ts.map +1 -0
- package/dist/extensions/SlideMarkerPlugin.js +78 -0
- package/dist/extensions/SlideMarkerPlugin.js.map +1 -0
- package/dist/extensions/SlidePropertiesNode.d.ts +8 -0
- package/dist/extensions/SlidePropertiesNode.d.ts.map +1 -0
- package/dist/extensions/SlidePropertiesNode.js +74 -0
- package/dist/extensions/SlidePropertiesNode.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -1
- package/dist/index.js.map +1 -1
- package/dist/styles/ButtonStripNodeView.css +134 -0
- package/dist/styles/ChartNodeView.css +9 -1
- package/dist/styles/ColumnsNodeView.css +89 -0
- package/dist/styles/PresentationToolbar.css +65 -0
- package/dist/styles/ReadonlyBlockRenderer.css +5 -5
- package/dist/styles/SlidePropertiesNodeView.css +116 -0
- package/dist/utils/PresentationConverter.d.ts +41 -0
- package/dist/utils/PresentationConverter.d.ts.map +1 -0
- package/dist/utils/PresentationConverter.js +1506 -0
- package/dist/utils/PresentationConverter.js.map +1 -0
- package/package.json +65 -57
- package/src/styles/ButtonStripNodeView.css +134 -0
- package/src/styles/ChartNodeView.css +9 -1
- package/src/styles/ColumnsNodeView.css +89 -0
- package/src/styles/PresentationToolbar.css +65 -0
- package/src/styles/ReadonlyBlockRenderer.css +5 -5
- package/src/styles/SlidePropertiesNodeView.css +116 -0
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SlidePropertiesNodeView = SlidePropertiesNodeView;
|
|
4
|
+
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
|
+
const react_1 = require("react");
|
|
6
|
+
const react_2 = require("@tiptap/react");
|
|
7
|
+
const lucide_react_1 = require("lucide-react");
|
|
8
|
+
require("../styles/SlidePropertiesNodeView.css");
|
|
9
|
+
const THEMES = [
|
|
10
|
+
{ value: 'dark', label: 'Dark', type: '🌙' },
|
|
11
|
+
{ value: 'light', label: 'Light', type: '☀️' },
|
|
12
|
+
{ value: 'corporate', label: 'Corporate', type: '🌙' },
|
|
13
|
+
{ value: 'minimal', label: 'Minimal', type: '☀️' },
|
|
14
|
+
{ value: 'ocean', label: 'Ocean', type: '🌙' },
|
|
15
|
+
{ value: 'sunset', label: 'Sunset', type: '🌙' },
|
|
16
|
+
{ value: 'forest', label: 'Forest', type: '🌙' },
|
|
17
|
+
{ value: 'dracula', label: 'Dracula', type: '🌙' },
|
|
18
|
+
{ value: 'neon', label: 'Neon', type: '🌙' },
|
|
19
|
+
{ value: 'rose', label: 'Rosé', type: '☀️' },
|
|
20
|
+
{ value: 'solarized', label: 'Solarized', type: '☀️' }
|
|
21
|
+
];
|
|
22
|
+
const TRANSITIONS = [
|
|
23
|
+
{ value: 'slide', label: 'Slide' },
|
|
24
|
+
{ value: 'fade', label: 'Fade' },
|
|
25
|
+
{ value: 'convex', label: 'Convex' },
|
|
26
|
+
{ value: 'concave', label: 'Concave' },
|
|
27
|
+
{ value: 'zoom', label: 'Zoom' },
|
|
28
|
+
{ value: 'none', label: 'None' }
|
|
29
|
+
];
|
|
30
|
+
const RATIOS = [
|
|
31
|
+
{ value: '16:9', label: '16:9 (Widescreen)' },
|
|
32
|
+
{ value: '16:10', label: '16:10 (MacBook)' },
|
|
33
|
+
{ value: '4:3', label: '4:3 (Standard)' }
|
|
34
|
+
];
|
|
35
|
+
const FONTS = [
|
|
36
|
+
{ value: 'inter', label: 'Inter — Apple-style' },
|
|
37
|
+
{ value: 'roboto', label: 'Roboto — Google' },
|
|
38
|
+
{ value: 'poppins', label: 'Poppins — Netflix' },
|
|
39
|
+
{ value: 'montserrat', label: 'Montserrat — Elegant' },
|
|
40
|
+
{ value: 'opensans', label: 'Open Sans — Classic' },
|
|
41
|
+
{ value: 'lato', label: 'Lato — Clean' },
|
|
42
|
+
{ value: 'playfair', label: 'Playfair — Editorial' },
|
|
43
|
+
{ value: 'raleway', label: 'Raleway — Airy' },
|
|
44
|
+
{ value: 'outfit', label: 'Outfit — Modern' },
|
|
45
|
+
{ value: 'spacegrotesk', label: 'Space Grotesk — Tech' },
|
|
46
|
+
];
|
|
47
|
+
const LOGO_ALIGNS = [
|
|
48
|
+
{ value: 'left', label: 'Left' },
|
|
49
|
+
{ value: 'right', label: 'Right' }
|
|
50
|
+
];
|
|
51
|
+
// Access vscode API already initialized by App.tsx on window.vscodeApi
|
|
52
|
+
const getVsCodeApi = () => window.vscodeApi || null;
|
|
53
|
+
function SlidePropertiesNodeView({ node, updateAttributes }) {
|
|
54
|
+
const [expanded, setExpanded] = (0, react_1.useState)(true);
|
|
55
|
+
const theme = node?.attrs?.theme || 'dark';
|
|
56
|
+
const transition = node?.attrs?.transition || 'slide';
|
|
57
|
+
const footertext = node?.attrs?.footertext || '';
|
|
58
|
+
const footerlogo = node?.attrs?.footerlogo || '';
|
|
59
|
+
const logoalign = node?.attrs?.logoalign || 'left';
|
|
60
|
+
const ratio = node?.attrs?.ratio || '16:9';
|
|
61
|
+
const fontfamily = node?.attrs?.fontfamily || 'inter';
|
|
62
|
+
const autoanimate = node?.attrs?.autoanimate ?? false;
|
|
63
|
+
const shownumbers = node?.attrs?.shownumbers ?? true;
|
|
64
|
+
// Listen for logo file selection response from extension host
|
|
65
|
+
const handleLogoMessage = (0, react_1.useCallback)((event) => {
|
|
66
|
+
const message = event.data;
|
|
67
|
+
if (message.type === 'logoFileSelected' && message.path) {
|
|
68
|
+
updateAttributes({ footerlogo: message.path });
|
|
69
|
+
}
|
|
70
|
+
}, [updateAttributes]);
|
|
71
|
+
(0, react_1.useEffect)(() => {
|
|
72
|
+
window.addEventListener('message', handleLogoMessage);
|
|
73
|
+
return () => window.removeEventListener('message', handleLogoMessage);
|
|
74
|
+
}, [handleLogoMessage]);
|
|
75
|
+
const handlePickLogo = () => {
|
|
76
|
+
const api = getVsCodeApi();
|
|
77
|
+
if (api) {
|
|
78
|
+
api.postMessage({ type: 'pickLogoFile' });
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
// Get the filename from the path for display
|
|
82
|
+
const logoDisplay = footerlogo
|
|
83
|
+
? footerlogo.split('/').pop() || footerlogo
|
|
84
|
+
: '';
|
|
85
|
+
return ((0, jsx_runtime_1.jsxs)(react_2.NodeViewWrapper, { className: "jotx-slideprops", "data-type": "slideproperties", children: [(0, jsx_runtime_1.jsxs)("div", { className: "jotx-slideprops-header", onClick: () => setExpanded(v => !v), children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Presentation, { size: 16 }), (0, jsx_runtime_1.jsx)("span", { className: "jotx-slideprops-title", children: "Slide Properties" }), expanded ? (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronDown, { size: 14 }) : (0, jsx_runtime_1.jsx)(lucide_react_1.ChevronRight, { size: 14 })] }), expanded && ((0, jsx_runtime_1.jsx)("div", { className: "jotx-slideprops-body", onMouseDown: e => e.stopPropagation(), children: (0, jsx_runtime_1.jsxs)("div", { className: "jotx-slideprops-grid", children: [(0, jsx_runtime_1.jsx)("label", { className: "jotx-slideprops-label", children: "Theme" }), (0, jsx_runtime_1.jsx)("select", { className: "jotx-slideprops-select", value: theme, onChange: e => updateAttributes({ theme: e.target.value }), children: THEMES.map(t => ((0, jsx_runtime_1.jsxs)("option", { value: t.value, children: [t.type, " ", t.label] }, t.value))) }), (0, jsx_runtime_1.jsx)("label", { className: "jotx-slideprops-label", children: "Transition" }), (0, jsx_runtime_1.jsx)("select", { className: "jotx-slideprops-select", value: transition, onChange: e => updateAttributes({ transition: e.target.value }), children: TRANSITIONS.map(t => ((0, jsx_runtime_1.jsx)("option", { value: t.value, children: t.label }, t.value))) }), (0, jsx_runtime_1.jsx)("label", { className: "jotx-slideprops-label", children: "Ratio" }), (0, jsx_runtime_1.jsx)("select", { className: "jotx-slideprops-select", value: ratio, onChange: e => updateAttributes({ ratio: e.target.value }), children: RATIOS.map(r => ((0, jsx_runtime_1.jsx)("option", { value: r.value, children: r.label }, r.value))) }), (0, jsx_runtime_1.jsx)("label", { className: "jotx-slideprops-label", children: "Font" }), (0, jsx_runtime_1.jsx)("select", { className: "jotx-slideprops-select", value: fontfamily, onChange: e => updateAttributes({ fontfamily: e.target.value }), children: FONTS.map(f => ((0, jsx_runtime_1.jsx)("option", { value: f.value, children: f.label }, f.value))) }), (0, jsx_runtime_1.jsx)("label", { className: "jotx-slideprops-label", children: "Footer" }), (0, jsx_runtime_1.jsx)("input", { type: "text", className: "jotx-slideprops-input", placeholder: "Footer text...", value: footertext, onChange: e => updateAttributes({ footertext: e.target.value }) }), (0, jsx_runtime_1.jsx)("label", { className: "jotx-slideprops-label", children: "Logo" }), (0, jsx_runtime_1.jsxs)("div", { className: "jotx-slideprops-logo-row", children: [(0, jsx_runtime_1.jsx)("input", { type: "text", className: "jotx-slideprops-input jotx-slideprops-logo-input", placeholder: "Select a logo image...", value: logoDisplay, readOnly: true, title: footerlogo }), (0, jsx_runtime_1.jsx)("button", { className: "jotx-slideprops-logo-btn", onClick: handlePickLogo, title: "Browse for logo image", children: (0, jsx_runtime_1.jsx)(lucide_react_1.FolderOpen, { size: 14 }) }), footerlogo && ((0, jsx_runtime_1.jsx)("button", { className: "jotx-slideprops-logo-clear", onClick: () => updateAttributes({ footerlogo: '' }), title: "Clear logo", children: "\u00D7" }))] }), footerlogo && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("label", { className: "jotx-slideprops-label", children: "Logo Align" }), (0, jsx_runtime_1.jsx)("select", { className: "jotx-slideprops-select", value: logoalign, onChange: e => updateAttributes({ logoalign: e.target.value }), children: LOGO_ALIGNS.map(a => ((0, jsx_runtime_1.jsx)("option", { value: a.value, children: a.label }, a.value))) })] })), (0, jsx_runtime_1.jsx)("label", { className: "jotx-slideprops-label", children: "Numbers" }), (0, jsx_runtime_1.jsxs)("label", { className: "jotx-slideprops-checkbox-label", children: [(0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: shownumbers, onChange: e => updateAttributes({ shownumbers: e.target.checked }) }), "Show slide numbers"] }), (0, jsx_runtime_1.jsx)("label", { className: "jotx-slideprops-label", children: "Animate" }), (0, jsx_runtime_1.jsxs)("label", { className: "jotx-slideprops-checkbox-label", children: [(0, jsx_runtime_1.jsx)("input", { type: "checkbox", checked: autoanimate, onChange: e => updateAttributes({ autoanimate: e.target.checked }) }), "Animate-in slides"] })] }) }))] }));
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=SlidePropertiesNodeView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlidePropertiesNodeView.js","sourceRoot":"","sources":["../../src/components/SlidePropertiesNodeView.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonNode.d.ts","sourceRoot":"","sources":["../../src/extensions/ButtonNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAA;AAIpD;;;GAGG;AACH,eAAO,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"ButtonNode.d.ts","sourceRoot":"","sources":["../../src/extensions/ButtonNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAA;AAIpD;;;GAGG;AACH,eAAO,MAAM,UAAU,gBAuDrB,CAAA"}
|
|
@@ -11,15 +11,18 @@ const ButtonNodeView_1 = require("../components/ButtonNodeView");
|
|
|
11
11
|
exports.ButtonNode = core_1.Node.create({
|
|
12
12
|
name: 'button',
|
|
13
13
|
group: 'block',
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
atom: true, // Mark as atomic node - ensures onUpdate fires immediately
|
|
15
|
+
isolating: true, // Isolate from surrounding content
|
|
16
16
|
addAttributes() {
|
|
17
17
|
return {
|
|
18
18
|
label: { default: '' },
|
|
19
19
|
link: { default: '' },
|
|
20
20
|
style: { default: 'primary' },
|
|
21
21
|
align: { default: 'left' },
|
|
22
|
-
blockId: { default: null }
|
|
22
|
+
blockId: { default: null },
|
|
23
|
+
// CRITICAL: This attribute starts false and gets set to true on mount
|
|
24
|
+
// This pattern (same as Mermaid/Math's showSource) ensures onUpdate fires
|
|
25
|
+
_initialized: { default: false }
|
|
23
26
|
};
|
|
24
27
|
},
|
|
25
28
|
parseHTML() {
|
|
@@ -39,17 +42,18 @@ exports.ButtonNode = core_1.Node.create({
|
|
|
39
42
|
}
|
|
40
43
|
];
|
|
41
44
|
},
|
|
42
|
-
renderHTML({ HTMLAttributes }) {
|
|
45
|
+
renderHTML({ node, HTMLAttributes }) {
|
|
46
|
+
// Don't use 0 (content hole) for atom nodes - render actual content
|
|
43
47
|
return [
|
|
44
48
|
'div',
|
|
45
49
|
(0, core_1.mergeAttributes)(HTMLAttributes, {
|
|
46
50
|
'data-type': 'button',
|
|
47
|
-
'data-label':
|
|
48
|
-
'data-link':
|
|
49
|
-
'data-style':
|
|
50
|
-
'data-align':
|
|
51
|
+
'data-label': (node.attrs.label || '').toString(),
|
|
52
|
+
'data-link': (node.attrs.link || '').toString(),
|
|
53
|
+
'data-style': (node.attrs.style || 'primary').toString(),
|
|
54
|
+
'data-align': (node.attrs.align || 'left').toString()
|
|
51
55
|
}),
|
|
52
|
-
|
|
56
|
+
['span', { 'data-role': 'button-label' }, (node.attrs.label || 'Button').toString()]
|
|
53
57
|
];
|
|
54
58
|
},
|
|
55
59
|
addNodeView() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonNode.js","sourceRoot":"","sources":["../../src/extensions/ButtonNode.ts"],"names":[],"mappings":";;;AAAA,uCAAoD;AACpD,yCAAqD;AACrD,iEAA6D;AAE7D;;;GAGG;AACU,QAAA,UAAU,GAAG,WAAI,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,QAAQ;IAEd,KAAK,EAAE,OAAO;IACd,
|
|
1
|
+
{"version":3,"file":"ButtonNode.js","sourceRoot":"","sources":["../../src/extensions/ButtonNode.ts"],"names":[],"mappings":";;;AAAA,uCAAoD;AACpD,yCAAqD;AACrD,iEAA6D;AAE7D;;;GAGG;AACU,QAAA,UAAU,GAAG,WAAI,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,QAAQ;IAEd,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,IAAI,EAAQ,2DAA2D;IAC7E,SAAS,EAAE,IAAI,EAAG,mCAAmC;IAErD,aAAa;QACT,OAAO;YACH,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YACtB,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YACrB,KAAK,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;YAC7B,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;YAC1B,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;YAC1B,sEAAsE;YACtE,0EAA0E;YAC1E,YAAY,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;SACnC,CAAA;IACL,CAAC;IAED,SAAS;QACL,OAAO;YACH;gBACI,GAAG,EAAE,yBAAyB;gBAC9B,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;oBACf,IAAI,CAAC,CAAC,IAAI,YAAY,WAAW,CAAC;wBAAE,OAAO,KAAK,CAAA;oBAChD,OAAO;wBACH,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,EAAE;wBAC5C,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE;wBAC1C,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,SAAS;wBACnD,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,MAAM;qBACnD,CAAA;gBACL,CAAC;aACJ;SACJ,CAAA;IACL,CAAC;IAED,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE;QAC/B,oEAAoE;QACpE,OAAO;YACH,KAAK;YACL,IAAA,sBAAe,EAAC,cAAc,EAAE;gBAC5B,WAAW,EAAE,QAAQ;gBACrB,YAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;gBACjD,WAAW,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,QAAQ,EAAE;gBAC/C,YAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC,QAAQ,EAAE;gBACxD,YAAY,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,MAAM,CAAC,CAAC,QAAQ,EAAE;aACxD,CAAC;YACF,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,cAAc,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;SACvF,CAAA;IACL,CAAC;IAED,WAAW;QACP,OAAO,IAAA,6BAAqB,EAAC,+BAAc,CAAC,CAAA;IAChD,CAAC;CACJ,CAAC,CAAA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Node } from '@tiptap/core';
|
|
2
|
+
/**
|
|
3
|
+
* ButtonStrip container node
|
|
4
|
+
* Contains 1-3 button children in a horizontal flex layout
|
|
5
|
+
* Width is distributed equally among buttons with gaps
|
|
6
|
+
*/
|
|
7
|
+
export declare const ButtonStripNode: Node<any, any>;
|
|
8
|
+
//# sourceMappingURL=ButtonStripNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonStripNode.d.ts","sourceRoot":"","sources":["../../src/extensions/ButtonStripNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAA;AAIpD;;;;GAIG;AACH,eAAO,MAAM,eAAe,gBA2C1B,CAAA"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ButtonStripNode = void 0;
|
|
4
|
+
const core_1 = require("@tiptap/core");
|
|
5
|
+
const react_1 = require("@tiptap/react");
|
|
6
|
+
const ButtonStripNodeView_1 = require("../components/ButtonStripNodeView");
|
|
7
|
+
/**
|
|
8
|
+
* ButtonStrip container node
|
|
9
|
+
* Contains 1-3 button children in a horizontal flex layout
|
|
10
|
+
* Width is distributed equally among buttons with gaps
|
|
11
|
+
*/
|
|
12
|
+
exports.ButtonStripNode = core_1.Node.create({
|
|
13
|
+
name: 'buttonstrip',
|
|
14
|
+
group: 'block',
|
|
15
|
+
content: 'button button button', // EXACTLY 3 button children (user requirement)
|
|
16
|
+
defining: true,
|
|
17
|
+
isolating: true, // Treat as single unit for selection/deletion
|
|
18
|
+
draggable: true, // Enable drag handle for the whole strip
|
|
19
|
+
addAttributes() {
|
|
20
|
+
return {
|
|
21
|
+
blockId: {
|
|
22
|
+
default: null
|
|
23
|
+
},
|
|
24
|
+
// Internal flag for initialization (same pattern as button)
|
|
25
|
+
_initialized: {
|
|
26
|
+
default: false
|
|
27
|
+
}
|
|
28
|
+
};
|
|
29
|
+
},
|
|
30
|
+
parseHTML() {
|
|
31
|
+
return [
|
|
32
|
+
{
|
|
33
|
+
tag: 'div[data-type="buttonstrip"]',
|
|
34
|
+
}
|
|
35
|
+
];
|
|
36
|
+
},
|
|
37
|
+
renderHTML({ HTMLAttributes }) {
|
|
38
|
+
return [
|
|
39
|
+
'div',
|
|
40
|
+
(0, core_1.mergeAttributes)(HTMLAttributes, {
|
|
41
|
+
'data-type': 'buttonstrip',
|
|
42
|
+
class: 'buttonstrip-container'
|
|
43
|
+
}),
|
|
44
|
+
0 // Content hole for children
|
|
45
|
+
];
|
|
46
|
+
},
|
|
47
|
+
addNodeView() {
|
|
48
|
+
return (0, react_1.ReactNodeViewRenderer)(ButtonStripNodeView_1.ButtonStripNodeView);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
//# sourceMappingURL=ButtonStripNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonStripNode.js","sourceRoot":"","sources":["../../src/extensions/ButtonStripNode.ts"],"names":[],"mappings":";;;AAAA,uCAAoD;AACpD,yCAAqD;AACrD,2EAAuE;AAEvE;;;;GAIG;AACU,QAAA,eAAe,GAAG,WAAI,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,aAAa;IAEnB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,sBAAsB,EAAG,+CAA+C;IACjF,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI,EAAU,8CAA8C;IACvE,SAAS,EAAE,IAAI,EAAU,yCAAyC;IAElE,aAAa;QACT,OAAO;YACH,OAAO,EAAE;gBACL,OAAO,EAAE,IAAI;aAChB;YACD,4DAA4D;YAC5D,YAAY,EAAE;gBACV,OAAO,EAAE,KAAK;aACjB;SACJ,CAAA;IACL,CAAC;IAED,SAAS;QACL,OAAO;YACH;gBACI,GAAG,EAAE,8BAA8B;aACtC;SACJ,CAAA;IACL,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE;QACzB,OAAO;YACH,KAAK;YACL,IAAA,sBAAe,EAAC,cAAc,EAAE;gBAC5B,WAAW,EAAE,aAAa;gBAC1B,KAAK,EAAE,uBAAuB;aACjC,CAAC;YACF,CAAC,CAAE,4BAA4B;SAClC,CAAA;IACL,CAAC;IAED,WAAW;QACP,OAAO,IAAA,6BAAqB,EAAC,yCAAmB,CAAC,CAAA;IACrD,CAAC;CACJ,CAAC,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { Node } from '@tiptap/core';
|
|
2
|
+
/**
|
|
3
|
+
* Column node - child of Columns
|
|
4
|
+
* Contains block+ content (paragraphs, lists, code, images, etc.)
|
|
5
|
+
*
|
|
6
|
+
* Uses default HTML rendering (no ReactNodeViewRenderer) so ProseMirror
|
|
7
|
+
* manages content natively — this is critical for cursor placement in
|
|
8
|
+
* multi-column layouts.
|
|
9
|
+
*/
|
|
10
|
+
export declare const ColumnNode: Node<any, any>;
|
|
11
|
+
//# sourceMappingURL=ColumnNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnNode.d.ts","sourceRoot":"","sources":["../../src/extensions/ColumnNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAA;AAEpD;;;;;;;GAOG;AACH,eAAO,MAAM,UAAU,gBAoCrB,CAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ColumnNode = void 0;
|
|
4
|
+
const core_1 = require("@tiptap/core");
|
|
5
|
+
/**
|
|
6
|
+
* Column node - child of Columns
|
|
7
|
+
* Contains block+ content (paragraphs, lists, code, images, etc.)
|
|
8
|
+
*
|
|
9
|
+
* Uses default HTML rendering (no ReactNodeViewRenderer) so ProseMirror
|
|
10
|
+
* manages content natively — this is critical for cursor placement in
|
|
11
|
+
* multi-column layouts.
|
|
12
|
+
*/
|
|
13
|
+
exports.ColumnNode = core_1.Node.create({
|
|
14
|
+
name: 'column',
|
|
15
|
+
// NOT in 'block' group - columns are only children of columns container, not standalone
|
|
16
|
+
content: 'block+',
|
|
17
|
+
defining: true,
|
|
18
|
+
selectable: false,
|
|
19
|
+
draggable: false,
|
|
20
|
+
addAttributes() {
|
|
21
|
+
return {
|
|
22
|
+
blockId: {
|
|
23
|
+
default: null
|
|
24
|
+
}
|
|
25
|
+
};
|
|
26
|
+
},
|
|
27
|
+
parseHTML() {
|
|
28
|
+
return [
|
|
29
|
+
{
|
|
30
|
+
tag: 'div[data-type="column"]'
|
|
31
|
+
}
|
|
32
|
+
];
|
|
33
|
+
},
|
|
34
|
+
renderHTML({ HTMLAttributes }) {
|
|
35
|
+
return [
|
|
36
|
+
'div',
|
|
37
|
+
(0, core_1.mergeAttributes)(HTMLAttributes, {
|
|
38
|
+
'data-type': 'column',
|
|
39
|
+
class: 'column-content',
|
|
40
|
+
style: 'padding: 8px; min-height: 40px;'
|
|
41
|
+
}),
|
|
42
|
+
0
|
|
43
|
+
];
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=ColumnNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnNode.js","sourceRoot":"","sources":["../../src/extensions/ColumnNode.ts"],"names":[],"mappings":";;;AAAA,uCAAoD;AAEpD;;;;;;;GAOG;AACU,QAAA,UAAU,GAAG,WAAI,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,QAAQ;IAEd,wFAAwF;IACxF,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,IAAI;IACd,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE,KAAK;IAEhB,aAAa;QACT,OAAO;YACH,OAAO,EAAE;gBACL,OAAO,EAAE,IAAI;aAChB;SACJ,CAAA;IACL,CAAC;IAED,SAAS;QACL,OAAO;YACH;gBACI,GAAG,EAAE,yBAAyB;aACjC;SACJ,CAAA;IACL,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE;QACzB,OAAO;YACH,KAAK;YACL,IAAA,sBAAe,EAAC,cAAc,EAAE;gBAC5B,WAAW,EAAE,QAAQ;gBACrB,KAAK,EAAE,gBAAgB;gBACvB,KAAK,EAAE,iCAAiC;aAC3C,CAAC;YACF,CAAC;SACJ,CAAA;IACL,CAAC;CACJ,CAAC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnsNode.d.ts","sourceRoot":"","sources":["../../src/extensions/ColumnsNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAA;AAIpD;;;GAGG;AACH,eAAO,MAAM,WAAW,gBAgDtB,CAAA"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ColumnsNode = void 0;
|
|
4
|
+
const core_1 = require("@tiptap/core");
|
|
5
|
+
const react_1 = require("@tiptap/react");
|
|
6
|
+
const ColumnsNodeView_1 = require("../components/ColumnsNodeView");
|
|
7
|
+
/**
|
|
8
|
+
* Columns container node
|
|
9
|
+
* Contains column children in a CSS grid layout (1-4 columns)
|
|
10
|
+
*/
|
|
11
|
+
exports.ColumnsNode = core_1.Node.create({
|
|
12
|
+
name: 'columns',
|
|
13
|
+
group: 'block',
|
|
14
|
+
content: 'column+',
|
|
15
|
+
defining: true,
|
|
16
|
+
isolating: true,
|
|
17
|
+
draggable: true,
|
|
18
|
+
addAttributes() {
|
|
19
|
+
return {
|
|
20
|
+
cols: {
|
|
21
|
+
default: 2
|
|
22
|
+
},
|
|
23
|
+
blockId: {
|
|
24
|
+
default: null
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
},
|
|
28
|
+
parseHTML() {
|
|
29
|
+
return [
|
|
30
|
+
{
|
|
31
|
+
tag: 'div[data-type="columns"]',
|
|
32
|
+
getAttrs: (node) => {
|
|
33
|
+
if (!(node instanceof HTMLElement))
|
|
34
|
+
return false;
|
|
35
|
+
return {
|
|
36
|
+
cols: parseInt(node.getAttribute('data-cols') || '2') || 2
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
];
|
|
41
|
+
},
|
|
42
|
+
renderHTML({ HTMLAttributes }) {
|
|
43
|
+
return [
|
|
44
|
+
'div',
|
|
45
|
+
(0, core_1.mergeAttributes)(HTMLAttributes, {
|
|
46
|
+
'data-type': 'columns',
|
|
47
|
+
'data-cols': HTMLAttributes.cols || 2
|
|
48
|
+
}),
|
|
49
|
+
0
|
|
50
|
+
];
|
|
51
|
+
},
|
|
52
|
+
addNodeView() {
|
|
53
|
+
return (0, react_1.ReactNodeViewRenderer)(ColumnsNodeView_1.ColumnsNodeView);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
//# sourceMappingURL=ColumnsNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ColumnsNode.js","sourceRoot":"","sources":["../../src/extensions/ColumnsNode.ts"],"names":[],"mappings":";;;AAAA,uCAAoD;AACpD,yCAAqD;AACrD,mEAA+D;AAE/D;;;GAGG;AACU,QAAA,WAAW,GAAG,WAAI,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,SAAS;IAEf,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,SAAS,EAAE,IAAI;IAEf,aAAa;QACT,OAAO;YACH,IAAI,EAAE;gBACF,OAAO,EAAE,CAAC;aACb;YACD,OAAO,EAAE;gBACL,OAAO,EAAE,IAAI;aAChB;SACJ,CAAA;IACL,CAAC;IAED,SAAS;QACL,OAAO;YACH;gBACI,GAAG,EAAE,0BAA0B;gBAC/B,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;oBACf,IAAI,CAAC,CAAC,IAAI,YAAY,WAAW,CAAC;wBAAE,OAAO,KAAK,CAAA;oBAChD,OAAO;wBACH,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC;qBAC7D,CAAA;gBACL,CAAC;aACJ;SACJ,CAAA;IACL,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE;QACzB,OAAO;YACH,KAAK;YACL,IAAA,sBAAe,EAAC,cAAc,EAAE;gBAC5B,WAAW,EAAE,SAAS;gBACtB,WAAW,EAAE,cAAc,CAAC,IAAI,IAAI,CAAC;aACxC,CAAC;YACF,CAAC;SACJ,CAAA;IACL,CAAC;IAED,WAAW;QACP,OAAO,IAAA,6BAAqB,EAAC,iCAAe,CAAC,CAAA;IACjD,CAAC;CACJ,CAAC,CAAA"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { PluginKey } from '@tiptap/pm/state';
|
|
2
|
+
import { Extension } from '@tiptap/core';
|
|
3
|
+
/**
|
|
4
|
+
* SlideMarkerPlugin — shows inline "━ Slide N ━" decorations
|
|
5
|
+
* at H1 headings and divider nodes when the document is in presentation mode.
|
|
6
|
+
*/
|
|
7
|
+
export declare const slideMarkerPluginKey: PluginKey<any>;
|
|
8
|
+
export declare const SlideMarkerPlugin: Extension<any, any>;
|
|
9
|
+
//# sourceMappingURL=SlideMarkerPlugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlideMarkerPlugin.d.ts","sourceRoot":"","sources":["../../src/extensions/SlideMarkerPlugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEpD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC;;;GAGG;AACH,eAAO,MAAM,oBAAoB,gBAA+B,CAAA;AAyChE,eAAO,MAAM,iBAAiB,qBAiC5B,CAAA"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SlideMarkerPlugin = exports.slideMarkerPluginKey = void 0;
|
|
4
|
+
const state_1 = require("@tiptap/pm/state");
|
|
5
|
+
const view_1 = require("@tiptap/pm/view");
|
|
6
|
+
const core_1 = require("@tiptap/core");
|
|
7
|
+
/**
|
|
8
|
+
* SlideMarkerPlugin — shows inline "━ Slide N ━" decorations
|
|
9
|
+
* at H1 headings and divider nodes when the document is in presentation mode.
|
|
10
|
+
*/
|
|
11
|
+
exports.slideMarkerPluginKey = new state_1.PluginKey('slideMarker');
|
|
12
|
+
function createSlideMarkers(doc, isPresentation) {
|
|
13
|
+
if (!isPresentation)
|
|
14
|
+
return view_1.DecorationSet.empty;
|
|
15
|
+
const decorations = [];
|
|
16
|
+
let slideNumber = 0;
|
|
17
|
+
doc.descendants((node, pos) => {
|
|
18
|
+
// H1 heading = new slide
|
|
19
|
+
if (node.type.name === 'heading' && node.attrs?.level === 1) {
|
|
20
|
+
slideNumber++;
|
|
21
|
+
const widget = view_1.Decoration.widget(pos, () => {
|
|
22
|
+
const el = document.createElement('div');
|
|
23
|
+
el.className = 'jotx-slide-marker';
|
|
24
|
+
el.setAttribute('contenteditable', 'false');
|
|
25
|
+
el.textContent = `━━━━ Slide ${slideNumber} ━━━━`;
|
|
26
|
+
return el;
|
|
27
|
+
}, { side: -1, key: `slide-${slideNumber}` });
|
|
28
|
+
decorations.push(widget);
|
|
29
|
+
}
|
|
30
|
+
// Divider = explicit slide break
|
|
31
|
+
if (node.type.name === 'divider') {
|
|
32
|
+
slideNumber++;
|
|
33
|
+
const widget = view_1.Decoration.widget(pos, () => {
|
|
34
|
+
const el = document.createElement('div');
|
|
35
|
+
el.className = 'jotx-slide-marker jotx-slide-marker-break';
|
|
36
|
+
el.setAttribute('contenteditable', 'false');
|
|
37
|
+
el.textContent = `━━━━ Slide ${slideNumber} ━━━━`;
|
|
38
|
+
return el;
|
|
39
|
+
}, { side: -1, key: `slide-break-${slideNumber}` });
|
|
40
|
+
decorations.push(widget);
|
|
41
|
+
}
|
|
42
|
+
return true; // Continue traversal
|
|
43
|
+
});
|
|
44
|
+
return view_1.DecorationSet.create(doc, decorations);
|
|
45
|
+
}
|
|
46
|
+
exports.SlideMarkerPlugin = core_1.Extension.create({
|
|
47
|
+
name: 'slideMarker',
|
|
48
|
+
addStorage() {
|
|
49
|
+
return {
|
|
50
|
+
isPresentation: false
|
|
51
|
+
};
|
|
52
|
+
},
|
|
53
|
+
addProseMirrorPlugins() {
|
|
54
|
+
const storage = this.storage;
|
|
55
|
+
return [
|
|
56
|
+
new state_1.Plugin({
|
|
57
|
+
key: exports.slideMarkerPluginKey,
|
|
58
|
+
state: {
|
|
59
|
+
init(_, { doc }) {
|
|
60
|
+
return createSlideMarkers(doc, storage.isPresentation);
|
|
61
|
+
},
|
|
62
|
+
apply(tr, oldSet) {
|
|
63
|
+
if (tr.docChanged || tr.getMeta(exports.slideMarkerPluginKey)) {
|
|
64
|
+
return createSlideMarkers(tr.doc, storage.isPresentation);
|
|
65
|
+
}
|
|
66
|
+
return oldSet.map(tr.mapping, tr.doc);
|
|
67
|
+
}
|
|
68
|
+
},
|
|
69
|
+
props: {
|
|
70
|
+
decorations(state) {
|
|
71
|
+
return this.getState(state);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
})
|
|
75
|
+
];
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
//# sourceMappingURL=SlideMarkerPlugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlideMarkerPlugin.js","sourceRoot":"","sources":["../../src/extensions/SlideMarkerPlugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Node } from '@tiptap/core';
|
|
2
|
+
/**
|
|
3
|
+
* SlideProperties node — presentation configuration block
|
|
4
|
+
* Stores theme, transition, footer, and display settings for Presentation Mode.
|
|
5
|
+
* Renders as a collapsible config panel at the top of the document.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SlidePropertiesNode: Node<any, any>;
|
|
8
|
+
//# sourceMappingURL=SlidePropertiesNode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlidePropertiesNode.d.ts","sourceRoot":"","sources":["../../src/extensions/SlidePropertiesNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAA;AAIpD;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,gBAiE9B,CAAA"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SlidePropertiesNode = void 0;
|
|
4
|
+
const core_1 = require("@tiptap/core");
|
|
5
|
+
const react_1 = require("@tiptap/react");
|
|
6
|
+
const SlidePropertiesNodeView_1 = require("../components/SlidePropertiesNodeView");
|
|
7
|
+
/**
|
|
8
|
+
* SlideProperties node — presentation configuration block
|
|
9
|
+
* Stores theme, transition, footer, and display settings for Presentation Mode.
|
|
10
|
+
* Renders as a collapsible config panel at the top of the document.
|
|
11
|
+
*/
|
|
12
|
+
exports.SlidePropertiesNode = core_1.Node.create({
|
|
13
|
+
name: 'slideproperties',
|
|
14
|
+
group: 'block',
|
|
15
|
+
atom: true,
|
|
16
|
+
draggable: true,
|
|
17
|
+
addAttributes() {
|
|
18
|
+
return {
|
|
19
|
+
theme: { default: 'dark' },
|
|
20
|
+
transition: { default: 'slide' },
|
|
21
|
+
footertext: { default: '' },
|
|
22
|
+
footerlogo: { default: '' },
|
|
23
|
+
logoalign: { default: 'left' },
|
|
24
|
+
ratio: { default: '16:9' },
|
|
25
|
+
fontfamily: { default: 'inter' },
|
|
26
|
+
autoanimate: { default: false },
|
|
27
|
+
shownumbers: { default: true },
|
|
28
|
+
blockId: { default: null }
|
|
29
|
+
};
|
|
30
|
+
},
|
|
31
|
+
parseHTML() {
|
|
32
|
+
return [
|
|
33
|
+
{
|
|
34
|
+
tag: 'div[data-type="slideproperties"]',
|
|
35
|
+
getAttrs: (node) => {
|
|
36
|
+
if (!(node instanceof HTMLElement))
|
|
37
|
+
return false;
|
|
38
|
+
return {
|
|
39
|
+
theme: node.getAttribute('data-theme') || 'dark',
|
|
40
|
+
transition: node.getAttribute('data-transition') || 'slide',
|
|
41
|
+
footertext: node.getAttribute('data-footertext') || '',
|
|
42
|
+
footerlogo: node.getAttribute('data-footerlogo') || '',
|
|
43
|
+
logoalign: node.getAttribute('data-logoalign') || 'left',
|
|
44
|
+
ratio: node.getAttribute('data-ratio') || '16:9',
|
|
45
|
+
fontfamily: node.getAttribute('data-fontfamily') || 'inter',
|
|
46
|
+
autoanimate: node.getAttribute('data-autoanimate') === 'true',
|
|
47
|
+
shownumbers: node.getAttribute('data-shownumbers') !== 'false'
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
];
|
|
52
|
+
},
|
|
53
|
+
renderHTML({ HTMLAttributes }) {
|
|
54
|
+
return [
|
|
55
|
+
'div',
|
|
56
|
+
(0, core_1.mergeAttributes)(HTMLAttributes, {
|
|
57
|
+
'data-type': 'slideproperties',
|
|
58
|
+
'data-theme': HTMLAttributes.theme || 'dark',
|
|
59
|
+
'data-transition': HTMLAttributes.transition || 'slide',
|
|
60
|
+
'data-footertext': HTMLAttributes.footertext || '',
|
|
61
|
+
'data-footerlogo': HTMLAttributes.footerlogo || '',
|
|
62
|
+
'data-logoalign': HTMLAttributes.logoalign || 'left',
|
|
63
|
+
'data-ratio': HTMLAttributes.ratio || '16:9',
|
|
64
|
+
'data-fontfamily': HTMLAttributes.fontfamily || 'inter',
|
|
65
|
+
'data-autoanimate': String(HTMLAttributes.autoanimate ?? false),
|
|
66
|
+
'data-shownumbers': String(HTMLAttributes.shownumbers ?? true)
|
|
67
|
+
})
|
|
68
|
+
];
|
|
69
|
+
},
|
|
70
|
+
addNodeView() {
|
|
71
|
+
return (0, react_1.ReactNodeViewRenderer)(SlidePropertiesNodeView_1.SlidePropertiesNodeView);
|
|
72
|
+
}
|
|
73
|
+
});
|
|
74
|
+
//# sourceMappingURL=SlidePropertiesNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SlidePropertiesNode.js","sourceRoot":"","sources":["../../src/extensions/SlidePropertiesNode.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -63,4 +63,10 @@ export { ViewOptions } from './components/DocumentHeader/ViewOptions';
|
|
|
63
63
|
export { JotxLogo } from './components/Brand/JotxLogo';
|
|
64
64
|
export { GraphView, type GraphViewProps, type GraphData } from './components/GraphView/GraphView';
|
|
65
65
|
export { EditorRibbon, type EditorRibbonProps, type EditorContext } from './components/EditorRibbon';
|
|
66
|
+
export { SlidePropertiesNode } from './extensions/SlidePropertiesNode';
|
|
67
|
+
export { SlideMarkerPlugin, slideMarkerPluginKey } from './extensions/SlideMarkerPlugin';
|
|
68
|
+
export { SlidePropertiesNodeView } from './components/SlidePropertiesNodeView';
|
|
69
|
+
export { PresentationToolbar } from './components/PresentationToolbar';
|
|
70
|
+
export { PresentationView } from './components/PresentationView';
|
|
71
|
+
export { splitDocIntoSlides, countSlides, generateRevealHTML, type SlidePropertiesAttrs, type Slide } from './utils/PresentationConverter';
|
|
66
72
|
//# 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":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|