marhup 0.1.8 → 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.
- package/README.md +419 -2
- package/dist/cli.js +659 -78
- package/dist/cli.js.map +1 -1
- package/dist/errors.d.ts +29 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +62 -0
- package/dist/errors.js.map +1 -0
- package/dist/generator/code.d.ts +4 -3
- package/dist/generator/code.d.ts.map +1 -1
- package/dist/generator/code.js +7 -7
- package/dist/generator/code.js.map +1 -1
- package/dist/generator/gen-animations.d.ts +13 -0
- package/dist/generator/gen-animations.d.ts.map +1 -0
- package/dist/generator/gen-animations.js +77 -0
- package/dist/generator/gen-animations.js.map +1 -0
- package/dist/generator/image.d.ts +4 -3
- package/dist/generator/image.d.ts.map +1 -1
- package/dist/generator/image.js +67 -80
- package/dist/generator/image.js.map +1 -1
- package/dist/generator/index.d.ts +2 -0
- package/dist/generator/index.d.ts.map +1 -1
- package/dist/generator/index.js +9 -18
- package/dist/generator/index.js.map +1 -1
- package/dist/generator/list.d.ts +4 -3
- package/dist/generator/list.d.ts.map +1 -1
- package/dist/generator/list.js +15 -17
- package/dist/generator/list.js.map +1 -1
- package/dist/generator/mermaid.d.ts +9 -4
- package/dist/generator/mermaid.d.ts.map +1 -1
- package/dist/generator/mermaid.js +120 -85
- package/dist/generator/mermaid.js.map +1 -1
- package/dist/generator/pptx.d.ts +1 -1
- package/dist/generator/pptx.d.ts.map +1 -1
- package/dist/generator/pptx.js +232 -60
- package/dist/generator/pptx.js.map +1 -1
- package/dist/generator/presentation.d.ts +149 -0
- package/dist/generator/presentation.d.ts.map +1 -0
- package/dist/generator/presentation.js +163 -0
- package/dist/generator/presentation.js.map +1 -0
- package/dist/generator/table.d.ts +4 -3
- package/dist/generator/table.d.ts.map +1 -1
- package/dist/generator/table.js +12 -33
- package/dist/generator/table.js.map +1 -1
- package/dist/generator/text.d.ts +5 -4
- package/dist/generator/text.d.ts.map +1 -1
- package/dist/generator/text.js +34 -20
- package/dist/generator/text.js.map +1 -1
- package/dist/generator/video.d.ts +18 -0
- package/dist/generator/video.d.ts.map +1 -0
- package/dist/generator/video.js +83 -0
- package/dist/generator/video.js.map +1 -0
- package/dist/index.d.ts +8 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +144 -55
- package/dist/index.js.map +1 -1
- package/dist/layout/auto.d.ts +14 -2
- package/dist/layout/auto.d.ts.map +1 -1
- package/dist/layout/auto.js +129 -37
- package/dist/layout/auto.js.map +1 -1
- package/dist/layout/engine.d.ts +1 -1
- package/dist/layout/engine.d.ts.map +1 -1
- package/dist/layout/engine.js +10 -12
- package/dist/layout/engine.js.map +1 -1
- package/dist/layout/index.d.ts +1 -1
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js +2 -10
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/types.d.ts +1 -0
- package/dist/layout/types.d.ts.map +1 -1
- package/dist/layout/types.js +1 -2
- package/dist/layout/types.js.map +1 -1
- package/dist/mcp-handlers.d.ts.map +1 -1
- package/dist/mcp-handlers.js +15 -51
- package/dist/mcp-handlers.js.map +1 -1
- package/dist/mcp.js +10 -12
- package/dist/mcp.js.map +1 -1
- package/dist/parser/frontmatter.d.ts.map +1 -1
- package/dist/parser/frontmatter.js +95 -16
- package/dist/parser/frontmatter.js.map +1 -1
- package/dist/parser/grid.d.ts +5 -7
- package/dist/parser/grid.d.ts.map +1 -1
- package/dist/parser/grid.js +190 -19
- package/dist/parser/grid.js.map +1 -1
- package/dist/parser/index.js +3 -13
- package/dist/parser/index.js.map +1 -1
- package/dist/parser/markdown.d.ts +1 -1
- package/dist/parser/markdown.d.ts.map +1 -1
- package/dist/parser/markdown.js +247 -137
- package/dist/parser/markdown.js.map +1 -1
- package/dist/theme/default.d.ts.map +1 -1
- package/dist/theme/default.js +13 -8
- package/dist/theme/default.js.map +1 -1
- package/dist/theme/index.d.ts +11 -0
- package/dist/theme/index.d.ts.map +1 -1
- package/dist/theme/index.js +70 -7
- package/dist/theme/index.js.map +1 -1
- package/dist/types/index.d.ts +54 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +4 -6
- package/dist/types/index.js.map +1 -1
- package/dist/types/plugin.d.ts +50 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/plugin.js +5 -0
- package/dist/types/plugin.js.map +1 -0
- package/dist/utils/file-lock.d.ts +27 -0
- package/dist/utils/file-lock.d.ts.map +1 -0
- package/dist/utils/file-lock.js +118 -0
- package/dist/utils/file-lock.js.map +1 -0
- package/dist/utils/i18n.d.ts +5 -0
- package/dist/utils/i18n.d.ts.map +1 -0
- package/dist/utils/i18n.js +41 -0
- package/dist/utils/i18n.js.map +1 -0
- package/dist/utils/logger.d.ts +7 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +43 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/path-validation.d.ts +20 -0
- package/dist/utils/path-validation.d.ts.map +1 -0
- package/dist/utils/path-validation.js +39 -0
- package/dist/utils/path-validation.js.map +1 -0
- package/dist/utils/plugin-manager.d.ts +18 -0
- package/dist/utils/plugin-manager.d.ts.map +1 -0
- package/dist/utils/plugin-manager.js +108 -0
- package/dist/utils/plugin-manager.js.map +1 -0
- package/dist/utils/sanitizer.d.ts +14 -0
- package/dist/utils/sanitizer.d.ts.map +1 -0
- package/dist/utils/sanitizer.js +73 -0
- package/dist/utils/sanitizer.js.map +1 -0
- package/package.json +23 -8
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Presentation abstraction layer to reduce dependency on external libraries
|
|
3
|
+
*/
|
|
4
|
+
import PptxGenJS from 'pptxgenjs';
|
|
5
|
+
// PptxGenJS implementation
|
|
6
|
+
class PptxSlide {
|
|
7
|
+
slide;
|
|
8
|
+
animations = [];
|
|
9
|
+
objectIndex = 0;
|
|
10
|
+
constructor(slide) {
|
|
11
|
+
this.slide = slide;
|
|
12
|
+
}
|
|
13
|
+
addText(text, options) {
|
|
14
|
+
const { x, y, w, h, animation, ...textOpts } = options;
|
|
15
|
+
const textOptions = {
|
|
16
|
+
x,
|
|
17
|
+
y,
|
|
18
|
+
w,
|
|
19
|
+
h,
|
|
20
|
+
...textOpts,
|
|
21
|
+
shadow: textOpts.shadow ? {
|
|
22
|
+
type: textOpts.shadow.type,
|
|
23
|
+
color: textOpts.shadow.color,
|
|
24
|
+
blur: textOpts.shadow.blur,
|
|
25
|
+
offset: textOpts.shadow.offset,
|
|
26
|
+
angle: textOpts.shadow.angle,
|
|
27
|
+
} : undefined,
|
|
28
|
+
};
|
|
29
|
+
if (animation) {
|
|
30
|
+
textOptions.animation = animation;
|
|
31
|
+
}
|
|
32
|
+
this.slide.addText(text, textOptions);
|
|
33
|
+
this.objectIndex++;
|
|
34
|
+
}
|
|
35
|
+
addImage(path, options) {
|
|
36
|
+
const { x, y, w, h, animation, ...imgOpts } = options;
|
|
37
|
+
const imageOptions = {
|
|
38
|
+
path,
|
|
39
|
+
x,
|
|
40
|
+
y,
|
|
41
|
+
w,
|
|
42
|
+
h,
|
|
43
|
+
...imgOpts,
|
|
44
|
+
};
|
|
45
|
+
if (animation) {
|
|
46
|
+
imageOptions.animation = animation;
|
|
47
|
+
}
|
|
48
|
+
this.slide.addImage(imageOptions);
|
|
49
|
+
this.objectIndex++;
|
|
50
|
+
}
|
|
51
|
+
addMedia(path, options) {
|
|
52
|
+
const { x, y, w, h, animation, ...mediaOpts } = options;
|
|
53
|
+
const mediaOptions = {
|
|
54
|
+
path,
|
|
55
|
+
x,
|
|
56
|
+
y,
|
|
57
|
+
w,
|
|
58
|
+
h,
|
|
59
|
+
...mediaOpts,
|
|
60
|
+
};
|
|
61
|
+
if (animation) {
|
|
62
|
+
mediaOptions.animation = animation;
|
|
63
|
+
}
|
|
64
|
+
this.slide.addMedia(mediaOptions);
|
|
65
|
+
this.objectIndex++;
|
|
66
|
+
}
|
|
67
|
+
addTable(rows, options) {
|
|
68
|
+
const { x, y, w, h, animation, ...tableOpts } = options;
|
|
69
|
+
const tableOptions = {
|
|
70
|
+
x,
|
|
71
|
+
y,
|
|
72
|
+
w,
|
|
73
|
+
h,
|
|
74
|
+
...tableOpts,
|
|
75
|
+
};
|
|
76
|
+
if (animation) {
|
|
77
|
+
tableOptions.animation = animation;
|
|
78
|
+
}
|
|
79
|
+
this.slide.addTable(rows, tableOptions);
|
|
80
|
+
this.objectIndex++;
|
|
81
|
+
}
|
|
82
|
+
addShape(shape, options) {
|
|
83
|
+
const { x, y, w, h, ...shapeOpts } = options;
|
|
84
|
+
const shapeOptions = {
|
|
85
|
+
x,
|
|
86
|
+
y,
|
|
87
|
+
w,
|
|
88
|
+
h,
|
|
89
|
+
fill: typeof shapeOpts.fill === 'string' ? { color: shapeOpts.fill } : shapeOpts.fill,
|
|
90
|
+
line: typeof shapeOpts.line === 'string' ? { color: shapeOpts.line } : shapeOpts.line,
|
|
91
|
+
};
|
|
92
|
+
this.slide.addShape(shape, shapeOptions);
|
|
93
|
+
}
|
|
94
|
+
setTransition(transition) {
|
|
95
|
+
if (transition.type && transition.type !== 'none') {
|
|
96
|
+
try {
|
|
97
|
+
this.slide.transition = {
|
|
98
|
+
type: transition.type,
|
|
99
|
+
...(transition.duration && { duration: transition.duration }),
|
|
100
|
+
...(transition.direction && { dir: transition.direction }),
|
|
101
|
+
...(transition.speed && { speed: transition.speed }),
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
catch (error) {
|
|
105
|
+
console.warn('Slide transition not supported in this version of PptxGenJS:', error);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
getAnimations() {
|
|
110
|
+
return this.animations;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
class PptxPresentation {
|
|
114
|
+
pptx;
|
|
115
|
+
slides = [];
|
|
116
|
+
constructor(options = {}) {
|
|
117
|
+
this.pptx = new PptxGenJS();
|
|
118
|
+
if (options.layout)
|
|
119
|
+
this.pptx.layout = options.layout;
|
|
120
|
+
if (options.title)
|
|
121
|
+
this.pptx.title = options.title;
|
|
122
|
+
if (options.author)
|
|
123
|
+
this.pptx.author = options.author;
|
|
124
|
+
}
|
|
125
|
+
addSlide(options) {
|
|
126
|
+
const slide = options?.master ? this.pptx.addSlide(options.master) : this.pptx.addSlide();
|
|
127
|
+
const pptxSlide = new PptxSlide(slide);
|
|
128
|
+
this.slides.push(pptxSlide);
|
|
129
|
+
if (options?.transition) {
|
|
130
|
+
pptxSlide.setTransition(options.transition);
|
|
131
|
+
}
|
|
132
|
+
return pptxSlide;
|
|
133
|
+
}
|
|
134
|
+
defineSlideMaster(options) {
|
|
135
|
+
this.pptx.defineSlideMaster(options);
|
|
136
|
+
}
|
|
137
|
+
async writeFile(options) {
|
|
138
|
+
await this.pptx.writeFile(options);
|
|
139
|
+
}
|
|
140
|
+
setTitle(title) {
|
|
141
|
+
this.pptx.title = title;
|
|
142
|
+
}
|
|
143
|
+
setAuthor(author) {
|
|
144
|
+
this.pptx.author = author;
|
|
145
|
+
}
|
|
146
|
+
setLayout(layout) {
|
|
147
|
+
this.pptx.layout = layout;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
// Factory function with version checking
|
|
151
|
+
export function createPresentation(options) {
|
|
152
|
+
// Check PptxGenJS version for compatibility
|
|
153
|
+
const version = PptxGenJS.version || 'unknown';
|
|
154
|
+
console.log(`Using PptxGenJS version: ${version}`);
|
|
155
|
+
// You could add version-specific logic here
|
|
156
|
+
// For example, if version < some threshold, use a different implementation
|
|
157
|
+
return new PptxPresentation(options);
|
|
158
|
+
}
|
|
159
|
+
export function createSlide(presentation, options) {
|
|
160
|
+
return presentation.addSlide(options);
|
|
161
|
+
}
|
|
162
|
+
// Export interfaces for use in other modules
|
|
163
|
+
//# sourceMappingURL=presentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"presentation.js","sourceRoot":"","sources":["../../src/generator/presentation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* テーブル要素の生成
|
|
3
3
|
*/
|
|
4
|
-
import type
|
|
5
|
-
import type {
|
|
4
|
+
import type { PlacedElement } from '../layout/index.js';
|
|
5
|
+
import type { ThemeConfig, AnimationConfig } from '../types/index.js';
|
|
6
|
+
import type { ISlide } from './presentation.js';
|
|
6
7
|
interface Coordinates {
|
|
7
8
|
x: number;
|
|
8
9
|
y: number;
|
|
@@ -12,6 +13,6 @@ interface Coordinates {
|
|
|
12
13
|
/**
|
|
13
14
|
* テーブル要素を追加
|
|
14
15
|
*/
|
|
15
|
-
export declare function addTableElement(slide:
|
|
16
|
+
export declare function addTableElement(slide: ISlide, element: PlacedElement, coords: Coordinates, _styleProps: Record<string, unknown>, theme: ThemeConfig, animation?: AnimationConfig): void;
|
|
16
17
|
export {};
|
|
17
18
|
//# sourceMappingURL=table.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/generator/table.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../src/generator/table.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAa,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACjF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAEhD,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,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,WAAW,EACnB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACpC,KAAK,EAAE,WAAW,EAClB,SAAS,CAAC,EAAE,eAAe,GAC1B,IAAI,CAqBN"}
|
package/dist/generator/table.js
CHANGED
|
@@ -1,48 +1,27 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* テーブル要素の生成
|
|
4
3
|
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.addTableElement = addTableElement;
|
|
7
|
-
const index_1 = require("../theme/index");
|
|
8
4
|
/**
|
|
9
5
|
* テーブル要素を追加
|
|
10
6
|
*/
|
|
11
|
-
function addTableElement(slide, element, coords, _styleProps) {
|
|
7
|
+
export function addTableElement(slide, element, coords, _styleProps, theme, animation) {
|
|
12
8
|
const tableData = element.content;
|
|
13
|
-
//
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
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, {
|
|
9
|
+
// Convert to simple string array for abstraction
|
|
10
|
+
const rows = [
|
|
11
|
+
tableData.headers,
|
|
12
|
+
...tableData.rows
|
|
13
|
+
];
|
|
14
|
+
slide.addTable(rows, {
|
|
40
15
|
x: coords.x,
|
|
41
16
|
y: coords.y,
|
|
42
17
|
w: coords.w,
|
|
43
18
|
h: coords.h,
|
|
44
|
-
border: { type: 'solid', color: 'e2e8f0', pt: 1 },
|
|
45
19
|
colW: Array(tableData.headers.length).fill(coords.w / tableData.headers.length),
|
|
20
|
+
animation: animation ? {
|
|
21
|
+
type: animation.type,
|
|
22
|
+
duration: animation.duration,
|
|
23
|
+
delay: animation.delay,
|
|
24
|
+
} : undefined,
|
|
46
25
|
});
|
|
47
26
|
}
|
|
48
27
|
//# sourceMappingURL=table.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/generator/table.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"table.js","sourceRoot":"","sources":["../../src/generator/table.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAa,EACb,OAAsB,EACtB,MAAmB,EACnB,WAAoC,EACpC,KAAkB,EAClB,SAA2B;IAE3B,MAAM,SAAS,GAAG,OAAO,CAAC,OAAoB,CAAC;IAE/C,iDAAiD;IACjD,MAAM,IAAI,GAAe;QACvB,SAAS,CAAC,OAAO;QACjB,GAAG,SAAS,CAAC,IAAI;KAClB,CAAC;IAEF,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAE;QACnB,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,CAAC,EAAE,MAAM,CAAC,CAAC;QACX,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC;QAC/E,SAAS,EAAE,SAAS,CAAC,CAAC,CAAC;YACrB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,KAAK,EAAE,SAAS,CAAC,KAAK;SACvB,CAAC,CAAC,CAAC,SAAS;KACd,CAAC,CAAC;AACL,CAAC"}
|
package/dist/generator/text.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* テキスト要素の生成
|
|
3
3
|
*/
|
|
4
|
-
import type
|
|
5
|
-
import type {
|
|
4
|
+
import type { PlacedElement } from '../layout/index.js';
|
|
5
|
+
import type { ThemeConfig, AnimationConfig } from '../types/index.js';
|
|
6
|
+
import type { ISlide } from './presentation.js';
|
|
6
7
|
interface Coordinates {
|
|
7
8
|
x: number;
|
|
8
9
|
y: number;
|
|
@@ -12,10 +13,10 @@ interface Coordinates {
|
|
|
12
13
|
/**
|
|
13
14
|
* 見出し要素を追加
|
|
14
15
|
*/
|
|
15
|
-
export declare function addHeadingElement(slide:
|
|
16
|
+
export declare function addHeadingElement(slide: ISlide, element: PlacedElement, coords: Coordinates, styleProps: Record<string, unknown>, theme: ThemeConfig, animation?: AnimationConfig): void;
|
|
16
17
|
/**
|
|
17
18
|
* 段落要素を追加
|
|
18
19
|
*/
|
|
19
|
-
export declare function addTextElement(slide:
|
|
20
|
+
export declare function addTextElement(slide: ISlide, element: PlacedElement, coords: Coordinates, styleProps: Record<string, unknown>, theme: ThemeConfig, animation?: AnimationConfig): void;
|
|
20
21
|
export {};
|
|
21
22
|
//# sourceMappingURL=text.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/generator/text.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../src/generator/text.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,KAAK,EAAE,MAAM,EAAe,MAAM,mBAAmB,CAAC;AAE7D,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,MAAM,EACb,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,KAAK,EAAE,WAAW,EAClB,SAAS,CAAC,EAAE,eAAe,GAC1B,IAAI,CAwCN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,KAAK,EAAE,WAAW,EAClB,SAAS,CAAC,EAAE,eAAe,GAC1B,IAAI,CA2BN"}
|
package/dist/generator/text.js
CHANGED
|
@@ -1,57 +1,71 @@
|
|
|
1
|
-
"use strict";
|
|
2
1
|
/**
|
|
3
2
|
* テキスト要素の生成
|
|
4
3
|
*/
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.addHeadingElement = addHeadingElement;
|
|
7
|
-
exports.addTextElement = addTextElement;
|
|
8
|
-
const index_1 = require("../theme/index");
|
|
9
4
|
/**
|
|
10
5
|
* 見出し要素を追加
|
|
11
6
|
*/
|
|
12
|
-
function addHeadingElement(slide, element, coords, styleProps) {
|
|
7
|
+
export function addHeadingElement(slide, element, coords, styleProps, theme, animation) {
|
|
13
8
|
const level = element.level || 1;
|
|
14
9
|
const content = element.content;
|
|
15
10
|
// レベルに応じたフォントサイズ
|
|
16
11
|
const fontSizeMap = {
|
|
17
|
-
1:
|
|
18
|
-
2:
|
|
19
|
-
3:
|
|
12
|
+
1: theme.fontSize.h1,
|
|
13
|
+
2: theme.fontSize.h2,
|
|
14
|
+
3: theme.fontSize.h3,
|
|
20
15
|
4: 20,
|
|
21
16
|
5: 18,
|
|
22
17
|
6: 16,
|
|
23
18
|
};
|
|
24
|
-
const fontSize = fontSizeMap[level] ||
|
|
25
|
-
|
|
19
|
+
const fontSize = fontSizeMap[level] || theme.fontSize.body;
|
|
20
|
+
// テキストスタイルオプションを構築
|
|
21
|
+
const textOptions = {
|
|
26
22
|
x: coords.x,
|
|
27
23
|
y: coords.y,
|
|
28
24
|
w: coords.w,
|
|
29
25
|
h: coords.h,
|
|
30
26
|
fontSize,
|
|
31
27
|
bold: level <= 2,
|
|
32
|
-
color:
|
|
33
|
-
fontFace: index_1.defaultTheme.fonts.title,
|
|
28
|
+
color: theme.colors.text.replace('#', ''),
|
|
34
29
|
align: level === 1 ? 'center' : 'left',
|
|
35
30
|
valign: 'middle',
|
|
36
31
|
...styleProps,
|
|
37
|
-
}
|
|
32
|
+
};
|
|
33
|
+
// アニメーション設定
|
|
34
|
+
if (animation) {
|
|
35
|
+
textOptions.animation = {
|
|
36
|
+
type: animation.type,
|
|
37
|
+
duration: animation.duration,
|
|
38
|
+
delay: animation.delay,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
slide.addText(content, textOptions);
|
|
38
42
|
}
|
|
39
43
|
/**
|
|
40
44
|
* 段落要素を追加
|
|
41
45
|
*/
|
|
42
|
-
function addTextElement(slide, element, coords, styleProps) {
|
|
46
|
+
export function addTextElement(slide, element, coords, styleProps, theme, animation) {
|
|
43
47
|
const content = element.content;
|
|
44
|
-
|
|
48
|
+
// テキストスタイルオプションを構築
|
|
49
|
+
const textOptions = {
|
|
45
50
|
x: coords.x,
|
|
46
51
|
y: coords.y,
|
|
47
52
|
w: coords.w,
|
|
48
53
|
h: coords.h,
|
|
49
|
-
fontSize:
|
|
50
|
-
color:
|
|
51
|
-
fontFace:
|
|
54
|
+
fontSize: theme.fontSize.body,
|
|
55
|
+
color: theme.colors.text.replace('#', ''),
|
|
56
|
+
fontFace: theme.fonts.body,
|
|
52
57
|
align: 'left',
|
|
53
58
|
valign: 'top',
|
|
54
59
|
...styleProps,
|
|
55
|
-
}
|
|
60
|
+
};
|
|
61
|
+
// アニメーション設定
|
|
62
|
+
if (animation) {
|
|
63
|
+
textOptions.animation = {
|
|
64
|
+
type: animation.type,
|
|
65
|
+
duration: animation.duration,
|
|
66
|
+
delay: animation.delay,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
slide.addText(content, textOptions);
|
|
56
70
|
}
|
|
57
71
|
//# sourceMappingURL=text.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/generator/text.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../src/generator/text.ts"],"names":[],"mappings":"AAAA;;GAEG;AAaH;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,OAAsB,EACtB,MAAmB,EACnB,UAAmC,EACnC,KAAkB,EAClB,SAA2B;IAE3B,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,KAAK,CAAC,QAAQ,CAAC,EAAE;QACpB,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;QACpB,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC,EAAE;QACpB,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;QACL,CAAC,EAAE,EAAE;KACN,CAAC;IAEF,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;IAE3D,mBAAmB;IACnB,MAAM,WAAW,GAA8B;QAC7C,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,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACzC,KAAK,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;QACtC,MAAM,EAAE,QAAQ;QAChB,GAAG,UAAU;KACd,CAAC;IAEF,YAAY;IACZ,IAAI,SAAS,EAAE,CAAC;QACd,WAAW,CAAC,SAAS,GAAG;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,KAAK,EAAE,SAAS,CAAC,KAAK;SACvB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,KAAa,EACb,OAAsB,EACtB,MAAmB,EACnB,UAAmC,EACnC,KAAkB,EAClB,SAA2B;IAE3B,MAAM,OAAO,GAAG,OAAO,CAAC,OAAiB,CAAC;IAE1C,mBAAmB;IACnB,MAAM,WAAW,GAA8B;QAC7C,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,KAAK,CAAC,QAAQ,CAAC,IAAI;QAC7B,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;QACzC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;QAC1B,KAAK,EAAE,MAAM;QACb,MAAM,EAAE,KAAK;QACb,GAAG,UAAU;KACd,CAAC;IAEF,YAAY;IACZ,IAAI,SAAS,EAAE,CAAC;QACd,WAAW,CAAC,SAAS,GAAG;YACtB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,KAAK,EAAE,SAAS,CAAC,KAAK;SACvB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,WAAW,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 動画要素の生成
|
|
3
|
+
*/
|
|
4
|
+
import type { PlacedElement } from '../layout/index.js';
|
|
5
|
+
import type { AnimationConfig } from '../types/index.js';
|
|
6
|
+
import type { ISlide } from './presentation.js';
|
|
7
|
+
interface Coordinates {
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
w: number;
|
|
11
|
+
h: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* 動画要素を追加
|
|
15
|
+
*/
|
|
16
|
+
export declare function addVideoElement(slide: ISlide, element: PlacedElement, coords: Coordinates, styleProps: Record<string, unknown>, basePath?: string, animation?: AnimationConfig): void;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=video.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video.d.ts","sourceRoot":"","sources":["../../src/generator/video.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAIhD,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,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,aAAa,EACtB,MAAM,EAAE,WAAW,EACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACnC,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,eAAe,GAC1B,IAAI,CAgDN"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 動画要素の生成
|
|
3
|
+
*/
|
|
4
|
+
import * as fs from 'fs';
|
|
5
|
+
import { validateAndResolvePath } from '../utils/path-validation.js';
|
|
6
|
+
import { t } from '../utils/i18n.js';
|
|
7
|
+
/**
|
|
8
|
+
* 動画要素を追加
|
|
9
|
+
*/
|
|
10
|
+
export function addVideoElement(slide, element, coords, styleProps, basePath, animation) {
|
|
11
|
+
const videoPath = element.content;
|
|
12
|
+
// URLかローカルファイルかを判定
|
|
13
|
+
if (videoPath.startsWith('http://') || videoPath.startsWith('https://')) {
|
|
14
|
+
// URL動画
|
|
15
|
+
slide.addMedia(videoPath, {
|
|
16
|
+
x: coords.x,
|
|
17
|
+
y: coords.y,
|
|
18
|
+
w: coords.w,
|
|
19
|
+
h: coords.h,
|
|
20
|
+
type: 'video',
|
|
21
|
+
animation: animation ? {
|
|
22
|
+
type: animation.type,
|
|
23
|
+
duration: animation.duration,
|
|
24
|
+
delay: animation.delay,
|
|
25
|
+
} : undefined,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
// ローカルファイル
|
|
30
|
+
try {
|
|
31
|
+
// ベースパスがあれば、そこからの相対パスとして解決
|
|
32
|
+
const allowedDir = basePath || process.cwd();
|
|
33
|
+
const absolutePath = validateAndResolvePath(videoPath, allowedDir, basePath);
|
|
34
|
+
if (fs.existsSync(absolutePath)) {
|
|
35
|
+
slide.addMedia(absolutePath, {
|
|
36
|
+
x: coords.x,
|
|
37
|
+
y: coords.y,
|
|
38
|
+
w: coords.w,
|
|
39
|
+
h: coords.h,
|
|
40
|
+
type: 'video',
|
|
41
|
+
animation: animation ? {
|
|
42
|
+
type: animation.type,
|
|
43
|
+
duration: animation.duration,
|
|
44
|
+
delay: animation.delay,
|
|
45
|
+
} : undefined,
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
// ファイルが存在しない場合はプレースホルダーを表示
|
|
50
|
+
console.warn(t('errors.videoNotFound', { path: absolutePath }));
|
|
51
|
+
addVideoPlaceholder(slide, coords, videoPath);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
catch (error) {
|
|
55
|
+
console.warn(t('errors.videoLoadFailed', { path: videoPath, error }));
|
|
56
|
+
addVideoPlaceholder(slide, coords, videoPath);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* 動画プレースホルダーを追加
|
|
62
|
+
*/
|
|
63
|
+
function addVideoPlaceholder(slide, coords, videoPath) {
|
|
64
|
+
slide.addShape('rect', {
|
|
65
|
+
x: coords.x,
|
|
66
|
+
y: coords.y,
|
|
67
|
+
w: coords.w,
|
|
68
|
+
h: coords.h,
|
|
69
|
+
fill: { color: '000000' },
|
|
70
|
+
line: 'cccccc',
|
|
71
|
+
});
|
|
72
|
+
slide.addText(`[Video: ${videoPath}]`, {
|
|
73
|
+
x: coords.x,
|
|
74
|
+
y: coords.y,
|
|
75
|
+
w: coords.w,
|
|
76
|
+
h: coords.h,
|
|
77
|
+
fontSize: 12,
|
|
78
|
+
color: 'ffffff',
|
|
79
|
+
align: 'center',
|
|
80
|
+
valign: 'middle',
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
//# sourceMappingURL=video.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"video.js","sourceRoot":"","sources":["../../src/generator/video.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* marhup - Markdown to PowerPoint converter
|
|
3
3
|
* メインエクスポート
|
|
4
4
|
*/
|
|
5
|
-
import type { ConvertOptions, ParsedDocument } from './types/index';
|
|
5
|
+
import type { ConvertOptions, ParsedDocument } from './types/index.js';
|
|
6
6
|
/**
|
|
7
7
|
* MarkdownからPPTXを生成
|
|
8
8
|
*/
|
|
@@ -15,6 +15,13 @@ export declare function marhupFile(inputPath: string, options: ConvertOptions):
|
|
|
15
15
|
* Markdownをパースして構造を返す(デバッグ用)
|
|
16
16
|
*/
|
|
17
17
|
export declare function parse(markdown: string): ParsedDocument;
|
|
18
|
+
/**
|
|
19
|
+
* Markdownのレイアウトをプレビュー表示
|
|
20
|
+
*/
|
|
21
|
+
export declare function previewLayout(markdown: string, options?: {
|
|
22
|
+
grid?: string;
|
|
23
|
+
}): void;
|
|
24
|
+
export declare function marhupFromJson(jsonPath: string, options: ConvertOptions): Promise<void>;
|
|
18
25
|
export type { ConvertOptions, ParsedDocument, Slide, SlideElement, GridPosition, StyleOptions, ThemeConfig, } from './types/index.js';
|
|
19
26
|
export default marhup;
|
|
20
27
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AASH,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAIvE;;GAEG;AACH,wBAAsB,MAAM,CAC1B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAsCf;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAiBf;AAED;;GAEG;AACH,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAEtD;AAyDD;;GAEG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,IAAI,CAmCrF;AACD,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,cAAc,GACtB,OAAO,CAAC,IAAI,CAAC,CAIf;AAGD,YAAY,EACV,cAAc,EACd,cAAc,EACd,KAAK,EACL,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAG1B,eAAe,MAAM,CAAC"}
|