marhup 0.1.7 → 0.1.9

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 (130) hide show
  1. package/README.md +481 -4
  2. package/dist/cli.js +659 -78
  3. package/dist/cli.js.map +1 -1
  4. package/dist/errors.d.ts +29 -0
  5. package/dist/errors.d.ts.map +1 -0
  6. package/dist/errors.js +62 -0
  7. package/dist/errors.js.map +1 -0
  8. package/dist/generator/code.d.ts +4 -3
  9. package/dist/generator/code.d.ts.map +1 -1
  10. package/dist/generator/code.js +7 -7
  11. package/dist/generator/code.js.map +1 -1
  12. package/dist/generator/gen-animations.d.ts +13 -0
  13. package/dist/generator/gen-animations.d.ts.map +1 -0
  14. package/dist/generator/gen-animations.js +77 -0
  15. package/dist/generator/gen-animations.js.map +1 -0
  16. package/dist/generator/image.d.ts +4 -3
  17. package/dist/generator/image.d.ts.map +1 -1
  18. package/dist/generator/image.js +67 -80
  19. package/dist/generator/image.js.map +1 -1
  20. package/dist/generator/index.d.ts +2 -0
  21. package/dist/generator/index.d.ts.map +1 -1
  22. package/dist/generator/index.js +9 -18
  23. package/dist/generator/index.js.map +1 -1
  24. package/dist/generator/list.d.ts +4 -3
  25. package/dist/generator/list.d.ts.map +1 -1
  26. package/dist/generator/list.js +15 -17
  27. package/dist/generator/list.js.map +1 -1
  28. package/dist/generator/mermaid.d.ts +9 -4
  29. package/dist/generator/mermaid.d.ts.map +1 -1
  30. package/dist/generator/mermaid.js +120 -85
  31. package/dist/generator/mermaid.js.map +1 -1
  32. package/dist/generator/pptx.d.ts +1 -1
  33. package/dist/generator/pptx.d.ts.map +1 -1
  34. package/dist/generator/pptx.js +232 -60
  35. package/dist/generator/pptx.js.map +1 -1
  36. package/dist/generator/presentation.d.ts +149 -0
  37. package/dist/generator/presentation.d.ts.map +1 -0
  38. package/dist/generator/presentation.js +163 -0
  39. package/dist/generator/presentation.js.map +1 -0
  40. package/dist/generator/table.d.ts +4 -3
  41. package/dist/generator/table.d.ts.map +1 -1
  42. package/dist/generator/table.js +12 -33
  43. package/dist/generator/table.js.map +1 -1
  44. package/dist/generator/text.d.ts +5 -4
  45. package/dist/generator/text.d.ts.map +1 -1
  46. package/dist/generator/text.js +34 -20
  47. package/dist/generator/text.js.map +1 -1
  48. package/dist/generator/video.d.ts +18 -0
  49. package/dist/generator/video.d.ts.map +1 -0
  50. package/dist/generator/video.js +83 -0
  51. package/dist/generator/video.js.map +1 -0
  52. package/dist/index.d.ts +8 -1
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +144 -55
  55. package/dist/index.js.map +1 -1
  56. package/dist/layout/auto.d.ts +14 -2
  57. package/dist/layout/auto.d.ts.map +1 -1
  58. package/dist/layout/auto.js +129 -37
  59. package/dist/layout/auto.js.map +1 -1
  60. package/dist/layout/engine.d.ts +1 -1
  61. package/dist/layout/engine.d.ts.map +1 -1
  62. package/dist/layout/engine.js +10 -12
  63. package/dist/layout/engine.js.map +1 -1
  64. package/dist/layout/index.d.ts +1 -1
  65. package/dist/layout/index.d.ts.map +1 -1
  66. package/dist/layout/index.js +2 -10
  67. package/dist/layout/index.js.map +1 -1
  68. package/dist/layout/types.d.ts +1 -0
  69. package/dist/layout/types.d.ts.map +1 -1
  70. package/dist/layout/types.js +1 -2
  71. package/dist/layout/types.js.map +1 -1
  72. package/dist/mcp-handlers.d.ts.map +1 -1
  73. package/dist/mcp-handlers.js +45 -54
  74. package/dist/mcp-handlers.js.map +1 -1
  75. package/dist/mcp.js +10 -12
  76. package/dist/mcp.js.map +1 -1
  77. package/dist/parser/frontmatter.d.ts.map +1 -1
  78. package/dist/parser/frontmatter.js +95 -16
  79. package/dist/parser/frontmatter.js.map +1 -1
  80. package/dist/parser/grid.d.ts +5 -7
  81. package/dist/parser/grid.d.ts.map +1 -1
  82. package/dist/parser/grid.js +217 -30
  83. package/dist/parser/grid.js.map +1 -1
  84. package/dist/parser/index.js +3 -13
  85. package/dist/parser/index.js.map +1 -1
  86. package/dist/parser/markdown.d.ts +1 -1
  87. package/dist/parser/markdown.d.ts.map +1 -1
  88. package/dist/parser/markdown.js +249 -137
  89. package/dist/parser/markdown.js.map +1 -1
  90. package/dist/theme/default.d.ts +1 -1
  91. package/dist/theme/default.d.ts.map +1 -1
  92. package/dist/theme/default.js +16 -8
  93. package/dist/theme/default.js.map +1 -1
  94. package/dist/theme/index.d.ts +11 -0
  95. package/dist/theme/index.d.ts.map +1 -1
  96. package/dist/theme/index.js +70 -7
  97. package/dist/theme/index.js.map +1 -1
  98. package/dist/types/index.d.ts +56 -2
  99. package/dist/types/index.d.ts.map +1 -1
  100. package/dist/types/index.js +4 -6
  101. package/dist/types/index.js.map +1 -1
  102. package/dist/types/plugin.d.ts +50 -0
  103. package/dist/types/plugin.d.ts.map +1 -0
  104. package/dist/types/plugin.js +5 -0
  105. package/dist/types/plugin.js.map +1 -0
  106. package/dist/utils/file-lock.d.ts +27 -0
  107. package/dist/utils/file-lock.d.ts.map +1 -0
  108. package/dist/utils/file-lock.js +118 -0
  109. package/dist/utils/file-lock.js.map +1 -0
  110. package/dist/utils/i18n.d.ts +5 -0
  111. package/dist/utils/i18n.d.ts.map +1 -0
  112. package/dist/utils/i18n.js +41 -0
  113. package/dist/utils/i18n.js.map +1 -0
  114. package/dist/utils/logger.d.ts +7 -0
  115. package/dist/utils/logger.d.ts.map +1 -0
  116. package/dist/utils/logger.js +43 -0
  117. package/dist/utils/logger.js.map +1 -0
  118. package/dist/utils/path-validation.d.ts +20 -0
  119. package/dist/utils/path-validation.d.ts.map +1 -0
  120. package/dist/utils/path-validation.js +39 -0
  121. package/dist/utils/path-validation.js.map +1 -0
  122. package/dist/utils/plugin-manager.d.ts +18 -0
  123. package/dist/utils/plugin-manager.d.ts.map +1 -0
  124. package/dist/utils/plugin-manager.js +108 -0
  125. package/dist/utils/plugin-manager.js.map +1 -0
  126. package/dist/utils/sanitizer.d.ts +14 -0
  127. package/dist/utils/sanitizer.d.ts.map +1 -0
  128. package/dist/utils/sanitizer.js +73 -0
  129. package/dist/utils/sanitizer.js.map +1 -0
  130. package/package.json +23 -8
@@ -1,22 +1,32 @@
1
- "use strict";
2
1
  /**
3
2
  * Markdownパーサー
4
3
  */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.parseMarkdown = parseMarkdown;
7
- const marked_1 = require("marked");
8
- const frontmatter_1 = require("./frontmatter");
9
- const grid_1 = require("./grid");
4
+ import { marked } from 'marked';
5
+ import { parseFrontmatter, parseGridString } from './frontmatter.js';
6
+ import { extractGridAndStyle, parseBlockGridLine } from './grid.js';
7
+ import { pluginManager } from '../utils/plugin-manager.js';
8
+ import { sanitizeText } from '../utils/sanitizer.js';
9
+ import logger from '../utils/logger.js';
10
+ // markedの設定: HTMLはsanitizeTextで除去
11
+ marked.setOptions({
12
+ breaks: true,
13
+ gfm: true,
14
+ });
10
15
  /**
11
16
  * Markdownをパースしてドキュメント構造に変換
12
17
  */
13
- function parseMarkdown(markdown) {
18
+ export function parseMarkdown(markdown) {
19
+ logger.debug('Starting markdown parsing', { length: markdown.length });
14
20
  // グローバルFront Matterを抽出
15
- const { frontmatter: globalFrontmatter, body } = (0, frontmatter_1.parseFrontmatter)(markdown);
21
+ const { frontmatter: globalFrontmatter, body } = parseFrontmatter(markdown);
22
+ logger.debug('Parsed global frontmatter', { title: globalFrontmatter.title, theme: globalFrontmatter.theme });
16
23
  // スライド区切りで分割
17
24
  const slideContents = splitSlides(body);
25
+ logger.debug(`Split into ${slideContents.length} slides`);
18
26
  // 各スライドをパース
19
- const slides = slideContents.map((content) => parseSlide(content));
27
+ const globalGridConfig = globalFrontmatter.grid ? parseGridString(globalFrontmatter.grid) : { cols: 12, rows: 9 };
28
+ const slides = slideContents.map((content) => parseSlide(content, globalFrontmatter.aliases, globalGridConfig));
29
+ logger.info(`Parsed ${slides.length} slides from markdown`);
20
30
  return {
21
31
  globalFrontmatter,
22
32
  slides,
@@ -28,17 +38,35 @@ function parseMarkdown(markdown) {
28
38
  function splitSlides(content) {
29
39
  // 改行 + --- + 改行 をスライド区切りとして扱う
30
40
  // ただしFront Matterは除外する
31
- const slideDelimiter = /\n---\s*\n/;
32
- return content.split(slideDelimiter).filter((s) => s.trim().length > 0);
41
+ const slides = [];
42
+ const slideDelimiter = /\n---\s*\n/g;
43
+ let start = 0;
44
+ let match;
45
+ while ((match = slideDelimiter.exec(content)) !== null) {
46
+ const slide = content.slice(start, match.index).trim();
47
+ if (slide)
48
+ slides.push(slide);
49
+ start = match.index + match[0].length;
50
+ }
51
+ const lastSlide = content.slice(start).trim();
52
+ if (lastSlide)
53
+ slides.push(lastSlide);
54
+ return slides;
33
55
  }
34
56
  /**
35
57
  * 1スライド分のコンテンツをパース
36
58
  */
37
- function parseSlide(content) {
59
+ function parseSlide(content, globalAliases, globalGridConfig) {
60
+ logger.debug('Parsing slide content', { contentLength: content.length });
38
61
  // スライド個別のFront Matterがあれば抽出
39
- const { frontmatter, body } = (0, frontmatter_1.parseFrontmatter)(content);
62
+ const { frontmatter, body } = parseFrontmatter(content);
63
+ // aliases をマージ(スライド個別が優先)
64
+ const mergedAliases = { ...globalAliases, ...frontmatter.aliases };
65
+ // grid をマージ(スライド個別が優先)
66
+ const gridConfig = frontmatter.grid ? parseGridString(frontmatter.grid) : globalGridConfig || { cols: 12, rows: 9 };
40
67
  // 要素をパース
41
- const elements = parseSlideElements(body);
68
+ const elements = parseSlideElements(body, mergedAliases, gridConfig);
69
+ logger.debug(`Parsed ${elements.length} elements for slide`);
42
70
  return {
43
71
  frontmatter,
44
72
  elements,
@@ -47,178 +75,253 @@ function parseSlide(content) {
47
75
  /**
48
76
  * スライド内の要素をパース
49
77
  */
50
- function parseSlideElements(content) {
78
+ function parseSlideElements(content, aliases, gridConfig) {
51
79
  const elements = [];
52
- const lines = content.split('\n');
53
- let currentBlock = null;
54
- let nonBlockLines = [];
55
- const flushNonBlockLines = () => {
56
- if (nonBlockLines.length > 0) {
57
- const blockContent = nonBlockLines.join('\n');
58
- if (blockContent.trim()) {
59
- const blockElements = parseBlockContent(blockContent, undefined, undefined);
80
+ // グリッドブロックの開始行をすべて見つける
81
+ const gridRegex = /^\s*\[[\d[a-zA-Z_]/gm;
82
+ const gridMatches = [...content.matchAll(gridRegex)];
83
+ // セグメントの境界を決定
84
+ const positions = [0, ...gridMatches.map(m => m.index), content.length];
85
+ for (let i = 0; i < positions.length - 1; i++) {
86
+ const start = positions[i];
87
+ const end = positions[i + 1];
88
+ const segment = content.slice(start, end);
89
+ if (i === 0) {
90
+ // 最初のセグメントはノンブロック
91
+ if (segment.trim()) {
92
+ const blockElements = parseBlockContent(segment, undefined, undefined, aliases, gridConfig);
60
93
  elements.push(...blockElements);
61
94
  }
62
- nonBlockLines = [];
63
- }
64
- };
65
- for (let i = 0; i < lines.length; i++) {
66
- const line = lines[i];
67
- // グリッドブロックの開始をチェック
68
- const { isGridBlock, position, style } = (0, grid_1.parseBlockGridLine)(line);
69
- if (isGridBlock) {
70
- // 前のノンブロック行があれば処理
71
- flushNonBlockLines();
72
- // 前のグリッドブロックがあれば処理
73
- if (currentBlock && currentBlock.lines.length > 0) {
74
- const blockElements = parseBlockContent(currentBlock.lines.join('\n'), currentBlock.position, currentBlock.style);
75
- elements.push(...blockElements);
76
- }
77
- // 新しいブロックを開始
78
- currentBlock = {
79
- position,
80
- style,
81
- lines: [],
82
- };
83
- continue;
84
- }
85
- // 現在のグリッドブロックに行を追加
86
- if (currentBlock) {
87
- currentBlock.lines.push(line);
88
95
  }
89
96
  else {
90
- // ブロック外の行はまとめておく
91
- nonBlockLines.push(line);
97
+ // グリッドブロック
98
+ const firstLineEnd = segment.indexOf('\n');
99
+ const firstLine = firstLineEnd >= 0 ? segment.slice(0, firstLineEnd) : segment;
100
+ const { position, style } = parseBlockGridLine(firstLine, aliases, gridConfig);
101
+ const blockContent = firstLineEnd >= 0 ? segment.slice(firstLineEnd + 1) : '';
102
+ const blockElements = parseBlockContent(blockContent, position, style, aliases, gridConfig);
103
+ elements.push(...blockElements);
92
104
  }
93
105
  }
94
- // 最後のノンブロック行を処理
95
- flushNonBlockLines();
96
- // 最後のグリッドブロックを処理
97
- if (currentBlock && currentBlock.lines.length > 0) {
98
- const blockElements = parseBlockContent(currentBlock.lines.join('\n'), currentBlock.position, currentBlock.style);
99
- elements.push(...blockElements);
100
- }
101
106
  return elements;
102
107
  }
103
108
  /**
104
109
  * 1行をパース(見出しなど、インラインでグリッド指定があるケース)
105
- */
106
- function _parseLine(line) {
107
- const elements = [];
108
- // 見出しチェック
109
- const headingMatch = line.match(/^(#{1,6})\s+(.+)$/);
110
- if (headingMatch) {
111
- const level = headingMatch[1].length;
112
- const { position, style, cleanText } = (0, grid_1.extractGridAndStyle)(headingMatch[2]);
113
- elements.push({
114
- type: 'heading',
115
- level,
116
- content: cleanText,
117
- position,
118
- style,
119
- raw: line,
120
- });
121
- return elements;
122
- }
123
- // 画像チェック
124
- const imageMatch = line.match(/^!\[([^\]]*)\]\(([^)]+)\)(.*)$/);
125
- if (imageMatch) {
126
- const _altText = imageMatch[1];
127
- const src = imageMatch[2];
128
- const rest = imageMatch[3];
129
- const { position, style } = (0, grid_1.extractGridAndStyle)(rest);
130
- elements.push({
131
- type: 'image',
132
- content: src,
133
- position,
134
- style,
135
- raw: line,
136
- });
137
- return elements;
138
- }
110
+ const elements: SlideElement[] = [];
111
+
112
+ // 見出しチェック
113
+ const headingMatch = line.match(/^(#{1,6})\s+(.+)$/);
114
+ if (headingMatch) {
115
+ const level = headingMatch[1].length;
116
+ const { position, style, animation, cleanText } = extractGridAndStyle(headingMatch[2], aliases, gridConfig);
117
+
118
+ elements.push({
119
+ type: 'heading',
120
+ level,
121
+ content: cleanText,
122
+ position,
123
+ style,
124
+ animation,
125
+ raw: line,
126
+ });
139
127
  return elements;
128
+ }
129
+
130
+ // 動画チェック
131
+ const videoMatch = line.match(/^!v\[([^\]]*)\]\(([^)]+)\)(.*)$/);
132
+ if (videoMatch) {
133
+ const _altText = videoMatch[1];
134
+ const src = videoMatch[2];
135
+ const rest = videoMatch[3];
136
+ const { position, style, animation } = extractGridAndStyle(rest, aliases, gridConfig);
137
+
138
+ elements.push({
139
+ type: 'video',
140
+ content: src,
141
+ position,
142
+ style,
143
+ animation,
144
+ raw: line,
145
+ });
146
+ return elements;
147
+ }
148
+
149
+ // 画像チェック
150
+ const imageMatch = line.match(/^!\[([^\]]*)\]\(([^)]+)\)(.*)$/);
151
+ if (imageMatch) {
152
+ const altText = imageMatch[1];
153
+ const src = imageMatch[2];
154
+ const rest = imageMatch[3];
155
+ const { position, style, animation } = extractGridAndStyle(rest, aliases, gridConfig);
156
+
157
+ elements.push({
158
+ type: 'image',
159
+ content: src,
160
+ position,
161
+ style,
162
+ animation,
163
+ altText: altText || undefined,
164
+ raw: line,
165
+ });
166
+ return elements;
167
+ }
168
+
169
+ return elements;
140
170
  }
171
+
141
172
  /**
142
173
  * ブロックコンテンツをパース
143
174
  */
144
- function parseBlockContent(content, position, style) {
145
- const elements = [];
146
- const tokens = marked_1.marked.lexer(content);
147
- // グリッドブロック内の要素を収集
148
- const blockElements = [];
149
- for (const token of tokens) {
150
- const element = tokenToElement(token);
151
- if (element) {
152
- blockElements.push(element);
175
+ function parseBlockContent(content, position, style, aliases, gridConfig) {
176
+ // ブロック内のグリッド記法をチェック
177
+ const gridRegex = /^\s*\[[\d[a-zA-Z_]/gm;
178
+ const gridMatches = [...content.matchAll(gridRegex)];
179
+ if (gridMatches.length > 0) {
180
+ // グリッド記法がある場合、再帰的に処理
181
+ const elements = [];
182
+ const positions = [0, ...gridMatches.map(m => m.index), content.length];
183
+ for (let i = 0; i < positions.length - 1; i++) {
184
+ const start = positions[i];
185
+ const end = positions[i + 1];
186
+ const segment = content.slice(start, end);
187
+ if (i === 0) {
188
+ // 最初のセグメントはノンブロック
189
+ if (segment.trim()) {
190
+ const blockElements = parseBlockContent(segment, undefined, style, aliases, gridConfig);
191
+ elements.push(...blockElements);
192
+ }
193
+ }
194
+ else {
195
+ // グリッドブロック
196
+ const firstLineEnd = segment.indexOf('\n');
197
+ const firstLine = firstLineEnd >= 0 ? segment.slice(0, firstLineEnd) : segment;
198
+ const { position: pos, style: sty } = parseBlockGridLine(firstLine, aliases, gridConfig);
199
+ const blockContent = firstLineEnd >= 0 ? segment.slice(firstLineEnd + 1) : '';
200
+ const blockElements = parseBlockContent(blockContent, pos, sty || style, aliases, gridConfig);
201
+ elements.push(...blockElements);
202
+ }
153
203
  }
154
- }
155
- // 位置指定がある場合、領域を要素数で分割
156
- if (position && blockElements.length > 0) {
157
- const totalRows = position.rowEnd - position.rowStart + 1;
158
- const rowsPerElement = Math.max(1, Math.floor(totalRows / blockElements.length));
159
- let currentRow = position.rowStart;
160
- for (let i = 0; i < blockElements.length; i++) {
161
- const element = blockElements[i];
162
- const isLast = i === blockElements.length - 1;
163
- const elementRowEnd = isLast ? position.rowEnd : Math.min(currentRow + rowsPerElement - 1, position.rowEnd);
164
- element.position = {
165
- colStart: position.colStart,
166
- colEnd: position.colEnd,
167
- rowStart: currentRow,
168
- rowEnd: elementRowEnd,
169
- };
170
- if (style && !element.style) {
171
- element.style = style;
204
+ // 全体の位置指定がある場合、領域を要素数で分割
205
+ if (position && elements.length > 0) {
206
+ const totalRows = position.rowEnd - position.rowStart + 1;
207
+ const rowsPerElement = Math.max(1, Math.floor(totalRows / elements.length));
208
+ let currentRow = position.rowStart;
209
+ for (let i = 0; i < elements.length; i++) {
210
+ const isLast = i === elements.length - 1;
211
+ const elementRowEnd = isLast ? position.rowEnd : Math.min(currentRow + rowsPerElement - 1, position.rowEnd);
212
+ elements[i].position = {
213
+ colStart: position.colStart,
214
+ colEnd: position.colEnd,
215
+ rowStart: currentRow,
216
+ rowEnd: elementRowEnd,
217
+ };
218
+ if (style && !elements[i].style) {
219
+ elements[i].style = style;
220
+ }
221
+ currentRow = elementRowEnd + 1;
172
222
  }
173
- elements.push(element);
174
- currentRow = elementRowEnd + 1;
175
223
  }
224
+ return elements;
176
225
  }
177
226
  else {
178
- // 位置指定がない場合はそのまま追加
179
- elements.push(...blockElements);
227
+ // 通常のMarkdownパース
228
+ const tokens = marked.lexer(content);
229
+ const blockElements = [];
230
+ for (const token of tokens) {
231
+ const element = tokenToElement(token, aliases, gridConfig);
232
+ if (element) {
233
+ blockElements.push(element);
234
+ }
235
+ }
236
+ // 位置指定がある場合、領域を要素数で分割
237
+ if (position && blockElements.length > 0) {
238
+ const totalRows = position.rowEnd - position.rowStart + 1;
239
+ const rowsPerElement = Math.max(1, Math.floor(totalRows / blockElements.length));
240
+ let currentRow = position.rowStart;
241
+ for (let i = 0; i < blockElements.length; i++) {
242
+ const isLast = i === blockElements.length - 1;
243
+ const elementRowEnd = isLast ? position.rowEnd : Math.min(currentRow + rowsPerElement - 1, position.rowEnd);
244
+ blockElements[i].position = {
245
+ colStart: position.colStart,
246
+ colEnd: position.colEnd,
247
+ rowStart: currentRow,
248
+ rowEnd: elementRowEnd,
249
+ };
250
+ if (style && !blockElements[i].style) {
251
+ blockElements[i].style = style;
252
+ }
253
+ currentRow = elementRowEnd + 1;
254
+ }
255
+ }
256
+ return blockElements;
180
257
  }
181
- return elements;
182
258
  }
183
259
  /**
184
260
  * marked トークンをSlideElementに変換
185
261
  */
186
- function tokenToElement(token) {
262
+ function tokenToElement(token, aliases, gridConfig) {
263
+ // Check plugin parser first
264
+ const pluginParser = pluginManager.getElementParser(token.type);
265
+ if (pluginParser) {
266
+ const element = pluginParser(token, aliases, gridConfig);
267
+ if (element)
268
+ return element;
269
+ }
187
270
  switch (token.type) {
188
271
  case 'heading': {
189
272
  const headingToken = token;
190
- const { position, style, cleanText } = (0, grid_1.extractGridAndStyle)(headingToken.text);
273
+ const { position, style, animation, cleanText } = extractGridAndStyle(headingToken.text, aliases, gridConfig);
191
274
  return {
192
275
  type: 'heading',
193
276
  level: headingToken.depth,
194
- content: cleanText,
277
+ content: sanitizeText(cleanText),
195
278
  position,
196
279
  style,
280
+ animation,
197
281
  raw: headingToken.raw,
198
282
  };
199
283
  }
200
284
  case 'paragraph': {
201
285
  const paragraphToken = token;
202
- const { position, style, cleanText } = (0, grid_1.extractGridAndStyle)(paragraphToken.text);
286
+ const { position, style, animation, cleanText } = extractGridAndStyle(paragraphToken.text, aliases, gridConfig);
287
+ // 動画をチェック
288
+ const videoMatch = paragraphToken.text.match(/^!v\[([^\]]*)\]\(([^)]+)\)(.*)$/);
289
+ if (videoMatch) {
290
+ const src = videoMatch[2];
291
+ const rest = videoMatch[3];
292
+ const { position: vidPos, style: vidStyle, animation: vidAnimation } = extractGridAndStyle(rest, aliases, gridConfig);
293
+ return {
294
+ type: 'video',
295
+ content: sanitizeText(src),
296
+ position: vidPos || position,
297
+ style: vidStyle || style,
298
+ animation: vidAnimation || animation,
299
+ raw: paragraphToken.raw,
300
+ };
301
+ }
203
302
  // 画像をチェック
204
303
  const imageMatch = paragraphToken.text.match(/^!\[([^\]]*)\]\(([^)]+)\)(.*)$/);
205
304
  if (imageMatch) {
305
+ const altText = imageMatch[1];
206
306
  const src = imageMatch[2];
207
307
  const rest = imageMatch[3];
208
- const { position: imgPos, style: imgStyle } = (0, grid_1.extractGridAndStyle)(rest);
308
+ const { position: imgPos, style: imgStyle, animation: imgAnimation } = extractGridAndStyle(rest, aliases, gridConfig);
209
309
  return {
210
310
  type: 'image',
211
- content: src,
311
+ content: sanitizeText(src),
212
312
  position: imgPos || position,
213
313
  style: imgStyle || style,
314
+ animation: imgAnimation || animation,
315
+ altText: altText || undefined,
214
316
  raw: paragraphToken.raw,
215
317
  };
216
318
  }
217
319
  return {
218
320
  type: 'paragraph',
219
- content: cleanText,
321
+ content: sanitizeText(cleanText),
220
322
  position,
221
323
  style,
324
+ animation,
222
325
  raw: paragraphToken.raw,
223
326
  };
224
327
  }
@@ -234,8 +337,8 @@ function tokenToElement(token) {
234
337
  case 'table': {
235
338
  const tableToken = token;
236
339
  const tableData = {
237
- headers: tableToken.header.map((h) => h.text),
238
- rows: tableToken.rows.map((row) => row.map((cell) => cell.text)),
340
+ headers: tableToken.header.map((h) => sanitizeText(h.text)),
341
+ rows: tableToken.rows.map((row) => row.map((cell) => sanitizeText(cell.text))),
239
342
  };
240
343
  return {
241
344
  type: 'table',
@@ -249,13 +352,13 @@ function tokenToElement(token) {
249
352
  if (codeToken.lang === 'mermaid') {
250
353
  return {
251
354
  type: 'mermaid',
252
- content: codeToken.text,
355
+ content: sanitizeText(codeToken.text),
253
356
  raw: codeToken.raw,
254
357
  };
255
358
  }
256
359
  return {
257
360
  type: 'code',
258
- content: codeToken.text,
361
+ content: sanitizeText(codeToken.text),
259
362
  raw: codeToken.raw,
260
363
  };
261
364
  }
@@ -263,10 +366,19 @@ function tokenToElement(token) {
263
366
  const blockquoteToken = token;
264
367
  return {
265
368
  type: 'blockquote',
266
- content: blockquoteToken.text,
369
+ content: sanitizeText(blockquoteToken.text),
267
370
  raw: blockquoteToken.raw,
268
371
  };
269
372
  }
373
+ case 'html': {
374
+ // HTMLトークンはサニタイズしてテキストとして扱う(念のため)
375
+ const htmlToken = token;
376
+ return {
377
+ type: 'paragraph',
378
+ content: sanitizeText(htmlToken.raw),
379
+ raw: htmlToken.raw,
380
+ };
381
+ }
270
382
  default:
271
383
  return null;
272
384
  }
@@ -276,7 +388,7 @@ function tokenToElement(token) {
276
388
  */
277
389
  function parseListItems(items, ordered) {
278
390
  return items.map((item) => ({
279
- content: item.text.split('\n')[0], // 最初の行のみ
391
+ content: sanitizeText(item.text.split('\n')[0]), // 最初の行のみ
280
392
  level: 0,
281
393
  ordered,
282
394
  children: item.tokens
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/parser/markdown.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAkBH,sCAcC;AA9BD,mCAAyD;AAUzD,+CAAiD;AACjD,iCAAiE;AAEjE;;GAEG;AACH,SAAgB,aAAa,CAAC,QAAgB;IAC5C,uBAAuB;IACvB,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,IAAA,8BAAgB,EAAC,QAAQ,CAAC,CAAC;IAE5E,aAAa;IACb,MAAM,aAAa,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAExC,YAAY;IACZ,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;IAEnE,OAAO;QACL,iBAAiB;QACjB,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,OAAe;IAClC,8BAA8B;IAC9B,uBAAuB;IACvB,MAAM,cAAc,GAAG,YAAY,CAAC;IACpC,OAAO,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC1E,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,OAAe;IACjC,4BAA4B;IAC5B,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,IAAA,8BAAgB,EAAC,OAAO,CAAC,CAAC;IAExD,SAAS;IACT,MAAM,QAAQ,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAE1C,OAAO;QACL,WAAW;QACX,QAAQ;KACT,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,OAAe;IACzC,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAElC,IAAI,YAAY,GAIL,IAAI,CAAC;IAEhB,IAAI,aAAa,GAAa,EAAE,CAAC;IAEjC,MAAM,kBAAkB,GAAG,GAAG,EAAE;QAC9B,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;gBACxB,MAAM,aAAa,GAAG,iBAAiB,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;gBAC5E,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YAClC,CAAC;YACD,aAAa,GAAG,EAAE,CAAC;QACrB,CAAC;IACH,CAAC,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEtB,mBAAmB;QACnB,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAA,yBAAkB,EAAC,IAAI,CAAC,CAAC;QAElE,IAAI,WAAW,EAAE,CAAC;YAChB,kBAAkB;YAClB,kBAAkB,EAAE,CAAC;YAErB,mBAAmB;YACnB,IAAI,YAAY,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,MAAM,aAAa,GAAG,iBAAiB,CACrC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAC7B,YAAY,CAAC,QAAQ,EACrB,YAAY,CAAC,KAAK,CACnB,CAAC;gBACF,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;YAClC,CAAC;YAED,aAAa;YACb,YAAY,GAAG;gBACb,QAAQ;gBACR,KAAK;gBACL,KAAK,EAAE,EAAE;aACV,CAAC;YACF,SAAS;QACX,CAAC;QAED,mBAAmB;QACnB,IAAI,YAAY,EAAE,CAAC;YACjB,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChC,CAAC;aAAM,CAAC;YACN,iBAAiB;YACjB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,kBAAkB,EAAE,CAAC;IAErB,iBAAiB;IACjB,IAAI,YAAY,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClD,MAAM,aAAa,GAAG,iBAAiB,CACrC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAC7B,YAAY,CAAC,QAAQ,EACrB,YAAY,CAAC,KAAK,CACnB,CAAC;QACF,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,UAAU,CAAC,IAAY;IAC9B,MAAM,QAAQ,GAAmB,EAAE,CAAC;IAEpC,UAAU;IACV,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IACrD,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,KAAK,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACrC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAA,0BAAmB,EAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAE5E,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,SAAS;YACf,KAAK;YACL,OAAO,EAAE,SAAS;YAClB,QAAQ;YACR,KAAK;YACL,GAAG,EAAE,IAAI;SACV,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,SAAS;IACT,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAChE,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC3B,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,IAAA,0BAAmB,EAAC,IAAI,CAAC,CAAC;QAEtD,QAAQ,CAAC,IAAI,CAAC;YACZ,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,GAAG;YACZ,QAAQ;YACR,KAAK;YACL,GAAG,EAAE,IAAI;SACV,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CACxB,OAAe,EACf,QAAuB,EACvB,KAAoB;IAEpB,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,MAAM,MAAM,GAAG,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAErC,kBAAkB;IAClB,MAAM,aAAa,GAAmB,EAAE,CAAC;IACzC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,OAAO,EAAE,CAAC;YACZ,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9B,CAAC;IACH,CAAC;IAED,sBAAsB;IACtB,IAAI,QAAQ,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QAEjF,IAAI,UAAU,GAAG,QAAQ,CAAC,QAAQ,CAAC;QAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC9C,MAAM,OAAO,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;YACjC,MAAM,MAAM,GAAG,CAAC,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9C,MAAM,aAAa,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,cAAc,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;YAE5G,OAAO,CAAC,QAAQ,GAAG;gBACjB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,QAAQ,EAAE,UAAU;gBACpB,MAAM,EAAE,aAAa;aACtB,CAAC;YAEF,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC5B,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC;YACxB,CAAC;YAED,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvB,UAAU,GAAG,aAAa,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,mBAAmB;QACnB,QAAQ,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC,CAAC;IAClC,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,KAAY;IAClC,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;QACnB,KAAK,SAAS,CAAC,CAAC,CAAC;YACf,MAAM,YAAY,GAAG,KAAuB,CAAC;YAC7C,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAA,0BAAmB,EAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAC9E,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,KAAK,EAAE,YAAY,CAAC,KAAK;gBACzB,OAAO,EAAE,SAAS;gBAClB,QAAQ;gBACR,KAAK;gBACL,GAAG,EAAE,YAAY,CAAC,GAAG;aACtB,CAAC;QACJ,CAAC;QAED,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,MAAM,cAAc,GAAG,KAAyB,CAAC;YACjD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,GAAG,IAAA,0BAAmB,EAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YAEhF,UAAU;YACV,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAC/E,IAAI,UAAU,EAAE,CAAC;gBACf,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC1B,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;gBAC3B,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAA,0BAAmB,EAAC,IAAI,CAAC,CAAC;gBACxE,OAAO;oBACL,IAAI,EAAE,OAAO;oBACb,OAAO,EAAE,GAAG;oBACZ,QAAQ,EAAE,MAAM,IAAI,QAAQ;oBAC5B,KAAK,EAAE,QAAQ,IAAI,KAAK;oBACxB,GAAG,EAAE,cAAc,CAAC,GAAG;iBACxB,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,SAAS;gBAClB,QAAQ;gBACR,KAAK;gBACL,GAAG,EAAE,cAAc,CAAC,GAAG;aACxB,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,SAAS,GAAG,KAAoB,CAAC;YACvC,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;YACjE,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,KAAK;gBACd,GAAG,EAAE,SAAS,CAAC,GAAG;aACnB,CAAC;QACJ,CAAC;QAED,KAAK,OAAO,CAAC,CAAC,CAAC;YACb,MAAM,UAAU,GAAG,KAAqB,CAAC;YACzC,MAAM,SAAS,GAAc;gBAC3B,OAAO,EAAE,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC7C,IAAI,EAAE,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACjE,CAAC;YACF,OAAO;gBACL,IAAI,EAAE,OAAO;gBACb,OAAO,EAAE,SAAS;gBAClB,GAAG,EAAE,UAAU,CAAC,GAAG;aACpB,CAAC;QACJ,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,MAAM,SAAS,GAAG,KAAoB,CAAC;YACvC,yBAAyB;YACzB,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;gBACjC,OAAO;oBACL,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,SAAS,CAAC,IAAI;oBACvB,GAAG,EAAE,SAAS,CAAC,GAAG;iBACnB,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE,SAAS,CAAC,IAAI;gBACvB,GAAG,EAAE,SAAS,CAAC,GAAG;aACnB,CAAC;QACJ,CAAC;QAED,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,MAAM,eAAe,GAAG,KAA0B,CAAC;YACnD,OAAO;gBACL,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,eAAe,CAAC,IAAI;gBAC7B,GAAG,EAAE,eAAe,CAAC,GAAG;aACzB,CAAC;QACJ,CAAC;QAED;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAS,cAAc,CAAC,KAAwB,EAAE,OAAgB;IAChE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC1B,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS;QAC5C,KAAK,EAAE,CAAC;QACR,OAAO;QACP,QAAQ,EAAE,IAAI,CAAC,MAAM;YACnB,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;YAC9B,CAAC,CAAC,SAAS;KACd,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;GAEG;AACH,SAAS,eAAe,CAAC,MAAe;IACtC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAA4B,CAAC;IACnF,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IACjC,OAAO,cAAc,CAAC,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC;AAC5D,CAAC"}
1
+ {"version":3,"file":"markdown.js","sourceRoot":"","sources":["../../src/parser/markdown.ts"],"names":[],"mappings":"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"}
@@ -7,5 +7,5 @@ export declare const styleClasses: Record<string, Record<string, unknown>>;
7
7
  /**
8
8
  * スタイルクラスをpptxgenjs形式に変換
9
9
  */
10
- export declare function resolveStyleClasses(classes: string[]): Record<string, unknown>;
10
+ export declare function resolveStyleClasses(classes: string[], customClasses?: Record<string, Record<string, unknown>>): Record<string, unknown>;
11
11
  //# sourceMappingURL=default.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/theme/default.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,YAAY,EAAE,WAqB1B,CAAC;AAGF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoChE,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAW9E"}
1
+ {"version":3,"file":"default.d.ts","sourceRoot":"","sources":["../../src/theme/default.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD,eAAO,MAAM,YAAY,EAAE,WA8B1B,CAAC;AAGF,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoChE,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAcvI"}
@@ -1,11 +1,7 @@
1
- "use strict";
2
1
  /**
3
2
  * デフォルトテーマ
4
3
  */
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.styleClasses = exports.defaultTheme = void 0;
7
- exports.resolveStyleClasses = resolveStyleClasses;
8
- exports.defaultTheme = {
4
+ export const defaultTheme = {
9
5
  name: 'default',
10
6
  colors: {
11
7
  primary: '#2563eb', // 青
@@ -26,9 +22,18 @@ exports.defaultTheme = {
26
22
  body: 18,
27
23
  small: 14,
28
24
  },
25
+ slideMaster: {
26
+ backgroundColor: '#ffffff',
27
+ margin: {
28
+ top: 0.5,
29
+ bottom: 0.5,
30
+ left: 0.5,
31
+ right: 0.5,
32
+ },
33
+ },
29
34
  };
30
35
  // スタイルクラスの定義
31
- exports.styleClasses = {
36
+ export const styleClasses = {
32
37
  // 配置
33
38
  center: { align: 'center', valign: 'middle' },
34
39
  left: { align: 'left' },
@@ -63,10 +68,13 @@ exports.styleClasses = {
63
68
  /**
64
69
  * スタイルクラスをpptxgenjs形式に変換
65
70
  */
66
- function resolveStyleClasses(classes) {
71
+ export function resolveStyleClasses(classes, customClasses) {
67
72
  let result = {};
68
73
  for (const className of classes) {
69
- const style = exports.styleClasses[className];
74
+ let style = customClasses?.[className];
75
+ if (!style) {
76
+ style = styleClasses[className];
77
+ }
70
78
  if (style) {
71
79
  result = { ...result, ...style };
72
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"default.js","sourceRoot":"","sources":["../../src/theme/default.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"default.js","sourceRoot":"","sources":["../../src/theme/default.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,16 @@
1
1
  /**
2
2
  * テーマモジュール
3
3
  */
4
+ import type { ThemeConfig } from '../types/index.js';
4
5
  export { defaultTheme, styleClasses, resolveStyleClasses } from './default.js';
6
+ export { loadTheme };
7
+ export { resolveTheme };
8
+ /**
9
+ * YAMLファイルからテーマをロード
10
+ */
11
+ declare function loadTheme(filePath: string, basePath?: string): Partial<ThemeConfig>;
12
+ /**
13
+ * Front Matterからテーマを解決
14
+ */
15
+ declare function resolveTheme(themeValue: string | Partial<ThemeConfig> | undefined, basePath?: string): ThemeConfig;
5
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/theme/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAIrD,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,SAAS,EAAE,CAAC;AACrB,OAAO,EAAE,YAAY,EAAE,CAAC;AAExB;;GAEG;AACH,iBAAS,SAAS,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAY5E;AAsBD;;GAEG;AACH,iBAAS,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,SAAS,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,WAAW,CAuB3G"}