@jotx-labs/adapters 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ /**
3
+ * jotx 2.0 HTMLRenderer - Convert BlockNode to HTML
4
+ *
5
+ * Pure function: BlockNode[] → HTML string
6
+ * For web hosting and static site generation
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.HTMLRenderer = void 0;
10
+ class HTMLRenderer {
11
+ /**
12
+ * Render array of BlockNodes to HTML
13
+ */
14
+ render(blocks) {
15
+ if (!blocks || blocks.length === 0) {
16
+ return '<p>No content</p>';
17
+ }
18
+ return blocks.map(block => this.renderBlock(block)).join('\n');
19
+ }
20
+ /**
21
+ * Render a single BlockNode to HTML
22
+ */
23
+ renderBlock(block) {
24
+ const text = block.properties?.text || '';
25
+ switch (block.type) {
26
+ // ========== TEXT BLOCKS ==========
27
+ case 'heading':
28
+ const level = block.properties?.level || 1;
29
+ const headingTag = `h${Math.min(Math.max(level, 1), 6)}`;
30
+ return `<${headingTag}>${this.escapeHTML(text)}</${headingTag}>`;
31
+ case 'paragraph':
32
+ return `<p>${this.escapeHTML(text)}</p>`;
33
+ case 'quote':
34
+ return `<blockquote><p>${this.escapeHTML(text)}</p></blockquote>`;
35
+ // ========== CODE & MEDIA BLOCKS ==========
36
+ case 'code':
37
+ const language = block.properties?.language || 'plaintext';
38
+ return `<pre><code class="language-${language}">${this.escapeHTML(text)}</code></pre>`;
39
+ case 'math':
40
+ const display = block.properties?.display || 'block';
41
+ return display === 'inline'
42
+ ? `<span class="math-inline">\\(${this.escapeHTML(text)}\\)</span>`
43
+ : `<div class="math-block">\\[${this.escapeHTML(text)}\\]</div>`;
44
+ case 'image':
45
+ const src = block.properties?.src || '';
46
+ const alt = block.properties?.alt || '';
47
+ const width = block.properties?.width || 100;
48
+ const align = block.properties?.align || 'left';
49
+ return `<img src="${this.escapeHTML(src)}" alt="${this.escapeHTML(alt)}" style="width: ${width}%; text-align: ${align};" />`;
50
+ // ========== CONTAINER BLOCKS ==========
51
+ case 'callout':
52
+ const variant = block.properties?.variant || 'info';
53
+ return `<div class="callout callout-${variant}"><p>${this.escapeHTML(text)}</p></div>`;
54
+ case 'toggle':
55
+ const title = block.properties?.title || 'Toggle';
56
+ const collapsed = block.properties?.collapsed === 'true';
57
+ return `
58
+ <details ${collapsed ? '' : 'open'}>
59
+ <summary>${this.escapeHTML(title)}</summary>
60
+ <div>${this.escapeHTML(text)}</div>
61
+ </details>`;
62
+ // ========== LIST BLOCKS ==========
63
+ case 'list':
64
+ const listType = block.properties?.type === 'numbered' ? 'ol' : 'ul';
65
+ const items = (block.children || []).map(child => {
66
+ const itemText = child.properties?.text || '';
67
+ return `<li>${this.escapeHTML(itemText)}</li>`;
68
+ }).join('\n');
69
+ return `<${listType}>\n${items}\n</${listType}>`;
70
+ case 'checklist':
71
+ const checkItems = (block.children || []).map(child => {
72
+ const itemText = child.properties?.text || '';
73
+ const checked = child.properties?.checked === 'true';
74
+ return `<li><input type="checkbox" ${checked ? 'checked' : ''} disabled> ${this.escapeHTML(itemText)}</li>`;
75
+ }).join('\n');
76
+ return `<ul class="checklist">\n${checkItems}\n</ul>`;
77
+ // ========== SEPARATOR & EMBED BLOCKS ==========
78
+ case 'divider':
79
+ return '<hr />';
80
+ case 'link': {
81
+ const url = block.properties?.url || '';
82
+ return `<a href="${this.escapeHTML(url)}">${this.escapeHTML(text)}</a>`;
83
+ }
84
+ case 'attach':
85
+ const path = block.properties?.path || '';
86
+ return `<a href="${this.escapeHTML(path)}" class="attachment">📎 ${this.escapeHTML(text || path)}</a>`;
87
+ // ========== RICH / INTERACTIVE BLOCKS ==========
88
+ case 'mermaid':
89
+ return `<div class="mermaid">\n${this.escapeHTML(text)}\n</div>`;
90
+ case 'chart':
91
+ const chartType = block.properties?.charttype || 'bar';
92
+ return `<div class="chart" data-type="${chartType}" data-json="${this.escapeHTML(text)}">Chart</div>`;
93
+ case 'datetime':
94
+ const timestamp = block.properties?.timestamp || '';
95
+ const format = block.properties?.format || '';
96
+ const timezone = block.properties?.timezone || '';
97
+ return `<time datetime="${this.escapeHTML(timestamp)}" data-format="${this.escapeHTML(format)}" data-timezone="${this.escapeHTML(timezone)}">${this.escapeHTML(timestamp)}</time>`;
98
+ case 'linkcard':
99
+ const url = block.properties?.url || '';
100
+ const cardTitle = block.properties?.title || '';
101
+ const description = block.properties?.description || '';
102
+ const image = block.properties?.image || '';
103
+ const siteName = block.properties?.sitename || '';
104
+ return `
105
+ <div class="link-card">
106
+ ${image ? `<img src="${this.escapeHTML(image)}" alt="${this.escapeHTML(cardTitle)}" />` : ''}
107
+ <div class="link-card-content">
108
+ <h4>${this.escapeHTML(cardTitle)}</h4>
109
+ <p>${this.escapeHTML(description)}</p>
110
+ <a href="${this.escapeHTML(url)}">${this.escapeHTML(siteName || url)}</a>
111
+ </div>
112
+ </div>`;
113
+ // ========== TABLE ==========
114
+ case 'table':
115
+ const rows = (block.children || []).map(row => {
116
+ const cells = (row.children || []).map(cell => {
117
+ // Recursively render blocks inside cells
118
+ const cellBlocks = (cell.children || []);
119
+ const cellContent = cellBlocks.map(b => this.renderBlock(b)).join('');
120
+ return `<td>${cellContent}</td>`;
121
+ }).join('');
122
+ return `<tr>${cells}</tr>`;
123
+ }).join('\n');
124
+ return `<table>\n${rows}\n</table>`;
125
+ // ========== DATA BLOCKS ==========
126
+ case 'properties':
127
+ // Render key-value pairs
128
+ const props = Object.entries(block.properties || {})
129
+ .filter(([key]) => key !== 'text') // Exclude text property
130
+ .map(([key, value]) => `<div class="property"><strong>${this.escapeHTML(key)}:</strong> ${this.escapeHTML(String(value))}</div>`).join('\n');
131
+ return `<div class="properties">\n${props}\n</div>`;
132
+ // ========== CUSTOM BLOCKS ==========
133
+ case 'custom':
134
+ const customType = block.properties?.customtype || 'unknown';
135
+ return `<div class="custom-block" data-type="${this.escapeHTML(customType)}">${this.escapeHTML(text)}</div>`;
136
+ default:
137
+ // Fallback: render as div
138
+ return `<div>${this.escapeHTML(text)}</div>`;
139
+ }
140
+ }
141
+ /**
142
+ * Escape HTML special characters
143
+ */
144
+ escapeHTML(text) {
145
+ return text
146
+ .replace(/&/g, '&amp;')
147
+ .replace(/</g, '&lt;')
148
+ .replace(/>/g, '&gt;')
149
+ .replace(/"/g, '&quot;')
150
+ .replace(/'/g, '&#039;');
151
+ }
152
+ }
153
+ exports.HTMLRenderer = HTMLRenderer;
154
+ //# sourceMappingURL=HTMLRenderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HTMLRenderer.js","sourceRoot":"","sources":["../../src/renderer/HTMLRenderer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './HTMLRenderer';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA"}
@@ -0,0 +1,18 @@
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./HTMLRenderer"), exports);
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/renderer/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,iDAA8B"}
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@jotx-labs/adapters",
3
+ "version": "2.2.0",
4
+ "files": [
5
+ "dist"
6
+ ],
7
+ "description": "jotx adapters - Platform and editor adapters",
8
+ "main": "dist/index.js",
9
+ "types": "dist/index.d.ts",
10
+ "scripts": {
11
+ "build": "tsc",
12
+ "test": "jest",
13
+ "test:watch": "jest --watch",
14
+ "clean": "rm -rf dist"
15
+ },
16
+ "dependencies": {
17
+ "@jotx/core": "file:../core"
18
+ },
19
+ "devDependencies": {
20
+ "@types/jest": "^29.5.0",
21
+ "@types/node": "^20.0.0",
22
+ "@types/vscode": "^1.85.0",
23
+ "jest": "^29.5.0",
24
+ "ts-jest": "^29.1.0",
25
+ "typescript": "^5.0.0"
26
+ },
27
+ "peerDependencies": {
28
+ "vscode": "*"
29
+ }
30
+ }