@jotx-labs/editor 2.4.138 → 2.4.140

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 (57) hide show
  1. package/dist/components/Brand/JotxLogo.d.ts +9 -0
  2. package/dist/components/Brand/JotxLogo.d.ts.map +1 -0
  3. package/dist/components/Brand/JotxLogo.js +11 -0
  4. package/dist/components/Brand/JotxLogo.js.map +1 -0
  5. package/dist/components/DocumentHeader/DocumentHeader.d.ts +21 -0
  6. package/dist/components/DocumentHeader/DocumentHeader.d.ts.map +1 -0
  7. package/dist/components/DocumentHeader/DocumentHeader.js +83 -0
  8. package/dist/components/DocumentHeader/DocumentHeader.js.map +1 -0
  9. package/dist/components/DocumentHeader/ExportMenu.d.ts +11 -0
  10. package/dist/components/DocumentHeader/ExportMenu.d.ts.map +1 -0
  11. package/dist/components/DocumentHeader/ExportMenu.js +244 -0
  12. package/dist/components/DocumentHeader/ExportMenu.js.map +1 -0
  13. package/dist/components/DocumentHeader/ViewOptions.d.ts +6 -0
  14. package/dist/components/DocumentHeader/ViewOptions.d.ts.map +1 -0
  15. package/dist/components/DocumentHeader/ViewOptions.js +73 -0
  16. package/dist/components/DocumentHeader/ViewOptions.js.map +1 -0
  17. package/dist/components/GraphView/GraphView.d.ts +33 -0
  18. package/dist/components/GraphView/GraphView.d.ts.map +1 -0
  19. package/dist/components/GraphView/GraphView.js +234 -0
  20. package/dist/components/GraphView/GraphView.js.map +1 -0
  21. package/dist/extensions/ButtonNode 2.js +59 -0
  22. package/dist/extensions/ButtonNode.d 2.ts +7 -0
  23. package/dist/extensions/ButtonNode.d.ts 2.map +1 -0
  24. package/dist/extensions/ButtonNode.js 2.map +1 -0
  25. package/dist/extensions/CardNode 2.js +64 -0
  26. package/dist/extensions/CardNode.d 2.ts +7 -0
  27. package/dist/extensions/CardNode.d.ts 2.map +1 -0
  28. package/dist/extensions/CardNode.js 2.map +1 -0
  29. package/dist/extensions/GridCardNode.d 2.ts +7 -0
  30. package/dist/extensions/GridCardNode.d.ts 2.map +1 -0
  31. package/dist/extensions/GridCardNode.js 2.map +1 -0
  32. package/dist/extensions/ImageNode.d.ts 2.map +1 -0
  33. package/dist/extensions/LinkNode.js 2.map +1 -0
  34. package/dist/extensions/SearchExtension.d 2.ts +40 -0
  35. package/dist/extensions/SearchExtension.d.ts 2.map +1 -0
  36. package/dist/extensions/SearchExtension.js 2.map +1 -0
  37. package/dist/extensions/SectionNode 2.js +58 -0
  38. package/dist/extensions/SectionNode.d 2.ts +11 -0
  39. package/dist/extensions/SectionNode.d.ts 2.map +1 -0
  40. package/dist/extensions/SectionNode.js 2.map +1 -0
  41. package/dist/extensions/ToggleNode 2.js +58 -0
  42. package/dist/extensions/ToggleNode.d 2.ts +11 -0
  43. package/dist/extensions/ToggleNode.d.ts 2.map +1 -0
  44. package/dist/extensions/ToggleNode.js 2.map +1 -0
  45. package/dist/index 2.js +128 -0
  46. package/dist/index.d 2.ts +59 -0
  47. package/dist/index.d.ts +5 -0
  48. package/dist/index.d.ts 2.map +1 -0
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +13 -1
  51. package/dist/index.js 2.map +1 -0
  52. package/dist/index.js.map +1 -1
  53. package/dist/styles/DocumentHeader.css +294 -0
  54. package/dist/styles/GraphView.css +220 -0
  55. package/package.json +6 -5
  56. package/src/styles/DocumentHeader.css +294 -0
  57. package/src/styles/GraphView.css +220 -0
@@ -0,0 +1,234 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.GraphView = GraphView;
37
+ const jsx_runtime_1 = require("react/jsx-runtime");
38
+ /**
39
+ * GraphView - D3.js Force-Directed Knowledge Graph Visualization
40
+ * Browser-based component for web application
41
+ */
42
+ const react_1 = require("react");
43
+ const d3 = __importStar(require("d3"));
44
+ const lucide_react_1 = require("lucide-react");
45
+ require("./GraphView.css");
46
+ // Color palette matching VS Code extension
47
+ const COLORS = {
48
+ root: '#FF0000',
49
+ document: '#5B9BD5',
50
+ jotx: '#5B9BD5',
51
+ orphan: '#888888',
52
+ heading: '#9B59B6',
53
+ section: '#27AE60',
54
+ code: '#E74C3C',
55
+ mermaid: '#9C27B0',
56
+ chart: '#FF6B6B',
57
+ math: '#FFD700',
58
+ table: '#32CD32',
59
+ properties: '#BA55D3',
60
+ jotxlink: '#FF69B4',
61
+ block: '#95A5A6'
62
+ };
63
+ function GraphView({ isOpen, onClose, focusedDocumentPath, graphData, stats: propStats }) {
64
+ const containerRef = (0, react_1.useRef)(null);
65
+ const svgRef = (0, react_1.useRef)(null);
66
+ const [selectedNode, setSelectedNode] = (0, react_1.useState)(null);
67
+ const stats = propStats || { documents: 0, blocks: 0, edges: 0 };
68
+ const simulationRef = (0, react_1.useRef)(null);
69
+ const zoomRef = (0, react_1.useRef)(null);
70
+ const getNodeColor = (0, react_1.useCallback)((node) => {
71
+ const isRoot = node.metadata?.type === 'root';
72
+ if (isRoot)
73
+ return COLORS.root;
74
+ if (node.type === 'document' || node.nodeKind === 'jotx')
75
+ return COLORS.document;
76
+ return COLORS[node.nodeKind] || COLORS.block;
77
+ }, []);
78
+ const renderGraph = (0, react_1.useCallback)((data, width, height) => {
79
+ if (!svgRef.current)
80
+ return;
81
+ const svg = d3.select(svgRef.current);
82
+ svg.selectAll('*').remove();
83
+ // Prepare nodes
84
+ const nodes = data.nodes.map(node => {
85
+ const isRoot = node.metadata?.type === 'root';
86
+ const isJotx = node.nodeKind === 'jotx' || node.type === 'document';
87
+ let radius = 6;
88
+ if (isRoot)
89
+ radius = 14;
90
+ else if (isJotx)
91
+ radius = 10;
92
+ return {
93
+ ...node,
94
+ color: getNodeColor(node),
95
+ radius,
96
+ x: Math.random() * width,
97
+ y: Math.random() * height
98
+ };
99
+ });
100
+ // Prepare links
101
+ const links = data.edges.map(edge => ({
102
+ source: edge.source,
103
+ target: edge.target,
104
+ type: edge.type
105
+ }));
106
+ // Create zoom behavior
107
+ const zoom = d3.zoom()
108
+ .scaleExtent([0.1, 10])
109
+ .on('zoom', (event) => {
110
+ g.attr('transform', event.transform.toString());
111
+ });
112
+ zoomRef.current = zoom;
113
+ svg.call(zoom);
114
+ // Create main group
115
+ const g = svg.append('g');
116
+ // Arrow marker
117
+ const defs = svg.append('defs');
118
+ defs.append('marker')
119
+ .attr('id', 'arrow')
120
+ .attr('viewBox', '0 -5 10 10')
121
+ .attr('refX', 15)
122
+ .attr('refY', 0)
123
+ .attr('markerWidth', 6)
124
+ .attr('markerHeight', 6)
125
+ .attr('orient', 'auto')
126
+ .append('path')
127
+ .attr('d', 'M0,-5L10,0L0,5')
128
+ .attr('fill', '#999');
129
+ // Create simulation
130
+ const simulation = d3.forceSimulation(nodes)
131
+ .force('link', d3.forceLink(links).id(d => d.id).distance(50))
132
+ .force('charge', d3.forceManyBody().strength(-100))
133
+ .force('center', d3.forceCenter(width / 2, height / 2))
134
+ .force('collision', d3.forceCollide().radius(10));
135
+ simulationRef.current = simulation;
136
+ // Create links
137
+ const link = g.append('g')
138
+ .selectAll('line')
139
+ .data(links)
140
+ .enter().append('line')
141
+ .attr('stroke', d => d.type === 'parent-child' ? '#666666' : '#FF6B6B')
142
+ .attr('stroke-opacity', 0.6)
143
+ .attr('stroke-width', d => d.type === 'reference' ? 3 : 2)
144
+ .attr('marker-end', 'url(#arrow)');
145
+ // Create nodes
146
+ const node = g.append('g')
147
+ .selectAll('circle')
148
+ .data(nodes)
149
+ .enter().append('circle')
150
+ .attr('r', d => d.radius)
151
+ .attr('fill', d => d.color)
152
+ .style('cursor', 'pointer')
153
+ .on('click', (event, d) => {
154
+ event.stopPropagation();
155
+ setSelectedNode(d);
156
+ })
157
+ .call(d3.drag()
158
+ .on('start', (event, d) => {
159
+ if (!event.active)
160
+ simulation.alphaTarget(0.3).restart();
161
+ d.fx = d.x;
162
+ d.fy = d.y;
163
+ })
164
+ .on('drag', (event, d) => {
165
+ d.fx = event.x;
166
+ d.fy = event.y;
167
+ })
168
+ .on('end', (event, d) => {
169
+ if (!event.active)
170
+ simulation.alphaTarget(0);
171
+ d.fx = null;
172
+ d.fy = null;
173
+ }));
174
+ // Create labels
175
+ const label = g.append('g')
176
+ .selectAll('text')
177
+ .data(nodes)
178
+ .enter().append('text')
179
+ .text(d => d.label)
180
+ .attr('font-size', '10px')
181
+ .attr('dx', 8)
182
+ .attr('dy', 3)
183
+ .attr('fill', '#ccc')
184
+ .style('pointer-events', 'none');
185
+ // Update positions
186
+ simulation.on('tick', () => {
187
+ link
188
+ .attr('x1', d => d.source.x || 0)
189
+ .attr('y1', d => d.source.y || 0)
190
+ .attr('x2', d => d.target.x || 0)
191
+ .attr('y2', d => d.target.y || 0);
192
+ node
193
+ .attr('cx', d => d.x || 0)
194
+ .attr('cy', d => d.y || 0);
195
+ label
196
+ .attr('x', d => d.x || 0)
197
+ .attr('y', d => d.y || 0);
198
+ });
199
+ // Click background to deselect
200
+ svg.on('click', () => setSelectedNode(null));
201
+ }, [getNodeColor]);
202
+ // Removed indexing logic - platform provides pre-indexed data via graphData prop
203
+ (0, react_1.useEffect)(() => {
204
+ if (!isOpen || !containerRef.current || !svgRef.current || !graphData)
205
+ return;
206
+ const width = containerRef.current.clientWidth;
207
+ const height = containerRef.current.clientHeight;
208
+ renderGraph(graphData, width, height);
209
+ return () => {
210
+ if (simulationRef.current) {
211
+ simulationRef.current.stop();
212
+ }
213
+ };
214
+ }, [isOpen, graphData, renderGraph]);
215
+ const handleZoomIn = () => {
216
+ if (svgRef.current && zoomRef.current) {
217
+ d3.select(svgRef.current).transition().call(zoomRef.current.scaleBy, 1.5);
218
+ }
219
+ };
220
+ const handleZoomOut = () => {
221
+ if (svgRef.current && zoomRef.current) {
222
+ d3.select(svgRef.current).transition().call(zoomRef.current.scaleBy, 0.67);
223
+ }
224
+ };
225
+ const handleFitView = () => {
226
+ if (svgRef.current && zoomRef.current) {
227
+ d3.select(svgRef.current).transition().call(zoomRef.current.transform, d3.zoomIdentity);
228
+ }
229
+ };
230
+ if (!isOpen)
231
+ return null;
232
+ return ((0, jsx_runtime_1.jsx)("div", { className: "graph-view-overlay", children: (0, jsx_runtime_1.jsxs)("div", { className: "graph-view-container", children: [(0, jsx_runtime_1.jsxs)("div", { className: "graph-view-header", children: [(0, jsx_runtime_1.jsxs)("div", { className: "graph-view-title", children: [(0, jsx_runtime_1.jsx)("span", { className: "graph-icon", children: "\uD83D\uDD17" }), (0, jsx_runtime_1.jsx)("h2", { children: "Knowledge Graph" }), (0, jsx_runtime_1.jsxs)("span", { className: "graph-stats", children: [stats.documents, " docs \u00B7 ", stats.blocks, " blocks \u00B7 ", stats.edges, " links"] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "graph-view-controls", children: [(0, jsx_runtime_1.jsx)("button", { onClick: handleZoomIn, title: "Zoom In", children: (0, jsx_runtime_1.jsx)(lucide_react_1.ZoomIn, { size: 18 }) }), (0, jsx_runtime_1.jsx)("button", { onClick: handleZoomOut, title: "Zoom Out", children: (0, jsx_runtime_1.jsx)(lucide_react_1.ZoomOut, { size: 18 }) }), (0, jsx_runtime_1.jsx)("button", { onClick: handleFitView, title: "Fit View", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Maximize2, { size: 18 }) }), (0, jsx_runtime_1.jsx)("button", { onClick: onClose, title: "Close", children: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { size: 18 }) })] })] }), (0, jsx_runtime_1.jsxs)("div", { ref: containerRef, className: "graph-view-content", children: [(0, jsx_runtime_1.jsx)("svg", { ref: svgRef, width: "100%", height: "100%" }), (0, jsx_runtime_1.jsxs)("div", { className: "graph-legend", children: [(0, jsx_runtime_1.jsx)("div", { className: "legend-title", children: "Legend" }), (0, jsx_runtime_1.jsxs)("div", { className: "legend-item", children: [(0, jsx_runtime_1.jsx)("span", { className: "legend-dot", style: { background: COLORS.root, width: 14, height: 14 } }), "Root"] }), (0, jsx_runtime_1.jsxs)("div", { className: "legend-item", children: [(0, jsx_runtime_1.jsx)("span", { className: "legend-dot", style: { background: COLORS.document, width: 10, height: 10 } }), "Document"] }), (0, jsx_runtime_1.jsxs)("div", { className: "legend-item", children: [(0, jsx_runtime_1.jsx)("span", { className: "legend-dot", style: { background: COLORS.mermaid } }), "Mermaid"] }), (0, jsx_runtime_1.jsxs)("div", { className: "legend-item", children: [(0, jsx_runtime_1.jsx)("span", { className: "legend-dot", style: { background: COLORS.chart } }), "Chart"] }), (0, jsx_runtime_1.jsxs)("div", { className: "legend-item", children: [(0, jsx_runtime_1.jsx)("span", { className: "legend-dot", style: { background: COLORS.math } }), "Math"] }), (0, jsx_runtime_1.jsxs)("div", { className: "legend-item", children: [(0, jsx_runtime_1.jsx)("span", { className: "legend-dot", style: { background: COLORS.table } }), "Table"] }), (0, jsx_runtime_1.jsxs)("div", { className: "legend-item", children: [(0, jsx_runtime_1.jsx)("span", { className: "legend-dot", style: { background: COLORS.jotxlink } }), "JotxLink"] })] }), selectedNode && ((0, jsx_runtime_1.jsxs)("div", { className: "graph-node-panel", children: [(0, jsx_runtime_1.jsxs)("div", { className: "panel-header", children: [(0, jsx_runtime_1.jsx)("h3", { children: selectedNode.label }), (0, jsx_runtime_1.jsx)("button", { onClick: () => setSelectedNode(null), children: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { size: 16 }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "panel-content", children: [(0, jsx_runtime_1.jsxs)("div", { className: "panel-row", children: [(0, jsx_runtime_1.jsx)("span", { className: "panel-label", children: "Type" }), (0, jsx_runtime_1.jsx)("span", { className: "panel-value", children: selectedNode.nodeKind })] }), (0, jsx_runtime_1.jsxs)("div", { className: "panel-row", children: [(0, jsx_runtime_1.jsx)("span", { className: "panel-label", children: "ID" }), (0, jsx_runtime_1.jsx)("span", { className: "panel-value", children: selectedNode.id })] }), (0, jsx_runtime_1.jsxs)("div", { className: "panel-row", children: [(0, jsx_runtime_1.jsx)("span", { className: "panel-label", children: "Path" }), (0, jsx_runtime_1.jsx)("span", { className: "panel-value", children: selectedNode.path })] })] })] }))] })] }) }));
233
+ }
234
+ //# sourceMappingURL=GraphView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphView.js","sourceRoot":"","sources":["../../../src/components/GraphView/GraphView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ButtonNode = void 0;
4
+ const core_1 = require("@tiptap/core");
5
+ const react_1 = require("@tiptap/react");
6
+ const ButtonNodeView_1 = require("../components/ButtonNodeView");
7
+ /**
8
+ * Button node for navigation
9
+ * Renders as a clickable button that navigates to linked file
10
+ */
11
+ exports.ButtonNode = core_1.Node.create({
12
+ name: 'button',
13
+ group: 'block',
14
+ content: '',
15
+ defining: true,
16
+ addAttributes() {
17
+ return {
18
+ label: { default: '' },
19
+ link: { default: '' },
20
+ style: { default: 'primary' },
21
+ align: { default: 'left' },
22
+ blockId: { default: null }
23
+ };
24
+ },
25
+ parseHTML() {
26
+ return [
27
+ {
28
+ tag: 'div[data-type="button"]',
29
+ getAttrs: (node) => {
30
+ if (!(node instanceof HTMLElement))
31
+ return false;
32
+ return {
33
+ label: node.getAttribute('data-label') || '',
34
+ link: node.getAttribute('data-link') || '',
35
+ style: node.getAttribute('data-style') || 'primary',
36
+ align: node.getAttribute('data-align') || 'left'
37
+ };
38
+ }
39
+ }
40
+ ];
41
+ },
42
+ renderHTML({ HTMLAttributes }) {
43
+ return [
44
+ 'div',
45
+ (0, core_1.mergeAttributes)(HTMLAttributes, {
46
+ 'data-type': 'button',
47
+ 'data-label': HTMLAttributes.label || '',
48
+ 'data-link': HTMLAttributes.link || '',
49
+ 'data-style': HTMLAttributes.style || 'primary',
50
+ 'data-align': HTMLAttributes.align || 'left'
51
+ }),
52
+ 0
53
+ ];
54
+ },
55
+ addNodeView() {
56
+ return (0, react_1.ReactNodeViewRenderer)(ButtonNodeView_1.ButtonNodeView);
57
+ }
58
+ });
59
+ //# sourceMappingURL=ButtonNode.js.map
@@ -0,0 +1,7 @@
1
+ import { Node } from '@tiptap/core';
2
+ /**
3
+ * Button node for navigation
4
+ * Renders as a clickable button that navigates to linked file
5
+ */
6
+ export declare const ButtonNode: Node<any, any>;
7
+ //# sourceMappingURL=ButtonNode.d.ts.map
@@ -0,0 +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,gBAmDrB,CAAA"}
@@ -0,0 +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,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,IAAI;IAEd,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;SAC7B,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,cAAc,EAAE;QACzB,OAAO;YACH,KAAK;YACL,IAAA,sBAAe,EAAC,cAAc,EAAE;gBAC5B,WAAW,EAAE,QAAQ;gBACrB,YAAY,EAAE,cAAc,CAAC,KAAK,IAAI,EAAE;gBACxC,WAAW,EAAE,cAAc,CAAC,IAAI,IAAI,EAAE;gBACtC,YAAY,EAAE,cAAc,CAAC,KAAK,IAAI,SAAS;gBAC/C,YAAY,EAAE,cAAc,CAAC,KAAK,IAAI,MAAM;aAC/C,CAAC;YACF,CAAC;SACJ,CAAA;IACL,CAAC;IAED,WAAW;QACP,OAAO,IAAA,6BAAqB,EAAC,+BAAc,CAAC,CAAA;IAChD,CAAC;CACJ,CAAC,CAAA"}
@@ -0,0 +1,64 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CardNode = void 0;
4
+ const core_1 = require("@tiptap/core");
5
+ const react_1 = require("@tiptap/react");
6
+ const CardNodeView_1 = require("../components/CardNodeView");
7
+ /**
8
+ * Card node - child of GridCard
9
+ * Contains title, value, icon, color, link
10
+ */
11
+ exports.CardNode = core_1.Node.create({
12
+ name: 'card',
13
+ // NOT in 'block' group - cards are only children of gridcard, not standalone
14
+ content: '',
15
+ defining: false,
16
+ selectable: false, // Don't allow individual card selection
17
+ draggable: false, // Cards can't be dragged individually
18
+ addAttributes() {
19
+ return {
20
+ title: { default: '' },
21
+ value: { default: '' },
22
+ icon: { default: '' },
23
+ color: { default: 'teal' },
24
+ link: { default: '' },
25
+ blockId: { default: null }
26
+ };
27
+ },
28
+ parseHTML() {
29
+ return [
30
+ {
31
+ tag: 'div[data-type="card"]',
32
+ getAttrs: (node) => {
33
+ if (!(node instanceof HTMLElement))
34
+ return false;
35
+ return {
36
+ title: node.getAttribute('data-title') || '',
37
+ value: node.getAttribute('data-value') || '',
38
+ icon: node.getAttribute('data-icon') || '',
39
+ color: node.getAttribute('data-color') || 'teal',
40
+ link: node.getAttribute('data-link') || ''
41
+ };
42
+ }
43
+ }
44
+ ];
45
+ },
46
+ renderHTML({ HTMLAttributes }) {
47
+ return [
48
+ 'div',
49
+ (0, core_1.mergeAttributes)(HTMLAttributes, {
50
+ 'data-type': 'card',
51
+ 'data-title': HTMLAttributes.title || '',
52
+ 'data-value': HTMLAttributes.value || '',
53
+ 'data-icon': HTMLAttributes.icon || '',
54
+ 'data-color': HTMLAttributes.color || 'teal',
55
+ 'data-link': HTMLAttributes.link || ''
56
+ }),
57
+ 0
58
+ ];
59
+ },
60
+ addNodeView() {
61
+ return (0, react_1.ReactNodeViewRenderer)(CardNodeView_1.CardNodeView);
62
+ }
63
+ });
64
+ //# sourceMappingURL=CardNode.js.map
@@ -0,0 +1,7 @@
1
+ import { Node } from '@tiptap/core';
2
+ /**
3
+ * Card node - child of GridCard
4
+ * Contains title, value, icon, color, link
5
+ */
6
+ export declare const CardNode: Node<any, any>;
7
+ //# sourceMappingURL=CardNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardNode.d.ts","sourceRoot":"","sources":["../../src/extensions/CardNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAA;AAIpD;;;GAGG;AACH,eAAO,MAAM,QAAQ,gBAwDnB,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CardNode.js","sourceRoot":"","sources":["../../src/extensions/CardNode.ts"],"names":[],"mappings":";;;AAAA,uCAAoD;AACpD,yCAAqD;AACrD,6DAAyD;AAEzD;;;GAGG;AACU,QAAA,QAAQ,GAAG,WAAI,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,MAAM;IAEZ,6EAA6E;IAC7E,OAAO,EAAE,EAAE;IACX,QAAQ,EAAE,KAAK;IACf,UAAU,EAAE,KAAK,EAAE,wCAAwC;IAC3D,SAAS,EAAE,KAAK,EAAG,sCAAsC;IAEzD,aAAa;QACT,OAAO;YACH,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YACtB,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YACtB,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YACrB,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE;YAC1B,IAAI,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YACrB,OAAO,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;SAC7B,CAAA;IACL,CAAC;IAED,SAAS;QACL,OAAO;YACH;gBACI,GAAG,EAAE,uBAAuB;gBAC5B,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,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,MAAM;wBAChD,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,EAAE;qBAC7C,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,MAAM;gBACnB,YAAY,EAAE,cAAc,CAAC,KAAK,IAAI,EAAE;gBACxC,YAAY,EAAE,cAAc,CAAC,KAAK,IAAI,EAAE;gBACxC,WAAW,EAAE,cAAc,CAAC,IAAI,IAAI,EAAE;gBACtC,YAAY,EAAE,cAAc,CAAC,KAAK,IAAI,MAAM;gBAC5C,WAAW,EAAE,cAAc,CAAC,IAAI,IAAI,EAAE;aACzC,CAAC;YACF,CAAC;SACJ,CAAA;IACL,CAAC;IAED,WAAW;QACP,OAAO,IAAA,6BAAqB,EAAC,2BAAY,CAAC,CAAA;IAC9C,CAAC;CACJ,CAAC,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { Node } from '@tiptap/core';
2
+ /**
3
+ * Grid Card container node
4
+ * Contains card children in a grid layout
5
+ */
6
+ export declare const GridCardNode: Node<any, any>;
7
+ //# sourceMappingURL=GridCardNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridCardNode.d.ts","sourceRoot":"","sources":["../../src/extensions/GridCardNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAA;AAIpD;;;GAGG;AACH,eAAO,MAAM,YAAY,gBAgDvB,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GridCardNode.js","sourceRoot":"","sources":["../../src/extensions/GridCardNode.ts"],"names":[],"mappings":";;;AAAA,uCAAoD;AACpD,yCAAqD;AACrD,qEAAiE;AAEjE;;;GAGG;AACU,QAAA,YAAY,GAAG,WAAI,CAAC,MAAM,CAAC;IACpC,IAAI,EAAE,UAAU;IAEhB,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,OAAO;IAChB,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI,EAAE,8CAA8C;IAC/D,SAAS,EAAE,IAAI,EAAE,4CAA4C;IAE7D,aAAa;QACT,OAAO;YACH,MAAM,EAAE;gBACJ,OAAO,EAAE,KAAK;aACjB;YACD,OAAO,EAAE;gBACL,OAAO,EAAE,IAAI;aAChB;SACJ,CAAA;IACL,CAAC;IAED,SAAS;QACL,OAAO;YACH;gBACI,GAAG,EAAE,2BAA2B;gBAChC,QAAQ,EAAE,CAAC,IAAI,EAAE,EAAE;oBACf,IAAI,CAAC,CAAC,IAAI,YAAY,WAAW,CAAC;wBAAE,OAAO,KAAK,CAAA;oBAChD,OAAO;wBACH,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,IAAI,KAAK;qBACpD,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,UAAU;gBACvB,aAAa,EAAE,cAAc,CAAC,MAAM,IAAI,KAAK;aAChD,CAAC;YACF,CAAC;SACJ,CAAA;IACL,CAAC;IAED,WAAW;QACP,OAAO,IAAA,6BAAqB,EAAC,mCAAgB,CAAC,CAAA;IAClD,CAAC;CACJ,CAAC,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageNode.d.ts","sourceRoot":"","sources":["../../src/extensions/ImageNode.ts"],"names":[],"mappings":"AAGA;;;;;;;GAOG;AACH,eAAO,MAAM,SAAS,kFAuDpB,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LinkNode.js","sourceRoot":"","sources":["../../src/extensions/LinkNode.ts"],"names":[],"mappings":";;;AAAA,uCAAoD;AAEpD;;;GAGG;AACU,QAAA,QAAQ,GAAG,WAAI,CAAC,MAAM,CAAC;IAClC,IAAI,EAAE,WAAW;IAEjB,KAAK,EAAE,OAAO;IAEd,OAAO,EAAE,SAAS;IAElB,QAAQ,EAAE,IAAI;IAEd,aAAa;QACX,OAAO;YACL,IAAI,EAAE;gBACJ,OAAO,EAAE,EAAE;gBACX,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC;gBACvD,UAAU,EAAE,UAAU,CAAC,EAAE;oBACvB,OAAO;wBACL,WAAW,EAAE,UAAU,CAAC,IAAI;qBAC7B,CAAA;gBACH,CAAC;aACF;SACF,CAAA;IACH,CAAC;IAED,SAAS;QACP,OAAO;YACL;gBACE,GAAG,EAAE,qBAAqB;aAC3B;SACF,CAAA;IACH,CAAC;IAED,UAAU,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE;QACjC,OAAO;YACL,KAAK;YACL,IAAA,sBAAe,EAAC,cAAc,EAAE;gBAC9B,gBAAgB,EAAE,MAAM;gBACxB,KAAK,EAAE,iBAAiB;aACzB,CAAC;YACF;gBACE,GAAG;gBACH;oBACE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI;oBACrB,MAAM,EAAE,QAAQ;oBAChB,GAAG,EAAE,qBAAqB;oBAC1B,KAAK,EAAE,wBAAwB;iBAChC;gBACD,CAAC;aACF;SACF,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Search Extension for Tiptap
3
+ * Handles search logic, highlighting, and navigation
4
+ */
5
+ import { Extension } from '@tiptap/core';
6
+ import { PluginKey } from '@tiptap/pm/state';
7
+ import { DecorationSet } from '@tiptap/pm/view';
8
+ declare module '@tiptap/core' {
9
+ interface Commands<ReturnType> {
10
+ search: {
11
+ setSearchTerm: (searchTerm: string) => ReturnType;
12
+ nextSearchMatch: () => ReturnType;
13
+ previousSearchMatch: () => ReturnType;
14
+ clearSearch: () => ReturnType;
15
+ };
16
+ }
17
+ }
18
+ export interface SearchOptions {
19
+ searchTerm: string;
20
+ caseSensitive: boolean;
21
+ currentIndex: number;
22
+ }
23
+ export interface SearchResult {
24
+ from: number;
25
+ to: number;
26
+ }
27
+ /**
28
+ * Search Plugin State
29
+ */
30
+ interface SearchPluginState {
31
+ searchTerm: string;
32
+ caseSensitive: boolean;
33
+ matches: SearchResult[];
34
+ currentIndex: number;
35
+ decorations: DecorationSet;
36
+ }
37
+ export declare const searchPluginKey: PluginKey<SearchPluginState>;
38
+ export declare const SearchExtension: Extension<any, any>;
39
+ export {};
40
+ //# sourceMappingURL=SearchExtension.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchExtension.d.ts","sourceRoot":"","sources":["../../src/extensions/SearchExtension.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AACxC,OAAO,EAAU,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACpD,OAAO,EAAc,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAG3D,OAAO,QAAQ,cAAc,CAAC;IAC5B,UAAU,QAAQ,CAAC,UAAU;QAC3B,MAAM,EAAE;YACN,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,UAAU,CAAA;YACjD,eAAe,EAAE,MAAM,UAAU,CAAA;YACjC,mBAAmB,EAAE,MAAM,UAAU,CAAA;YACrC,WAAW,EAAE,MAAM,UAAU,CAAA;SAC9B,CAAA;KACF;CACF;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,OAAO,CAAA;IACtB,YAAY,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,EAAE,EAAE,MAAM,CAAA;CACX;AAqDD;;GAEG;AACH,UAAU,iBAAiB;IACzB,UAAU,EAAE,MAAM,CAAA;IAClB,aAAa,EAAE,OAAO,CAAA;IACtB,OAAO,EAAE,YAAY,EAAE,CAAA;IACvB,YAAY,EAAE,MAAM,CAAA;IACpB,WAAW,EAAE,aAAa,CAAA;CAC3B;AAED,eAAO,MAAM,eAAe,8BAA6C,CAAA;AAEzE,eAAO,MAAM,eAAe,qBA4J1B,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SearchExtension.js","sourceRoot":"","sources":["../../src/extensions/SearchExtension.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SectionNode = void 0;
4
+ const core_1 = require("@tiptap/core");
5
+ const react_1 = require("@tiptap/react");
6
+ const SectionNodeView_1 = require("../components/SectionNodeView");
7
+ /**
8
+ * Section block (collapsible container with title)
9
+ *
10
+ * HTML:
11
+ * <div data-type="section" data-title="..." data-collapsed="true|false">
12
+ * <div data-role="section-content"> ...nested blocks... </div>
13
+ * </div>
14
+ */
15
+ exports.SectionNode = core_1.Node.create({
16
+ name: 'section',
17
+ group: 'block',
18
+ content: 'block+',
19
+ defining: true,
20
+ isolating: true,
21
+ addAttributes() {
22
+ return {
23
+ title: {
24
+ default: 'Section',
25
+ parseHTML: (element) => element.getAttribute('data-title') || 'Section'
26
+ },
27
+ collapsed: {
28
+ default: false,
29
+ parseHTML: (element) => (element.getAttribute('data-collapsed') || 'false') === 'true'
30
+ }
31
+ };
32
+ },
33
+ parseHTML() {
34
+ return [
35
+ {
36
+ tag: 'div[data-type="section"]',
37
+ contentElement: 'div[data-role="section-content"]'
38
+ }
39
+ ];
40
+ },
41
+ renderHTML({ HTMLAttributes }) {
42
+ const title = (HTMLAttributes.title || 'Section').toString();
43
+ const collapsed = (HTMLAttributes.collapsed ? 'true' : 'false').toString();
44
+ return [
45
+ 'div',
46
+ (0, core_1.mergeAttributes)(HTMLAttributes, {
47
+ 'data-type': 'section',
48
+ 'data-title': title,
49
+ 'data-collapsed': collapsed
50
+ }),
51
+ ['div', { 'data-role': 'section-content' }, 0]
52
+ ];
53
+ },
54
+ addNodeView() {
55
+ return (0, react_1.ReactNodeViewRenderer)(SectionNodeView_1.SectionNodeView);
56
+ }
57
+ });
58
+ //# sourceMappingURL=SectionNode.js.map
@@ -0,0 +1,11 @@
1
+ import { Node } from '@tiptap/core';
2
+ /**
3
+ * Section block (collapsible container with title)
4
+ *
5
+ * HTML:
6
+ * <div data-type="section" data-title="..." data-collapsed="true|false">
7
+ * <div data-role="section-content"> ...nested blocks... </div>
8
+ * </div>
9
+ */
10
+ export declare const SectionNode: Node<any, any>;
11
+ //# sourceMappingURL=SectionNode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SectionNode.d.ts","sourceRoot":"","sources":["../../src/extensions/SectionNode.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAmB,MAAM,cAAc,CAAA;AAIpD;;;;;;;GAOG;AACH,eAAO,MAAM,WAAW,gBA+CtB,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SectionNode.js","sourceRoot":"","sources":["../../src/extensions/SectionNode.ts"],"names":[],"mappings":";;;AAAA,uCAAoD;AACpD,yCAAqD;AACrD,mEAA+D;AAE/D;;;;;;;GAOG;AACU,QAAA,WAAW,GAAG,WAAI,CAAC,MAAM,CAAC;IACrC,IAAI,EAAE,SAAS;IAEf,KAAK,EAAE,OAAO;IACd,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IAEf,aAAa;QACX,OAAO;YACL,KAAK,EAAE;gBACL,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAE,OAAuB,CAAC,YAAY,CAAC,YAAY,CAAC,IAAI,SAAS;aACzF;YACD,SAAS,EAAE;gBACT,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAE,OAAuB,CAAC,YAAY,CAAC,gBAAgB,CAAC,IAAI,OAAO,CAAC,KAAK,MAAM;aACxG;SACF,CAAA;IACH,CAAC;IAED,SAAS;QACP,OAAO;YACL;gBACE,GAAG,EAAE,0BAA0B;gBAC/B,cAAc,EAAE,kCAAkC;aACnD;SACF,CAAA;IACH,CAAC;IAED,UAAU,CAAC,EAAE,cAAc,EAAE;QAC3B,MAAM,KAAK,GAAG,CAAE,cAAsB,CAAC,KAAK,IAAI,SAAS,CAAC,CAAC,QAAQ,EAAE,CAAA;QACrE,MAAM,SAAS,GAAG,CAAE,cAAsB,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAA;QACnF,OAAO;YACL,KAAK;YACL,IAAA,sBAAe,EAAC,cAAc,EAAE;gBAC9B,WAAW,EAAE,SAAS;gBACtB,YAAY,EAAE,KAAK;gBACnB,gBAAgB,EAAE,SAAS;aAC5B,CAAC;YACF,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,iBAAiB,EAAE,EAAE,CAAC,CAAC;SAC/C,CAAA;IACH,CAAC;IAED,WAAW;QACT,OAAO,IAAA,6BAAqB,EAAC,iCAAe,CAAC,CAAA;IAC/C,CAAC;CACF,CAAC,CAAA"}
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ToggleNode = void 0;
4
+ const core_1 = require("@tiptap/core");
5
+ const react_1 = require("@tiptap/react");
6
+ const ToggleNodeView_1 = require("../components/ToggleNodeView");
7
+ /**
8
+ * Toggle block (collapsible container)
9
+ *
10
+ * HTML:
11
+ * <div data-type="toggle" data-title="..." data-collapsed="true|false">
12
+ * <div data-role="toggle-content"> ...nested blocks... </div>
13
+ * </div>
14
+ */
15
+ exports.ToggleNode = core_1.Node.create({
16
+ name: 'toggle',
17
+ group: 'block',
18
+ content: 'block+',
19
+ defining: true,
20
+ isolating: true,
21
+ addAttributes() {
22
+ return {
23
+ title: {
24
+ default: 'Toggle',
25
+ parseHTML: (element) => element.getAttribute('data-title') || 'Toggle'
26
+ },
27
+ collapsed: {
28
+ default: false,
29
+ parseHTML: (element) => (element.getAttribute('data-collapsed') || 'false') === 'true'
30
+ }
31
+ };
32
+ },
33
+ parseHTML() {
34
+ return [
35
+ {
36
+ tag: 'div[data-type="toggle"]',
37
+ contentElement: 'div[data-role="toggle-content"]'
38
+ }
39
+ ];
40
+ },
41
+ renderHTML({ HTMLAttributes }) {
42
+ const title = (HTMLAttributes.title || 'Toggle').toString();
43
+ const collapsed = (HTMLAttributes.collapsed ? 'true' : 'false').toString();
44
+ return [
45
+ 'div',
46
+ (0, core_1.mergeAttributes)(HTMLAttributes, {
47
+ 'data-type': 'toggle',
48
+ 'data-title': title,
49
+ 'data-collapsed': collapsed
50
+ }),
51
+ ['div', { 'data-role': 'toggle-content' }, 0]
52
+ ];
53
+ },
54
+ addNodeView() {
55
+ return (0, react_1.ReactNodeViewRenderer)(ToggleNodeView_1.ToggleNodeView);
56
+ }
57
+ });
58
+ //# sourceMappingURL=ToggleNode.js.map