@portel/photon 1.14.0 → 1.16.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 (125) hide show
  1. package/dist/auto-ui/beam/photon-management.d.ts +1 -1
  2. package/dist/auto-ui/beam/photon-management.d.ts.map +1 -1
  3. package/dist/auto-ui/beam/photon-management.js +5 -1
  4. package/dist/auto-ui/beam/photon-management.js.map +1 -1
  5. package/dist/auto-ui/beam/routes/api-config.d.ts.map +1 -1
  6. package/dist/auto-ui/beam/routes/api-config.js +31 -9
  7. package/dist/auto-ui/beam/routes/api-config.js.map +1 -1
  8. package/dist/auto-ui/beam/routes/api-marketplace.d.ts.map +1 -1
  9. package/dist/auto-ui/beam/routes/api-marketplace.js +3 -0
  10. package/dist/auto-ui/beam/routes/api-marketplace.js.map +1 -1
  11. package/dist/auto-ui/beam.d.ts.map +1 -1
  12. package/dist/auto-ui/beam.js +205 -56
  13. package/dist/auto-ui/beam.js.map +1 -1
  14. package/dist/auto-ui/bridge/index.d.ts.map +1 -1
  15. package/dist/auto-ui/bridge/index.js +578 -0
  16. package/dist/auto-ui/bridge/index.js.map +1 -1
  17. package/dist/auto-ui/bridge/renderers.d.ts.map +1 -1
  18. package/dist/auto-ui/bridge/renderers.js +7 -3
  19. package/dist/auto-ui/bridge/renderers.js.map +1 -1
  20. package/dist/auto-ui/bridge/types.d.ts +6 -0
  21. package/dist/auto-ui/bridge/types.d.ts.map +1 -1
  22. package/dist/auto-ui/frontend/pure-view.html +289 -0
  23. package/dist/auto-ui/photon-bridge.d.ts +11 -0
  24. package/dist/auto-ui/photon-bridge.d.ts.map +1 -1
  25. package/dist/auto-ui/photon-bridge.js +75 -1
  26. package/dist/auto-ui/photon-bridge.js.map +1 -1
  27. package/dist/auto-ui/streamable-http-transport.d.ts.map +1 -1
  28. package/dist/auto-ui/streamable-http-transport.js +29 -3
  29. package/dist/auto-ui/streamable-http-transport.js.map +1 -1
  30. package/dist/beam-form.bundle.js +5707 -0
  31. package/dist/beam-form.bundle.js.map +7 -0
  32. package/dist/beam.bundle.js +2863 -895
  33. package/dist/beam.bundle.js.map +4 -4
  34. package/dist/claude-code-plugin.js +11 -3
  35. package/dist/claude-code-plugin.js.map +1 -1
  36. package/dist/cli/commands/build.js +1 -1
  37. package/dist/cli/commands/build.js.map +1 -1
  38. package/dist/cli/commands/doctor.d.ts.map +1 -1
  39. package/dist/cli/commands/doctor.js +7 -5
  40. package/dist/cli/commands/doctor.js.map +1 -1
  41. package/dist/cli/commands/info.d.ts.map +1 -1
  42. package/dist/cli/commands/info.js +18 -4
  43. package/dist/cli/commands/info.js.map +1 -1
  44. package/dist/cli/commands/mcp.js +2 -2
  45. package/dist/cli/commands/mcp.js.map +1 -1
  46. package/dist/cli/commands/update.d.ts.map +1 -1
  47. package/dist/cli/commands/update.js +6 -2
  48. package/dist/cli/commands/update.js.map +1 -1
  49. package/dist/cli-alias.d.ts.map +1 -1
  50. package/dist/cli-alias.js +3 -2
  51. package/dist/cli-alias.js.map +1 -1
  52. package/dist/daemon/client.d.ts +5 -0
  53. package/dist/daemon/client.d.ts.map +1 -1
  54. package/dist/daemon/client.js +50 -0
  55. package/dist/daemon/client.js.map +1 -1
  56. package/dist/daemon/manager.d.ts +15 -0
  57. package/dist/daemon/manager.d.ts.map +1 -1
  58. package/dist/daemon/manager.js +142 -11
  59. package/dist/daemon/manager.js.map +1 -1
  60. package/dist/daemon/worker-manager.js +1 -1
  61. package/dist/daemon/worker-manager.js.map +1 -1
  62. package/dist/deploy/cloudflare.d.ts.map +1 -1
  63. package/dist/deploy/cloudflare.js +12 -10
  64. package/dist/deploy/cloudflare.js.map +1 -1
  65. package/dist/loader.d.ts.map +1 -1
  66. package/dist/loader.js +37 -2
  67. package/dist/loader.js.map +1 -1
  68. package/dist/marketplace-manager.d.ts +9 -0
  69. package/dist/marketplace-manager.d.ts.map +1 -1
  70. package/dist/marketplace-manager.js +115 -42
  71. package/dist/marketplace-manager.js.map +1 -1
  72. package/dist/meta.d.ts +51 -0
  73. package/dist/meta.d.ts.map +1 -0
  74. package/dist/meta.js +320 -0
  75. package/dist/meta.js.map +1 -0
  76. package/dist/photon-cli-runner.d.ts.map +1 -1
  77. package/dist/photon-cli-runner.js +30 -5
  78. package/dist/photon-cli-runner.js.map +1 -1
  79. package/dist/photon-doc-extractor.d.ts +1 -0
  80. package/dist/photon-doc-extractor.d.ts.map +1 -1
  81. package/dist/photon-doc-extractor.js +33 -21
  82. package/dist/photon-doc-extractor.js.map +1 -1
  83. package/dist/photons/builder-compass.photon.d.ts +167 -0
  84. package/dist/photons/builder-compass.photon.d.ts.map +1 -0
  85. package/dist/photons/builder-compass.photon.js +816 -0
  86. package/dist/photons/builder-compass.photon.js.map +1 -0
  87. package/dist/photons/builder-compass.photon.ts +1129 -0
  88. package/dist/photons/docs/ui/docs.html +441 -0
  89. package/dist/photons/docs.photon.d.ts +237 -0
  90. package/dist/photons/docs.photon.d.ts.map +1 -0
  91. package/dist/photons/docs.photon.js +483 -0
  92. package/dist/photons/docs.photon.js.map +1 -0
  93. package/dist/photons/docs.photon.ts +536 -0
  94. package/dist/photons/maker.photon.d.ts.map +1 -1
  95. package/dist/photons/maker.photon.js +19 -2
  96. package/dist/photons/maker.photon.js.map +1 -1
  97. package/dist/photons/maker.photon.ts +18 -2
  98. package/dist/photons/slides.photon.d.ts +212 -0
  99. package/dist/photons/slides.photon.d.ts.map +1 -0
  100. package/dist/photons/slides.photon.js +355 -0
  101. package/dist/photons/slides.photon.js.map +1 -0
  102. package/dist/photons/slides.photon.ts +370 -0
  103. package/dist/photons/spreadsheet/ui/spreadsheet.html +779 -0
  104. package/dist/photons/spreadsheet.photon.d.ts +554 -0
  105. package/dist/photons/spreadsheet.photon.d.ts.map +1 -0
  106. package/dist/photons/spreadsheet.photon.js +1050 -0
  107. package/dist/photons/spreadsheet.photon.js.map +1 -0
  108. package/dist/photons/spreadsheet.photon.ts +1239 -0
  109. package/dist/photons/ui/builder-compass.html +1199 -0
  110. package/dist/photons/ui/builder-compass.photon.html +380 -0
  111. package/dist/server.d.ts.map +1 -1
  112. package/dist/server.js +33 -59
  113. package/dist/server.js.map +1 -1
  114. package/dist/shared/error-handler.d.ts +8 -0
  115. package/dist/shared/error-handler.d.ts.map +1 -1
  116. package/dist/shared/error-handler.js +50 -0
  117. package/dist/shared/error-handler.js.map +1 -1
  118. package/dist/shared-utils.d.ts +16 -2
  119. package/dist/shared-utils.d.ts.map +1 -1
  120. package/dist/shared-utils.js +37 -3
  121. package/dist/shared-utils.js.map +1 -1
  122. package/dist/template-manager.d.ts.map +1 -1
  123. package/dist/template-manager.js +2 -1
  124. package/dist/template-manager.js.map +1 -1
  125. package/package.json +8 -3
@@ -0,0 +1,483 @@
1
+ /**
2
+ * Docs — Markdown Document Editor with PDF Export
3
+ *
4
+ * A document editor backed by plain markdown files with YAML frontmatter.
5
+ * Each instance is a document: `_use('quarterly-report')` → `quarterly-report.md`.
6
+ * Pass a full path to open any file: `_use('/path/to/doc.md')`.
7
+ *
8
+ * Features page-aware preview via Paged.js, TOC generation, footnotes,
9
+ * custom containers (note/warning/tip), multi-column layouts, and PDF export.
10
+ *
11
+ * @version 1.0.0
12
+ * @runtime ^1.14.0
13
+ * @tags document, markdown, pdf, writing, authoring
14
+ * @icon 📄
15
+ * @stateful
16
+ * @ui editor ./ui/docs.html
17
+ */
18
+ import * as fs from 'fs/promises';
19
+ import { existsSync, mkdirSync } from 'fs';
20
+ import * as path from 'path';
21
+ import * as os from 'os';
22
+ const DEFAULT_DOC = `---
23
+ title: Untitled Document
24
+ author: ""
25
+ date: ${new Date().toISOString().split('T')[0]}
26
+ size: A4
27
+ margins:
28
+ top: 2.5cm
29
+ bottom: 2.5cm
30
+ left: 3cm
31
+ right: 2cm
32
+ header:
33
+ right: "{date}"
34
+ footer:
35
+ center: "Page {page} of {pages}"
36
+ toc: false
37
+ numbersections: false
38
+ theme: default
39
+ ---
40
+
41
+ # Untitled Document
42
+
43
+ Start writing here. This is a plain markdown document with superpowers.
44
+
45
+ ## Features
46
+
47
+ - **YAML frontmatter** controls page layout, headers, footers, and theme
48
+ - **Page breaks** with \`---pagebreak---\`
49
+ - **Footnotes** with \`[^1]\` syntax
50
+ - **Callout boxes** with \`::: note\`, \`::: warning\`, \`::: tip\`
51
+ - **Multi-column layouts** with \`::: columns\`
52
+ - **Table of contents** with \`[[toc]]\`
53
+ - **PDF export** that matches exactly what you see
54
+
55
+ ## Next Steps
56
+
57
+ Ask AI to help you write, restructure, or format this document.
58
+ `;
59
+ export default class Docs {
60
+ settings = {
61
+ /** @property Directory where document files are stored */
62
+ folder: path.join(os.homedir(), 'Documents', 'docs'),
63
+ };
64
+ // ── File Resolution ─────────────────────────────────────────────────────
65
+ get defaultFolder() {
66
+ return this.settings?.folder || path.join(os.homedir(), 'Documents', 'docs');
67
+ }
68
+ get docPath() {
69
+ const name = this.instanceName || 'untitled';
70
+ if (path.isAbsolute(name))
71
+ return name.endsWith('.md') ? name : name + '.md';
72
+ if (name.includes('/') || name.includes('\\')) {
73
+ const resolved = path.resolve(name);
74
+ return resolved.endsWith('.md') ? resolved : resolved + '.md';
75
+ }
76
+ const dir = this.defaultFolder;
77
+ if (!existsSync(dir))
78
+ mkdirSync(dir, { recursive: true });
79
+ return path.join(dir, name.endsWith('.md') ? name : name + '.md');
80
+ }
81
+ async onInitialize() {
82
+ const dir = this.defaultFolder;
83
+ if (!existsSync(dir))
84
+ mkdirSync(dir, { recursive: true });
85
+ if (!existsSync(this.docPath)) {
86
+ await fs.writeFile(this.docPath, DEFAULT_DOC, 'utf8');
87
+ }
88
+ }
89
+ // ── Editor ──────────────────────────────────────────────────────────────
90
+ /**
91
+ * Open the document editor UI
92
+ * @ui editor
93
+ * @autorun
94
+ */
95
+ async main() {
96
+ const markdown = await this.readDoc();
97
+ const { frontmatter, body } = parseFrontmatter(markdown);
98
+ const outline = buildOutline(body);
99
+ return {
100
+ file: path.basename(this.docPath),
101
+ markdown,
102
+ frontmatter,
103
+ outline,
104
+ stats: computeStats(body),
105
+ };
106
+ }
107
+ /**
108
+ * Read the document markdown
109
+ * @readOnly
110
+ */
111
+ async read() {
112
+ return { file: path.basename(this.docPath), markdown: await this.readDoc() };
113
+ }
114
+ /**
115
+ * Save the full document markdown
116
+ * @param markdown Full markdown content with YAML frontmatter
117
+ * @ui editor
118
+ */
119
+ async save({ markdown }) {
120
+ await fs.writeFile(this.docPath, markdown, 'utf8');
121
+ const { frontmatter, body } = parseFrontmatter(markdown);
122
+ const result = {
123
+ file: path.basename(this.docPath),
124
+ markdown,
125
+ frontmatter,
126
+ outline: buildOutline(body),
127
+ stats: computeStats(body),
128
+ };
129
+ this.emit({ event: 'docChanged', data: result });
130
+ return result;
131
+ }
132
+ // ── Structural Editing ──────────────────────────────────────────────────
133
+ /**
134
+ * Get the document's heading structure for navigation
135
+ * @readOnly
136
+ */
137
+ async outline() {
138
+ const body = getBody(await this.readDoc());
139
+ return { outline: buildOutline(body) };
140
+ }
141
+ /**
142
+ * Edit a specific section by heading path
143
+ * @param section Heading text or path like "Chapter 3/Introduction"
144
+ * @param markdown New content for that section (everything under the heading until next same-level heading)
145
+ * @ui editor
146
+ */
147
+ async edit({ section, markdown: newContent }) {
148
+ const doc = await this.readDoc();
149
+ const { frontmatterRaw, body } = splitDoc(doc);
150
+ const updated = replaceSection(body, section, newContent);
151
+ if (updated === null)
152
+ return { error: `Section "${section}" not found` };
153
+ const full = frontmatterRaw + updated;
154
+ await fs.writeFile(this.docPath, full, 'utf8');
155
+ const { frontmatter } = parseFrontmatter(full);
156
+ const result = {
157
+ file: path.basename(this.docPath),
158
+ markdown: full,
159
+ frontmatter,
160
+ outline: buildOutline(updated),
161
+ stats: computeStats(updated),
162
+ };
163
+ this.emit({ event: 'docChanged', data: result });
164
+ return result;
165
+ }
166
+ /**
167
+ * Append content at the end of the document or after a specific section
168
+ * @param markdown Content to append
169
+ * @param after Optional heading text — inserts after that section instead of end
170
+ * @ui editor
171
+ */
172
+ async append({ markdown: content, after }) {
173
+ const doc = await this.readDoc();
174
+ const { frontmatterRaw, body } = splitDoc(doc);
175
+ let updated;
176
+ if (after) {
177
+ updated = insertAfterSection(body, after, content);
178
+ }
179
+ else {
180
+ updated = body.trimEnd() + '\n\n' + content + '\n';
181
+ }
182
+ const full = frontmatterRaw + updated;
183
+ await fs.writeFile(this.docPath, full, 'utf8');
184
+ const { frontmatter } = parseFrontmatter(full);
185
+ const result = {
186
+ file: path.basename(this.docPath),
187
+ markdown: full,
188
+ frontmatter,
189
+ outline: buildOutline(updated),
190
+ stats: computeStats(updated),
191
+ };
192
+ this.emit({ event: 'docChanged', data: result });
193
+ return result;
194
+ }
195
+ // ── Search & Replace ────────────────────────────────────────────────────
196
+ /**
197
+ * Find text in the document with optional fuzzy matching
198
+ * @param query Search text
199
+ * @param fuzzy Enable fuzzy matching {@default false}
200
+ * @param scope Limit search to a section heading
201
+ * @readOnly
202
+ */
203
+ async find({ query, fuzzy, scope }) {
204
+ const body = getBody(await this.readDoc());
205
+ const searchIn = scope ? extractSection(body, scope) || body : body;
206
+ const lines = searchIn.split('\n');
207
+ const queryLower = query.toLowerCase();
208
+ const matches = [];
209
+ for (let i = 0; i < lines.length; i++) {
210
+ const lineLower = lines[i].toLowerCase();
211
+ const found = fuzzy ? fuzzyMatch(lineLower, queryLower) : lineLower.includes(queryLower);
212
+ if (found) {
213
+ matches.push({
214
+ line: i + 1,
215
+ text: lines[i],
216
+ context: lines.slice(Math.max(0, i - 1), i + 2).join('\n'),
217
+ });
218
+ }
219
+ }
220
+ return { query, fuzzy: !!fuzzy, scope: scope || null, matches, total: matches.length };
221
+ }
222
+ /**
223
+ * Find and replace text in the document
224
+ * @param pattern Text to find (string or regex pattern)
225
+ * @param replacement Replacement text
226
+ * @param scope Limit to a section heading
227
+ * @param all Replace all occurrences {@default true}
228
+ * @ui editor
229
+ */
230
+ async replace({ pattern, replacement, scope, all, }) {
231
+ const doc = await this.readDoc();
232
+ const { frontmatterRaw, body } = splitDoc(doc);
233
+ let target = scope ? extractSection(body, scope) || body : body;
234
+ const replaceAll = all !== false;
235
+ let count = 0;
236
+ if (replaceAll) {
237
+ const parts = target.split(pattern);
238
+ count = parts.length - 1;
239
+ target = parts.join(replacement);
240
+ }
241
+ else {
242
+ if (target.includes(pattern)) {
243
+ target = target.replace(pattern, replacement);
244
+ count = 1;
245
+ }
246
+ }
247
+ const updated = scope ? body.replace(extractSection(body, scope) || '', target) : target;
248
+ const full = frontmatterRaw + updated;
249
+ await fs.writeFile(this.docPath, full, 'utf8');
250
+ const { frontmatter } = parseFrontmatter(full);
251
+ const result = {
252
+ file: path.basename(this.docPath),
253
+ markdown: full,
254
+ frontmatter,
255
+ outline: buildOutline(updated),
256
+ stats: computeStats(updated),
257
+ replacements: count,
258
+ };
259
+ this.emit({ event: 'docChanged', data: result });
260
+ return result;
261
+ }
262
+ // ── Document Management ─────────────────────────────────────────────────
263
+ /**
264
+ * List saved documents in the docs folder
265
+ * @readOnly
266
+ */
267
+ async list() {
268
+ const dir = this.defaultFolder;
269
+ if (!existsSync(dir))
270
+ return { folder: dir, docs: [] };
271
+ const entries = await fs.readdir(dir, { withFileTypes: true });
272
+ const docs = await Promise.all(entries
273
+ .filter((e) => e.isFile() && e.name.toLowerCase().endsWith('.md'))
274
+ .map(async (e) => {
275
+ const stat = await fs.stat(path.join(dir, e.name));
276
+ const md = await fs.readFile(path.join(dir, e.name), 'utf8');
277
+ const { frontmatter } = parseFrontmatter(md);
278
+ const body = getBody(md);
279
+ return {
280
+ file: e.name,
281
+ title: frontmatter.title || firstHeading(body) || e.name.replace(/\.md$/i, ''),
282
+ author: frontmatter.author || '',
283
+ updatedAt: stat.mtime.toISOString(),
284
+ wordCount: body.split(/\s+/).filter(Boolean).length,
285
+ };
286
+ }));
287
+ return { folder: dir, docs: docs.sort((a, b) => b.updatedAt.localeCompare(a.updatedAt)) };
288
+ }
289
+ /**
290
+ * Generate table of contents from the document structure
291
+ * @readOnly
292
+ */
293
+ async toc() {
294
+ const body = getBody(await this.readDoc());
295
+ const outline = buildOutline(body);
296
+ const tocMarkdown = outline.map((h) => `${' '.repeat(h.level - 1)}- ${h.text}`).join('\n');
297
+ return { outline, markdown: tocMarkdown };
298
+ }
299
+ /**
300
+ * Document statistics: word count, reading time, section breakdown
301
+ * @readOnly
302
+ */
303
+ async stats() {
304
+ const body = getBody(await this.readDoc());
305
+ return computeStats(body);
306
+ }
307
+ // ── Private ─────────────────────────────────────────────────────────────
308
+ async readDoc() {
309
+ try {
310
+ return await fs.readFile(this.docPath, 'utf8');
311
+ }
312
+ catch {
313
+ return DEFAULT_DOC;
314
+ }
315
+ }
316
+ }
317
+ // ── Pure Helpers ──────────────────────────────────────────────────────────
318
+ function parseFrontmatter(markdown) {
319
+ const match = markdown.match(/^---\n([\s\S]*?)\n---\n?/);
320
+ if (!match)
321
+ return { frontmatter: {}, body: markdown };
322
+ const yamlText = match[1];
323
+ const body = markdown.slice(match[0].length);
324
+ // Simple YAML parser for flat/nested values
325
+ const frontmatter = {};
326
+ let currentKey = '';
327
+ let currentNested = null;
328
+ for (const line of yamlText.split('\n')) {
329
+ const nestedMatch = line.match(/^ (\w+):\s*(.+)/);
330
+ if (nestedMatch && currentKey) {
331
+ if (!currentNested)
332
+ currentNested = {};
333
+ currentNested[nestedMatch[1]] = nestedMatch[2].replace(/^["']|["']$/g, '');
334
+ frontmatter[currentKey] = currentNested;
335
+ continue;
336
+ }
337
+ const kvMatch = line.match(/^(\w[\w-]*):\s*(.*)/);
338
+ if (kvMatch) {
339
+ if (currentNested)
340
+ currentNested = null;
341
+ currentKey = kvMatch[1];
342
+ const val = kvMatch[2].replace(/^["']|["']$/g, '').trim();
343
+ if (val === 'true')
344
+ frontmatter[currentKey] = true;
345
+ else if (val === 'false')
346
+ frontmatter[currentKey] = false;
347
+ else if (val === '' || val === '""')
348
+ frontmatter[currentKey] = '';
349
+ else if (/^\d+$/.test(val))
350
+ frontmatter[currentKey] = parseInt(val, 10);
351
+ else
352
+ frontmatter[currentKey] = val;
353
+ }
354
+ }
355
+ return { frontmatter, body };
356
+ }
357
+ function splitDoc(markdown) {
358
+ const match = markdown.match(/^(---\n[\s\S]*?\n---\n?)/);
359
+ if (!match)
360
+ return { frontmatterRaw: '', body: markdown };
361
+ return { frontmatterRaw: match[1], body: markdown.slice(match[1].length) };
362
+ }
363
+ function getBody(markdown) {
364
+ return splitDoc(markdown).body;
365
+ }
366
+ function buildOutline(body) {
367
+ const headings = [];
368
+ const lines = body.split('\n');
369
+ for (let i = 0; i < lines.length; i++) {
370
+ const match = lines[i].match(/^(#{1,6})\s+(.+)/);
371
+ if (match) {
372
+ headings.push({ level: match[1].length, text: match[2].trim(), line: i + 1 });
373
+ }
374
+ }
375
+ return headings;
376
+ }
377
+ function computeStats(body) {
378
+ const words = body.split(/\s+/).filter(Boolean).length;
379
+ const chars = body.length;
380
+ const paragraphs = body.split(/\n\n+/).filter((p) => p.trim().length > 0).length;
381
+ const headings = buildOutline(body);
382
+ const readingTime = Math.max(1, Math.ceil(words / 200));
383
+ // Per-section word counts
384
+ const sections = headings.map((h, i) => {
385
+ const start = body.indexOf(body.split('\n')[h.line - 1]);
386
+ const nextHeading = headings[i + 1];
387
+ const end = nextHeading ? body.indexOf(body.split('\n')[nextHeading.line - 1]) : body.length;
388
+ const sectionText = body.slice(start, end);
389
+ return {
390
+ heading: h.text,
391
+ level: h.level,
392
+ words: sectionText.split(/\s+/).filter(Boolean).length,
393
+ };
394
+ });
395
+ return { words, chars, paragraphs, headings: headings.length, readingTime, sections };
396
+ }
397
+ function firstHeading(body) {
398
+ return body.match(/^#\s+(.+)$/m)?.[1]?.trim() || '';
399
+ }
400
+ function extractSection(body, heading) {
401
+ const lines = body.split('\n');
402
+ let startLine = -1;
403
+ let headingLevel = 0;
404
+ for (let i = 0; i < lines.length; i++) {
405
+ const match = lines[i].match(/^(#{1,6})\s+(.+)/);
406
+ if (match && match[2].trim().toLowerCase() === heading.toLowerCase()) {
407
+ startLine = i;
408
+ headingLevel = match[1].length;
409
+ break;
410
+ }
411
+ }
412
+ if (startLine === -1)
413
+ return null;
414
+ let endLine = lines.length;
415
+ for (let i = startLine + 1; i < lines.length; i++) {
416
+ const match = lines[i].match(/^(#{1,6})\s+/);
417
+ if (match && match[1].length <= headingLevel) {
418
+ endLine = i;
419
+ break;
420
+ }
421
+ }
422
+ return lines.slice(startLine, endLine).join('\n');
423
+ }
424
+ function replaceSection(body, heading, newContent) {
425
+ const lines = body.split('\n');
426
+ let startLine = -1;
427
+ let headingLevel = 0;
428
+ for (let i = 0; i < lines.length; i++) {
429
+ const match = lines[i].match(/^(#{1,6})\s+(.+)/);
430
+ if (match && match[2].trim().toLowerCase() === heading.toLowerCase()) {
431
+ startLine = i;
432
+ headingLevel = match[1].length;
433
+ break;
434
+ }
435
+ }
436
+ if (startLine === -1)
437
+ return null;
438
+ let endLine = lines.length;
439
+ for (let i = startLine + 1; i < lines.length; i++) {
440
+ const match = lines[i].match(/^(#{1,6})\s+/);
441
+ if (match && match[1].length <= headingLevel) {
442
+ endLine = i;
443
+ break;
444
+ }
445
+ }
446
+ const before = lines.slice(0, startLine);
447
+ const after = lines.slice(endLine);
448
+ return [...before, newContent, ...after].join('\n');
449
+ }
450
+ function insertAfterSection(body, heading, content) {
451
+ const lines = body.split('\n');
452
+ let headingLevel = 0;
453
+ let insertAt = lines.length;
454
+ for (let i = 0; i < lines.length; i++) {
455
+ const match = lines[i].match(/^(#{1,6})\s+(.+)/);
456
+ if (match && match[2].trim().toLowerCase() === heading.toLowerCase()) {
457
+ headingLevel = match[1].length;
458
+ // Find end of this section
459
+ for (let j = i + 1; j < lines.length; j++) {
460
+ const nextMatch = lines[j].match(/^(#{1,6})\s+/);
461
+ if (nextMatch && nextMatch[1].length <= headingLevel) {
462
+ insertAt = j;
463
+ break;
464
+ }
465
+ }
466
+ if (insertAt === lines.length)
467
+ insertAt = lines.length;
468
+ break;
469
+ }
470
+ }
471
+ const before = lines.slice(0, insertAt);
472
+ const after = lines.slice(insertAt);
473
+ return [...before, '', content, '', ...after].join('\n');
474
+ }
475
+ function fuzzyMatch(text, query) {
476
+ let qi = 0;
477
+ for (let i = 0; i < text.length && qi < query.length; i++) {
478
+ if (text[i] === query[qi])
479
+ qi++;
480
+ }
481
+ return qi === query.length;
482
+ }
483
+ //# sourceMappingURL=docs.photon.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"docs.photon.js","sourceRoot":"","sources":["../../src/photons/docs.photon.ts"],"names":[],"mappings":"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"}