marhup 0.1.7

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 (94) hide show
  1. package/README.md +377 -0
  2. package/dist/cli.d.ts +6 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +99 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/generator/code.d.ts +17 -0
  7. package/dist/generator/code.d.ts.map +1 -0
  8. package/dist/generator/code.js +36 -0
  9. package/dist/generator/code.js.map +1 -0
  10. package/dist/generator/image.d.ts +17 -0
  11. package/dist/generator/image.d.ts.map +1 -0
  12. package/dist/generator/image.js +186 -0
  13. package/dist/generator/image.js.map +1 -0
  14. package/dist/generator/index.d.ts +11 -0
  15. package/dist/generator/index.d.ts.map +1 -0
  16. package/dist/generator/index.js +22 -0
  17. package/dist/generator/index.js.map +1 -0
  18. package/dist/generator/list.d.ts +17 -0
  19. package/dist/generator/list.d.ts.map +1 -0
  20. package/dist/generator/list.js +33 -0
  21. package/dist/generator/list.js.map +1 -0
  22. package/dist/generator/mermaid.d.ts +17 -0
  23. package/dist/generator/mermaid.d.ts.map +1 -0
  24. package/dist/generator/mermaid.js +192 -0
  25. package/dist/generator/mermaid.js.map +1 -0
  26. package/dist/generator/pptx.d.ts +9 -0
  27. package/dist/generator/pptx.d.ts.map +1 -0
  28. package/dist/generator/pptx.js +90 -0
  29. package/dist/generator/pptx.js.map +1 -0
  30. package/dist/generator/table.d.ts +17 -0
  31. package/dist/generator/table.d.ts.map +1 -0
  32. package/dist/generator/table.js +48 -0
  33. package/dist/generator/table.js.map +1 -0
  34. package/dist/generator/text.d.ts +21 -0
  35. package/dist/generator/text.d.ts.map +1 -0
  36. package/dist/generator/text.js +57 -0
  37. package/dist/generator/text.js.map +1 -0
  38. package/dist/index.d.ts +20 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +73 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/layout/auto.d.ts +30 -0
  43. package/dist/layout/auto.d.ts.map +1 -0
  44. package/dist/layout/auto.js +155 -0
  45. package/dist/layout/auto.js.map +1 -0
  46. package/dist/layout/engine.d.ts +27 -0
  47. package/dist/layout/engine.d.ts.map +1 -0
  48. package/dist/layout/engine.js +59 -0
  49. package/dist/layout/engine.js.map +1 -0
  50. package/dist/layout/index.d.ts +7 -0
  51. package/dist/layout/index.d.ts.map +1 -0
  52. package/dist/layout/index.js +14 -0
  53. package/dist/layout/index.js.map +1 -0
  54. package/dist/layout/types.d.ts +22 -0
  55. package/dist/layout/types.d.ts.map +1 -0
  56. package/dist/layout/types.js +6 -0
  57. package/dist/layout/types.js.map +1 -0
  58. package/dist/mcp-handlers.d.ts +33 -0
  59. package/dist/mcp-handlers.d.ts.map +1 -0
  60. package/dist/mcp-handlers.js +280 -0
  61. package/dist/mcp-handlers.js.map +1 -0
  62. package/dist/mcp.d.ts +7 -0
  63. package/dist/mcp.d.ts.map +1 -0
  64. package/dist/mcp.js +44 -0
  65. package/dist/mcp.js.map +1 -0
  66. package/dist/parser/frontmatter.d.ts +19 -0
  67. package/dist/parser/frontmatter.d.ts.map +1 -0
  68. package/dist/parser/frontmatter.js +51 -0
  69. package/dist/parser/frontmatter.js.map +1 -0
  70. package/dist/parser/grid.d.ts +36 -0
  71. package/dist/parser/grid.d.ts.map +1 -0
  72. package/dist/parser/grid.js +92 -0
  73. package/dist/parser/grid.js.map +1 -0
  74. package/dist/parser/index.d.ts +7 -0
  75. package/dist/parser/index.d.ts.map +1 -0
  76. package/dist/parser/index.js +17 -0
  77. package/dist/parser/index.js.map +1 -0
  78. package/dist/parser/markdown.d.ts +9 -0
  79. package/dist/parser/markdown.d.ts.map +1 -0
  80. package/dist/parser/markdown.js +296 -0
  81. package/dist/parser/markdown.js.map +1 -0
  82. package/dist/theme/default.d.ts +11 -0
  83. package/dist/theme/default.d.ts.map +1 -0
  84. package/dist/theme/default.js +76 -0
  85. package/dist/theme/default.js.map +1 -0
  86. package/dist/theme/index.d.ts +5 -0
  87. package/dist/theme/index.d.ts.map +1 -0
  88. package/dist/theme/index.js +11 -0
  89. package/dist/theme/index.js.map +1 -0
  90. package/dist/types/index.d.ts +86 -0
  91. package/dist/types/index.d.ts.map +1 -0
  92. package/dist/types/index.js +23 -0
  93. package/dist/types/index.js.map +1 -0
  94. package/package.json +66 -0
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ /**
3
+ * テーブル要素の生成
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.addTableElement = addTableElement;
7
+ const index_1 = require("../theme/index");
8
+ /**
9
+ * テーブル要素を追加
10
+ */
11
+ function addTableElement(slide, element, coords, _styleProps) {
12
+ const tableData = element.content;
13
+ // ヘッダー行
14
+ const headerRow = tableData.headers.map((header) => ({
15
+ text: header,
16
+ options: {
17
+ fill: { color: index_1.defaultTheme.colors.primary.replace('#', '') },
18
+ color: 'ffffff',
19
+ bold: true,
20
+ fontSize: index_1.defaultTheme.fontSize.body - 2,
21
+ fontFace: index_1.defaultTheme.fonts.body,
22
+ align: 'center',
23
+ valign: 'middle',
24
+ },
25
+ }));
26
+ // データ行
27
+ const dataRows = tableData.rows.map((row, rowIndex) => row.map((cell) => ({
28
+ text: cell,
29
+ options: {
30
+ fill: { color: rowIndex % 2 === 0 ? 'ffffff' : 'f8fafc' },
31
+ color: index_1.defaultTheme.colors.text.replace('#', ''),
32
+ fontSize: index_1.defaultTheme.fontSize.body - 2,
33
+ fontFace: index_1.defaultTheme.fonts.body,
34
+ align: 'left',
35
+ valign: 'middle',
36
+ },
37
+ })));
38
+ const allRows = [headerRow, ...dataRows];
39
+ slide.addTable(allRows, {
40
+ x: coords.x,
41
+ y: coords.y,
42
+ w: coords.w,
43
+ h: coords.h,
44
+ border: { type: 'solid', color: 'e2e8f0', pt: 1 },
45
+ colW: Array(tableData.headers.length).fill(coords.w / tableData.headers.length),
46
+ });
47
+ }
48
+ //# sourceMappingURL=table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/generator/table.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAiBH,0CA+CC;AA3DD,0CAA8C;AAS9C;;GAEG;AACH,SAAgB,eAAe,CAC7B,KAAsB,EACtB,OAAsB,EACtB,MAAmB,EACnB,WAAoC;IAEpC,MAAM,SAAS,GAAG,OAAO,CAAC,OAAoB,CAAC;IAE/C,QAAQ;IACR,MAAM,SAAS,GAA0B,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC1E,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE;YACP,IAAI,EAAE,EAAE,KAAK,EAAE,oBAAY,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE;YAC7D,KAAK,EAAE,QAAQ;YACf,IAAI,EAAE,IAAI;YACV,QAAQ,EAAE,oBAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;YACxC,QAAQ,EAAE,oBAAY,CAAC,KAAK,CAAC,IAAI;YACjC,KAAK,EAAE,QAAQ;YACf,MAAM,EAAE,QAAQ;SACjB;KACF,CAAC,CAAC,CAAC;IAEJ,OAAO;IACP,MAAM,QAAQ,GAA4B,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAC7E,GAAG,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACjB,IAAI,EAAE,IAAI;QACV,OAAO,EAAE;YACP,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE;YACzD,KAAK,EAAE,oBAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;YAChD,QAAQ,EAAE,oBAAY,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC;YACxC,QAAQ,EAAE,oBAAY,CAAC,KAAK,CAAC,IAAI;YACjC,KAAK,EAAE,MAAM;YACb,MAAM,EAAE,QAAQ;SACjB;KACF,CAAC,CAAC,CACJ,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,SAAS,EAAE,GAAG,QAAQ,CAAC,CAAC;IAEzC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE;QACtB,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,EAAE;QACjD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;KAChF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * テキスト要素の生成
3
+ */
4
+ import type PptxGenJS from 'pptxgenjs';
5
+ import type { PlacedElement } from '../layout/index';
6
+ interface Coordinates {
7
+ x: number;
8
+ y: number;
9
+ w: number;
10
+ h: number;
11
+ }
12
+ /**
13
+ * 見出し要素を追加
14
+ */
15
+ export declare function addHeadingElement(slide: PptxGenJS.Slide, element: PlacedElement, coords: Coordinates, styleProps: Record<string, unknown>): void;
16
+ /**
17
+ * 段落要素を追加
18
+ */
19
+ export declare function addTextElement(slide: PptxGenJS.Slide, element: PlacedElement, coords: Coordinates, styleProps: Record<string, unknown>): void;
20
+ export {};
21
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/generator/text.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,SAAS,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAGrD,UAAU,WAAW;IACnB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,SAAS,CAAC,KAAK,EACtB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,IAAI,CA6BN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,SAAS,CAAC,KAAK,EACtB,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAClC,IAAI,CAeN"}
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ /**
3
+ * テキスト要素の生成
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.addHeadingElement = addHeadingElement;
7
+ exports.addTextElement = addTextElement;
8
+ const index_1 = require("../theme/index");
9
+ /**
10
+ * 見出し要素を追加
11
+ */
12
+ function addHeadingElement(slide, element, coords, styleProps) {
13
+ const level = element.level || 1;
14
+ const content = element.content;
15
+ // レベルに応じたフォントサイズ
16
+ const fontSizeMap = {
17
+ 1: index_1.defaultTheme.fontSize.h1,
18
+ 2: index_1.defaultTheme.fontSize.h2,
19
+ 3: index_1.defaultTheme.fontSize.h3,
20
+ 4: 20,
21
+ 5: 18,
22
+ 6: 16,
23
+ };
24
+ const fontSize = fontSizeMap[level] || index_1.defaultTheme.fontSize.body;
25
+ slide.addText(content, {
26
+ x: coords.x,
27
+ y: coords.y,
28
+ w: coords.w,
29
+ h: coords.h,
30
+ fontSize,
31
+ bold: level <= 2,
32
+ color: index_1.defaultTheme.colors.text.replace('#', ''),
33
+ fontFace: index_1.defaultTheme.fonts.title,
34
+ align: level === 1 ? 'center' : 'left',
35
+ valign: 'middle',
36
+ ...styleProps,
37
+ });
38
+ }
39
+ /**
40
+ * 段落要素を追加
41
+ */
42
+ function addTextElement(slide, element, coords, styleProps) {
43
+ const content = element.content;
44
+ slide.addText(content, {
45
+ x: coords.x,
46
+ y: coords.y,
47
+ w: coords.w,
48
+ h: coords.h,
49
+ fontSize: index_1.defaultTheme.fontSize.body,
50
+ color: index_1.defaultTheme.colors.text.replace('#', ''),
51
+ fontFace: index_1.defaultTheme.fonts.body,
52
+ align: 'left',
53
+ valign: 'top',
54
+ ...styleProps,
55
+ });
56
+ }
57
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/generator/text.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAgBH,8CAkCC;AAKD,wCAoBC;AAvED,0CAA8C;AAS9C;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,KAAsB,EACtB,OAAsB,EACtB,MAAmB,EACnB,UAAmC;IAEnC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAiB,CAAC;IAE1C,iBAAiB;IACjB,MAAM,WAAW,GAA2B;QAC1C,CAAC,EAAE,oBAAY,CAAC,QAAQ,CAAC,EAAE;QAC3B,CAAC,EAAE,oBAAY,CAAC,QAAQ,CAAC,EAAE;QAC3B,CAAC,EAAE,oBAAY,CAAC,QAAQ,CAAC,EAAE;QAC3B,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;KACN,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,oBAAY,CAAC,QAAQ,CAAC,IAAI,CAAC;IAElE,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE;QACrB,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,QAAQ;QACR,IAAI,EAAE,KAAK,IAAI,CAAC;QAChB,KAAK,EAAE,oBAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QAChD,QAAQ,EAAE,oBAAY,CAAC,KAAK,CAAC,KAAK;QAClC,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;QACtC,MAAM,EAAE,QAAQ;QAChB,GAAG,UAAU;KACd,CAAC,CAAC;AACL,CAAC;AAED;;GAEG;AACH,SAAgB,cAAc,CAC5B,KAAsB,EACtB,OAAsB,EACtB,MAAmB,EACnB,UAAmC;IAEnC,MAAM,OAAO,GAAG,OAAO,CAAC,OAAiB,CAAC;IAE1C,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE;QACrB,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,QAAQ,EAAE,oBAAY,CAAC,QAAQ,CAAC,IAAI;QACpC,KAAK,EAAE,oBAAY,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QAChD,QAAQ,EAAE,oBAAY,CAAC,KAAK,CAAC,IAAI;QACjC,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,KAAK;QACb,GAAG,UAAU;KACd,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * marhup - Markdown to PowerPoint converter
3
+ * メインエクスポート
4
+ */
5
+ import type { ConvertOptions, ParsedDocument } from './types/index';
6
+ /**
7
+ * MarkdownからPPTXを生成
8
+ */
9
+ export declare function marhup(markdown: string, options: ConvertOptions): Promise<void>;
10
+ /**
11
+ * MarkdownファイルからPPTXを生成
12
+ */
13
+ export declare function marhupFile(inputPath: string, options: ConvertOptions): Promise<void>;
14
+ /**
15
+ * Markdownをパースして構造を返す(デバッグ用)
16
+ */
17
+ export declare function parse(markdown: string): ParsedDocument;
18
+ export type { ConvertOptions, ParsedDocument, Slide, SlideElement, GridPosition, StyleOptions, ThemeConfig, } from './types/index.js';
19
+ export default marhup;
20
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpE;;GAEG;AACH,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAMf;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAKf;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAEtD;AAGD,YAAY,EACV,cAAc,EACd,cAAc,EACd,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAG1B,eAAe,MAAM,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+ /**
3
+ * marhup - Markdown to PowerPoint converter
4
+ * メインエクスポート
5
+ */
6
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
7
+ if (k2 === undefined) k2 = k;
8
+ var desc = Object.getOwnPropertyDescriptor(m, k);
9
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10
+ desc = { enumerable: true, get: function() { return m[k]; } };
11
+ }
12
+ Object.defineProperty(o, k2, desc);
13
+ }) : (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ o[k2] = m[k];
16
+ }));
17
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
18
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
19
+ }) : function(o, v) {
20
+ o["default"] = v;
21
+ });
22
+ var __importStar = (this && this.__importStar) || (function () {
23
+ var ownKeys = function(o) {
24
+ ownKeys = Object.getOwnPropertyNames || function (o) {
25
+ var ar = [];
26
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
27
+ return ar;
28
+ };
29
+ return ownKeys(o);
30
+ };
31
+ return function (mod) {
32
+ if (mod && mod.__esModule) return mod;
33
+ var result = {};
34
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
35
+ __setModuleDefault(result, mod);
36
+ return result;
37
+ };
38
+ })();
39
+ Object.defineProperty(exports, "__esModule", { value: true });
40
+ exports.marhup = marhup;
41
+ exports.marhupFile = marhupFile;
42
+ exports.parse = parse;
43
+ const fs = __importStar(require("fs"));
44
+ const path = __importStar(require("path"));
45
+ const index_1 = require("./parser/index");
46
+ const index_2 = require("./generator/index");
47
+ /**
48
+ * MarkdownからPPTXを生成
49
+ */
50
+ async function marhup(markdown, options) {
51
+ // パース
52
+ const document = (0, index_1.parseMarkdown)(markdown);
53
+ // PPTX生成
54
+ await (0, index_2.generatePptx)(document, options.output, options.basePath);
55
+ }
56
+ /**
57
+ * MarkdownファイルからPPTXを生成
58
+ */
59
+ async function marhupFile(inputPath, options) {
60
+ const markdown = fs.readFileSync(inputPath, 'utf-8');
61
+ // 入力ファイルのディレクトリをベースパスとして設定
62
+ const basePath = options.basePath || path.dirname(path.resolve(inputPath));
63
+ await marhup(markdown, { ...options, basePath });
64
+ }
65
+ /**
66
+ * Markdownをパースして構造を返す(デバッグ用)
67
+ */
68
+ function parse(markdown) {
69
+ return (0, index_1.parseMarkdown)(markdown);
70
+ }
71
+ // デフォルトエクスポート
72
+ exports.default = marhup;
73
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWH,wBASC;AAKD,gCAQC;AAKD,sBAEC;AAtCD,uCAAyB;AACzB,2CAA6B;AAC7B,0CAA+C;AAC/C,6CAAiD;AAGjD;;GAEG;AACI,KAAK,UAAU,MAAM,CAC1B,QAAgB,EAChB,OAAuB;IAEvB,MAAM;IACN,MAAM,QAAQ,GAAG,IAAA,qBAAa,EAAC,QAAQ,CAAC,CAAC;IAEzC,SAAS;IACT,MAAM,IAAA,oBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACI,KAAK,UAAU,UAAU,CAC9B,SAAiB,EACjB,OAAuB;IAEvB,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACrD,2BAA2B;IAC3B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3E,MAAM,MAAM,CAAC,QAAQ,EAAE,EAAE,GAAG,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;AACnD,CAAC;AAED;;GAEG;AACH,SAAgB,KAAK,CAAC,QAAgB;IACpC,OAAO,IAAA,qBAAa,EAAC,QAAQ,CAAC,CAAC;AACjC,CAAC;AAaD,cAAc;AACd,kBAAe,MAAM,CAAC"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * 自動配置ロジック
3
+ */
4
+ import type { SlideElement, GridConfig, GridPosition } from '../types/index.js';
5
+ import type { GridMap, PlacedElement } from './types.js';
6
+ /**
7
+ * 空のグリッドマップを作成
8
+ */
9
+ export declare function createEmptyGridMap(cols: number, rows: number): GridMap;
10
+ /**
11
+ * グリッドマップに要素を配置
12
+ */
13
+ export declare function placeOnGrid(gridMap: GridMap, position: GridPosition, elementIndex: number): void;
14
+ /**
15
+ * 指定位置が空いているかチェック
16
+ */
17
+ export declare function isAreaAvailable(gridMap: GridMap, position: GridPosition): boolean;
18
+ /**
19
+ * 要素の高さを推定
20
+ */
21
+ export declare function estimateElementHeight(element: SlideElement): number;
22
+ /**
23
+ * 利用可能な位置を検索
24
+ */
25
+ export declare function findAvailablePosition(gridMap: GridMap, startRow: number, height: number, grid: GridConfig): GridPosition | null;
26
+ /**
27
+ * 要素を自動配置
28
+ */
29
+ export declare function autoPlaceElements(elements: SlideElement[], grid: GridConfig): PlacedElement[];
30
+ //# sourceMappingURL=auto.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto.d.ts","sourceRoot":"","sources":["../../src/layout/auto.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAChF,OAAO,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAazD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAItE;AAED;;GAEG;AACH,wBAAgB,WAAW,CACzB,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,MAAM,GACnB,IAAI,CAQN;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,YAAY,GACrB,OAAO,CAYT;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAgBnE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,UAAU,GACf,YAAY,GAAG,IAAI,CAuBrB;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,YAAY,EAAE,EACxB,IAAI,EAAE,UAAU,GACf,aAAa,EAAE,CA2DjB"}
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ /**
3
+ * 自動配置ロジック
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.createEmptyGridMap = createEmptyGridMap;
7
+ exports.placeOnGrid = placeOnGrid;
8
+ exports.isAreaAvailable = isAreaAvailable;
9
+ exports.estimateElementHeight = estimateElementHeight;
10
+ exports.findAvailablePosition = findAvailablePosition;
11
+ exports.autoPlaceElements = autoPlaceElements;
12
+ // 要素タイプごとのデフォルト高さ
13
+ const ELEMENT_HEIGHT = {
14
+ heading: 1,
15
+ paragraph: 2,
16
+ list: 3,
17
+ image: 4,
18
+ table: 3,
19
+ code: 3,
20
+ blockquote: 2,
21
+ };
22
+ /**
23
+ * 空のグリッドマップを作成
24
+ */
25
+ function createEmptyGridMap(cols, rows) {
26
+ return Array.from({ length: rows }, () => Array.from({ length: cols }, () => ({ occupied: false })));
27
+ }
28
+ /**
29
+ * グリッドマップに要素を配置
30
+ */
31
+ function placeOnGrid(gridMap, position, elementIndex) {
32
+ for (let row = position.rowStart - 1; row < position.rowEnd; row++) {
33
+ for (let col = position.colStart - 1; col < position.colEnd; col++) {
34
+ if (row >= 0 && row < gridMap.length && col >= 0 && col < gridMap[0].length) {
35
+ gridMap[row][col] = { occupied: true, elementIndex };
36
+ }
37
+ }
38
+ }
39
+ }
40
+ /**
41
+ * 指定位置が空いているかチェック
42
+ */
43
+ function isAreaAvailable(gridMap, position) {
44
+ for (let row = position.rowStart - 1; row < position.rowEnd; row++) {
45
+ for (let col = position.colStart - 1; col < position.colEnd; col++) {
46
+ if (row < 0 || row >= gridMap.length || col < 0 || col >= gridMap[0].length) {
47
+ return false;
48
+ }
49
+ if (gridMap[row][col].occupied) {
50
+ return false;
51
+ }
52
+ }
53
+ }
54
+ return true;
55
+ }
56
+ /**
57
+ * 要素の高さを推定
58
+ */
59
+ function estimateElementHeight(element) {
60
+ const baseHeight = ELEMENT_HEIGHT[element.type] || 2;
61
+ // リストの場合、アイテム数に応じて調整
62
+ if (element.type === 'list' && Array.isArray(element.content)) {
63
+ const itemCount = element.content.length;
64
+ return Math.min(Math.ceil(itemCount / 2) + 1, 6);
65
+ }
66
+ // テーブルの場合、行数に応じて調整
67
+ if (element.type === 'table' && typeof element.content === 'object' && 'rows' in element.content) {
68
+ const rowCount = element.content.rows.length + 1; // ヘッダー含む
69
+ return Math.min(rowCount, 6);
70
+ }
71
+ return baseHeight;
72
+ }
73
+ /**
74
+ * 利用可能な位置を検索
75
+ */
76
+ function findAvailablePosition(gridMap, startRow, height, grid) {
77
+ const { cols, rows } = grid;
78
+ // 指定行から下に向かって探索
79
+ for (let row = startRow; row <= rows - height + 1; row++) {
80
+ const position = {
81
+ colStart: 1,
82
+ colEnd: cols,
83
+ rowStart: row,
84
+ rowEnd: row + height - 1,
85
+ };
86
+ if (isAreaAvailable(gridMap, position)) {
87
+ return position;
88
+ }
89
+ }
90
+ // 見つからなければ、高さを縮めて再試行
91
+ if (height > 1) {
92
+ return findAvailablePosition(gridMap, startRow, height - 1, grid);
93
+ }
94
+ return null;
95
+ }
96
+ /**
97
+ * 要素を自動配置
98
+ */
99
+ function autoPlaceElements(elements, grid) {
100
+ const gridMap = createEmptyGridMap(grid.cols, grid.rows);
101
+ const placed = [];
102
+ let currentRow = 1;
103
+ // まず、明示的に位置指定された要素を配置
104
+ const explicitElements = elements.filter((e) => e.position);
105
+ const implicitElements = elements.filter((e) => !e.position);
106
+ for (let i = 0; i < explicitElements.length; i++) {
107
+ const element = explicitElements[i];
108
+ placeOnGrid(gridMap, element.position, placed.length);
109
+ placed.push({
110
+ type: element.type,
111
+ content: element.content,
112
+ level: element.level,
113
+ position: element.position,
114
+ style: element.style,
115
+ raw: element.raw,
116
+ });
117
+ }
118
+ // 次に、位置未指定の要素を自動配置
119
+ for (const element of implicitElements) {
120
+ const height = estimateElementHeight(element);
121
+ const position = findAvailablePosition(gridMap, currentRow, height, grid);
122
+ if (position) {
123
+ placeOnGrid(gridMap, position, placed.length);
124
+ placed.push({
125
+ type: element.type,
126
+ content: element.content,
127
+ level: element.level,
128
+ position,
129
+ style: element.style,
130
+ raw: element.raw,
131
+ });
132
+ currentRow = position.rowEnd + 1;
133
+ }
134
+ else {
135
+ // 配置できない場合は最後に追加(はみ出す可能性あり)
136
+ console.warn('要素を配置できませんでした:', element.type);
137
+ placed.push({
138
+ type: element.type,
139
+ content: element.content,
140
+ level: element.level,
141
+ position: {
142
+ colStart: 1,
143
+ colEnd: grid.cols,
144
+ rowStart: currentRow,
145
+ rowEnd: currentRow + height - 1,
146
+ },
147
+ style: element.style,
148
+ raw: element.raw,
149
+ });
150
+ currentRow += height;
151
+ }
152
+ }
153
+ return placed;
154
+ }
155
+ //# sourceMappingURL=auto.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auto.js","sourceRoot":"","sources":["../../src/layout/auto.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * レイアウトエンジン
3
+ */
4
+ import type { Slide, GridConfig, SlideFrontmatter } from '../types/index.js';
5
+ import type { LayoutResult } from './types.js';
6
+ /**
7
+ * スライドのレイアウトを計算
8
+ */
9
+ export declare function layoutSlide(slide: Slide, globalFrontmatter: SlideFrontmatter): LayoutResult;
10
+ /**
11
+ * グリッド位置をスライド上の座標に変換(インチ単位)
12
+ */
13
+ export declare function gridToCoordinates(position: {
14
+ colStart: number;
15
+ colEnd: number;
16
+ rowStart: number;
17
+ rowEnd: number;
18
+ }, grid: GridConfig, slideSize: {
19
+ width: number;
20
+ height: number;
21
+ }, margin?: number): {
22
+ x: number;
23
+ y: number;
24
+ w: number;
25
+ h: number;
26
+ };
27
+ //# sourceMappingURL=engine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.d.ts","sourceRoot":"","sources":["../../src/layout/engine.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG7E,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,YAAY,CAAC;AAK9D;;GAEG;AACH,wBAAgB,WAAW,CACzB,KAAK,EAAE,KAAK,EACZ,iBAAiB,EAAE,gBAAgB,GAClC,YAAY,CAgBd;AA2BD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAChF,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,EAC5C,MAAM,GAAE,MAAY,GACnB;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAahD"}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ /**
3
+ * レイアウトエンジン
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.layoutSlide = layoutSlide;
7
+ exports.gridToCoordinates = gridToCoordinates;
8
+ const frontmatter_js_1 = require("../parser/frontmatter.js");
9
+ const auto_js_1 = require("./auto.js");
10
+ // デフォルトグリッド
11
+ const _DEFAULT_GRID = { cols: 12, rows: 9 };
12
+ /**
13
+ * スライドのレイアウトを計算
14
+ */
15
+ function layoutSlide(slide, globalFrontmatter) {
16
+ // グリッド設定を決定(スライド個別 > グローバル > デフォルト)
17
+ const gridStr = slide.frontmatter.grid || globalFrontmatter.grid || '12x9';
18
+ const grid = (0, frontmatter_js_1.parseGridString)(gridStr);
19
+ // 要素を配置
20
+ const elements = (0, auto_js_1.autoPlaceElements)(slide.elements, grid);
21
+ // グリッドマップを作成(デバッグ用)
22
+ const gridMap = createGridMapFromElements(elements, grid);
23
+ return {
24
+ elements,
25
+ gridMap,
26
+ };
27
+ }
28
+ /**
29
+ * 配置済み要素からグリッドマップを作成
30
+ */
31
+ function createGridMapFromElements(elements, grid) {
32
+ const gridMap = Array.from({ length: grid.rows }, () => Array.from({ length: grid.cols }, () => ({ occupied: false, elementIndex: undefined })));
33
+ elements.forEach((element, index) => {
34
+ const { position } = element;
35
+ for (let row = position.rowStart - 1; row < position.rowEnd; row++) {
36
+ for (let col = position.colStart - 1; col < position.colEnd; col++) {
37
+ if (row >= 0 && row < grid.rows && col >= 0 && col < grid.cols) {
38
+ gridMap[row][col] = { occupied: true, elementIndex: index };
39
+ }
40
+ }
41
+ }
42
+ });
43
+ return gridMap;
44
+ }
45
+ /**
46
+ * グリッド位置をスライド上の座標に変換(インチ単位)
47
+ */
48
+ function gridToCoordinates(position, grid, slideSize, margin = 0.5) {
49
+ const contentWidth = slideSize.width - margin * 2;
50
+ const contentHeight = slideSize.height - margin * 2;
51
+ const cellWidth = contentWidth / grid.cols;
52
+ const cellHeight = contentHeight / grid.rows;
53
+ const x = margin + (position.colStart - 1) * cellWidth;
54
+ const y = margin + (position.rowStart - 1) * cellHeight;
55
+ const w = (position.colEnd - position.colStart + 1) * cellWidth;
56
+ const h = (position.rowEnd - position.rowStart + 1) * cellHeight;
57
+ return { x, y, w, h };
58
+ }
59
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/layout/engine.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAaH,kCAmBC;AA8BD,8CAkBC;AA7ED,6DAA2D;AAC3D,uCAA8C;AAG9C,YAAY;AACZ,MAAM,aAAa,GAAe,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AAExD;;GAEG;AACH,SAAgB,WAAW,CACzB,KAAY,EACZ,iBAAmC;IAEnC,oCAAoC;IACpC,MAAM,OAAO,GACX,KAAK,CAAC,WAAW,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI,IAAI,MAAM,CAAC;IAC7D,MAAM,IAAI,GAAG,IAAA,gCAAe,EAAC,OAAO,CAAC,CAAC;IAEtC,QAAQ;IACR,MAAM,QAAQ,GAAG,IAAA,2BAAiB,EAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAEzD,oBAAoB;IACpB,MAAM,OAAO,GAAG,yBAAyB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAE1D,OAAO;QACL,QAAQ;QACR,OAAO;KACR,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,yBAAyB,CAChC,QAAyB,EACzB,IAAgB;IAEhB,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CACrD,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,YAAY,EAAE,SAA+B,EAAE,CAAC,CAAC,CAC9G,CAAC;IAEF,QAAQ,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;QAClC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC;QAC7B,KAAK,IAAI,GAAG,GAAG,QAAQ,CAAC,QAAQ,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;YACnE,KAAK,IAAI,GAAG,GAAG,QAAQ,CAAC,QAAQ,GAAG,CAAC,EAAE,GAAG,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE,CAAC;gBACnE,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;oBAC/D,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,CAAC;gBAC9D,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAC/B,QAAgF,EAChF,IAAgB,EAChB,SAA4C,EAC5C,SAAiB,GAAG;IAEpB,MAAM,YAAY,GAAG,SAAS,CAAC,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;IAEpD,MAAM,SAAS,GAAG,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC;IAC3C,MAAM,UAAU,GAAG,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC;IAE7C,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;IACvD,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;IACxD,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;IAChE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC;IAEjE,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;AACxB,CAAC"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * レイアウトモジュール
3
+ */
4
+ export { layoutSlide, gridToCoordinates } from './engine.js';
5
+ export { autoPlaceElements, estimateElementHeight, findAvailablePosition } from './auto.js';
6
+ export type { PlacedElement, GridMap, LayoutResult } from './types.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAC5F,YAAY,EAAE,aAAa,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ /**
3
+ * レイアウトモジュール
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.findAvailablePosition = exports.estimateElementHeight = exports.autoPlaceElements = exports.gridToCoordinates = exports.layoutSlide = void 0;
7
+ var engine_js_1 = require("./engine.js");
8
+ Object.defineProperty(exports, "layoutSlide", { enumerable: true, get: function () { return engine_js_1.layoutSlide; } });
9
+ Object.defineProperty(exports, "gridToCoordinates", { enumerable: true, get: function () { return engine_js_1.gridToCoordinates; } });
10
+ var auto_js_1 = require("./auto.js");
11
+ Object.defineProperty(exports, "autoPlaceElements", { enumerable: true, get: function () { return auto_js_1.autoPlaceElements; } });
12
+ Object.defineProperty(exports, "estimateElementHeight", { enumerable: true, get: function () { return auto_js_1.estimateElementHeight; } });
13
+ Object.defineProperty(exports, "findAvailablePosition", { enumerable: true, get: function () { return auto_js_1.findAvailablePosition; } });
14
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/layout/index.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AAEH,yCAA6D;AAApD,wGAAA,WAAW,OAAA;AAAE,8GAAA,iBAAiB,OAAA;AACvC,qCAA4F;AAAnF,4GAAA,iBAAiB,OAAA;AAAE,gHAAA,qBAAqB,OAAA;AAAE,gHAAA,qBAAqB,OAAA"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * レイアウト関連の型定義
3
+ */
4
+ import type { GridPosition, SlideElement, StyleOptions } from '../types/index.js';
5
+ export interface PlacedElement {
6
+ type: SlideElement['type'];
7
+ content: SlideElement['content'];
8
+ level?: number;
9
+ position: GridPosition;
10
+ style?: StyleOptions;
11
+ raw?: string;
12
+ }
13
+ export interface GridCell {
14
+ occupied: boolean;
15
+ elementIndex?: number;
16
+ }
17
+ export type GridMap = GridCell[][];
18
+ export interface LayoutResult {
19
+ elements: PlacedElement[];
20
+ gridMap: GridMap;
21
+ }
22
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/layout/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGlF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3B,OAAO,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAGD,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,MAAM,MAAM,OAAO,GAAG,QAAQ,EAAE,EAAE,CAAC;AAGnC,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;CAClB"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * レイアウト関連の型定義
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/layout/types.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * MCP ツールハンドラー
3
+ * テスト可能な形でMCPツールのロジックを提供
4
+ */
5
+ export interface ToolResult {
6
+ content: {
7
+ type: string;
8
+ text: string;
9
+ }[];
10
+ isError?: boolean;
11
+ }
12
+ export interface ToolDefinition {
13
+ name: string;
14
+ description: string;
15
+ inputSchema: {
16
+ type: string;
17
+ properties: Record<string, unknown>;
18
+ required: string[];
19
+ };
20
+ }
21
+ /**
22
+ * 利用可能なツール一覧を取得
23
+ */
24
+ export declare function getToolDefinitions(): ToolDefinition[];
25
+ /**
26
+ * Markdownテキストから記法ガイドを生成
27
+ */
28
+ export declare function getMarhupGuide(): string;
29
+ /**
30
+ * ツールを実行
31
+ */
32
+ export declare function handleToolCall(name: string, args: Record<string, unknown>): Promise<ToolResult>;
33
+ //# sourceMappingURL=mcp-handlers.d.ts.map