loopwind 0.12.3 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.video-preview/entry.tsx +35 -0
- package/.video-preview/index.html +55 -0
- package/dist/commands/preview.d.ts.map +1 -1
- package/dist/commands/preview.js +31 -3
- package/dist/commands/preview.js.map +1 -1
- package/dist/lib/constants.d.ts.map +1 -1
- package/dist/lib/constants.js +9 -4
- package/dist/lib/constants.js.map +1 -1
- package/dist/lib/helpers.d.ts +2 -12
- package/dist/lib/helpers.d.ts.map +1 -1
- package/dist/lib/helpers.js +44 -116
- package/dist/lib/helpers.js.map +1 -1
- package/dist/lib/renderer.d.ts.map +1 -1
- package/dist/lib/renderer.js +71 -54
- package/dist/lib/renderer.js.map +1 -1
- package/dist/lib/tailwind-browser.d.ts +27 -0
- package/dist/lib/tailwind-browser.d.ts.map +1 -0
- package/dist/lib/tailwind-browser.js +656 -0
- package/dist/lib/tailwind-browser.js.map +1 -0
- package/dist/lib/tailwind.d.ts.map +1 -1
- package/dist/lib/tailwind.js +59 -0
- package/dist/lib/tailwind.js.map +1 -1
- package/dist/lib/video-player.d.ts +25 -0
- package/dist/lib/video-player.d.ts.map +1 -0
- package/dist/lib/video-player.js +265 -0
- package/dist/lib/video-player.js.map +1 -0
- package/dist/lib/video-preview.d.ts +15 -0
- package/dist/lib/video-preview.d.ts.map +1 -0
- package/dist/lib/video-preview.js +199 -0
- package/dist/lib/video-preview.js.map +1 -0
- package/package.json +5 -2
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { createRoot } from 'react-dom/client';
|
|
4
|
+
import { VideoPlayer } from '/Users/tommyvedvik/Dev/dsgn/src/lib/video-player.tsx';
|
|
5
|
+
import { tw } from '/Users/tommyvedvik/Dev/dsgn/src/lib/tailwind-browser.ts';
|
|
6
|
+
import Template, { meta } from '/Users/tommyvedvik/Dev/dsgn/_loopwind/templates/video-intro/template.tsx';
|
|
7
|
+
|
|
8
|
+
const props = {"version":"2.0.0"};
|
|
9
|
+
|
|
10
|
+
// Tailwind config not loaded in browser (would need dynamic import of user's config)
|
|
11
|
+
const tailwindConfig = null;
|
|
12
|
+
|
|
13
|
+
// loopwind.json config (loaded server-side and embedded)
|
|
14
|
+
const loopwindConfig = {"$schema":"https://loopwind.dev/schema.json","_comment":"Generated from tailwind.config - customize as needed","colors":{"primary":"#667eea","primary-foreground":"#fafafa","secondary":"#764ba2","secondary-foreground":"#18181b","background":"#ffffff","foreground":"#09090b","muted":"#f4f4f5","muted-foreground":"#71717a","accent":"#3b82f6","accent-foreground":"#18181b","destructive":"#ef4444","destructive-foreground":"#fafafa","border":"#e4e4e7","input":"#e4e4e7","ring":"#18181b","card":"#ffffff","card-foreground":"#09090b","popover":"#ffffff","popover-foreground":"#09090b"},"fonts":{"sans":["Inter","system-ui","sans-serif"],"mono":["JetBrains Mono","monospace"]},"tokens":{"borderRadius":{"sm":"0.25rem","md":"0.375rem","lg":"0.5rem","xl":"0.75rem"}},"defaults":{"width":1200,"height":630},"paths":{"root":"_loopwind"}};
|
|
15
|
+
|
|
16
|
+
function App() {
|
|
17
|
+
return (
|
|
18
|
+
<VideoPlayer
|
|
19
|
+
Template={Template}
|
|
20
|
+
meta={meta}
|
|
21
|
+
props={props}
|
|
22
|
+
tailwindConfig={tailwindConfig}
|
|
23
|
+
loopwindConfig={loopwindConfig}
|
|
24
|
+
/>
|
|
25
|
+
);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
const container = document.getElementById('root');
|
|
29
|
+
const root = createRoot(container);
|
|
30
|
+
root.render(<App />);
|
|
31
|
+
|
|
32
|
+
// Hot module replacement
|
|
33
|
+
if (import.meta.hot) {
|
|
34
|
+
import.meta.hot.accept();
|
|
35
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
|
|
2
|
+
<!DOCTYPE html>
|
|
3
|
+
<html lang="en">
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="UTF-8">
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
7
|
+
<title>Video Preview: video-intro</title>
|
|
8
|
+
<style>
|
|
9
|
+
* {
|
|
10
|
+
margin: 0;
|
|
11
|
+
padding: 0;
|
|
12
|
+
box-sizing: border-box;
|
|
13
|
+
}
|
|
14
|
+
body {
|
|
15
|
+
overflow: hidden;
|
|
16
|
+
}
|
|
17
|
+
/* Custom range slider styling */
|
|
18
|
+
input[type="range"] {
|
|
19
|
+
-webkit-appearance: none;
|
|
20
|
+
appearance: none;
|
|
21
|
+
outline: none;
|
|
22
|
+
}
|
|
23
|
+
input[type="range"]::-webkit-slider-thumb {
|
|
24
|
+
-webkit-appearance: none;
|
|
25
|
+
appearance: none;
|
|
26
|
+
width: 14px;
|
|
27
|
+
height: 14px;
|
|
28
|
+
border-radius: 50%;
|
|
29
|
+
background: #7c3aed;
|
|
30
|
+
cursor: pointer;
|
|
31
|
+
margin-top: -4px;
|
|
32
|
+
}
|
|
33
|
+
input[type="range"]::-moz-range-thumb {
|
|
34
|
+
width: 14px;
|
|
35
|
+
height: 14px;
|
|
36
|
+
border-radius: 50%;
|
|
37
|
+
background: #7c3aed;
|
|
38
|
+
cursor: pointer;
|
|
39
|
+
border: none;
|
|
40
|
+
}
|
|
41
|
+
input[type="range"]::-webkit-slider-runnable-track {
|
|
42
|
+
height: 6px;
|
|
43
|
+
border-radius: 3px;
|
|
44
|
+
}
|
|
45
|
+
input[type="range"]::-moz-range-track {
|
|
46
|
+
height: 6px;
|
|
47
|
+
border-radius: 3px;
|
|
48
|
+
}
|
|
49
|
+
</style>
|
|
50
|
+
</head>
|
|
51
|
+
<body>
|
|
52
|
+
<div id="root"></div>
|
|
53
|
+
<script type="module" src="/entry.tsx"></script>
|
|
54
|
+
</body>
|
|
55
|
+
</html>
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBpC,eAAO,MAAM,cAAc,SAkVvB,CAAC"}
|
package/dist/commands/preview.js
CHANGED
|
@@ -3,7 +3,8 @@ import chalk from 'chalk';
|
|
|
3
3
|
import express from 'express';
|
|
4
4
|
import { watch } from 'chokidar';
|
|
5
5
|
import { renderToSVG } from '../lib/renderer.js';
|
|
6
|
-
import { getTemplatePathAsync } from '../lib/utils.js';
|
|
6
|
+
import { getTemplatePathAsync, loadTemplateMeta } from '../lib/utils.js';
|
|
7
|
+
import { startVideoPreview } from '../lib/video-preview.js';
|
|
7
8
|
import path from 'path';
|
|
8
9
|
import { fileURLToPath } from 'url';
|
|
9
10
|
import fs from 'fs/promises';
|
|
@@ -61,9 +62,36 @@ Examples:
|
|
|
61
62
|
}
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
|
-
//
|
|
65
|
-
const
|
|
65
|
+
// Load template meta to check if it's a video
|
|
66
|
+
const meta = await loadTemplateMeta(templateName);
|
|
66
67
|
const port = typeof options.port === 'string' ? parseInt(options.port) : (options.port || 3000);
|
|
68
|
+
// Check if this is a video template
|
|
69
|
+
if (meta.type === 'video' || meta.video) {
|
|
70
|
+
console.log(chalk.magenta('🎬 Detected video template, starting video preview...\n'));
|
|
71
|
+
const { server, cleanup } = await startVideoPreview({
|
|
72
|
+
templateName,
|
|
73
|
+
templatePath,
|
|
74
|
+
props,
|
|
75
|
+
meta,
|
|
76
|
+
port,
|
|
77
|
+
open: options.open !== false
|
|
78
|
+
});
|
|
79
|
+
console.log(chalk.green('✓ Video preview server started\n'));
|
|
80
|
+
console.log(chalk.cyan(' Local: ') + chalk.underline(`http://localhost:${port}`));
|
|
81
|
+
console.log(chalk.dim(`\n Duration: ${meta.video.duration}s @ ${meta.video.fps}fps`));
|
|
82
|
+
console.log(chalk.dim(' Press Ctrl+C to stop\n'));
|
|
83
|
+
// Handle cleanup
|
|
84
|
+
const handleExit = async () => {
|
|
85
|
+
console.log(chalk.yellow('\n\n👋 Shutting down video preview...'));
|
|
86
|
+
await cleanup();
|
|
87
|
+
process.exit(0);
|
|
88
|
+
};
|
|
89
|
+
process.on('SIGINT', handleExit);
|
|
90
|
+
process.on('SIGTERM', handleExit);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
// Create Express app for image preview
|
|
94
|
+
const app = express();
|
|
67
95
|
const format = options.format || 'png';
|
|
68
96
|
// Store the latest render
|
|
69
97
|
let latestRender = '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AACjC,OAAO,EAAE,WAAW,EAAe,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/commands/preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,GAAG,QAAiC,CAAC;AAGlD,eAAO,MAAM,yBAAyB,cAAc,CAAC;AAIrD,eAAO,MAAM,YAAY,QAA6D,CAAC;AACvF,eAAO,MAAM,aAAa,QAAwD,CAAC;AACnF,eAAO,MAAM,UAAU,QAAsD,CAAC;AAG9E,eAAO,MAAM,gBAAgB,2BAA2B,CAAC"}
|
package/dist/lib/constants.js
CHANGED
|
@@ -1,12 +1,17 @@
|
|
|
1
1
|
import path from 'path';
|
|
2
|
+
// Check if we're in a browser environment
|
|
3
|
+
// Note: process may be defined but process.cwd may not be a function in browser
|
|
4
|
+
const isBrowser = typeof window !== 'undefined' && (typeof process === 'undefined' || typeof process.cwd !== 'function');
|
|
2
5
|
// Get current working directory (where user runs the command)
|
|
3
|
-
|
|
6
|
+
// In browser, use empty string as CWD is not applicable
|
|
7
|
+
export const CWD = isBrowser ? '' : process.cwd();
|
|
4
8
|
// Default directory name (can be overridden in loopwind.json)
|
|
5
9
|
export const DEFAULT_LOOPWIND_DIR_NAME = '_loopwind';
|
|
6
10
|
// Project-local directories (defaults - can be overridden via config)
|
|
7
|
-
|
|
8
|
-
export const
|
|
9
|
-
export const
|
|
11
|
+
// In browser, these paths won't be used
|
|
12
|
+
export const LOOPWIND_DIR = isBrowser ? '' : path.join(CWD, DEFAULT_LOOPWIND_DIR_NAME);
|
|
13
|
+
export const TEMPLATES_DIR = isBrowser ? '' : path.join(LOOPWIND_DIR, 'templates');
|
|
14
|
+
export const OUTPUT_DIR = isBrowser ? '' : path.join(LOOPWIND_DIR, 'outputs');
|
|
10
15
|
// Default registry URL
|
|
11
16
|
export const DEFAULT_REGISTRY = 'https://loopwind.dev/r';
|
|
12
17
|
//# sourceMappingURL=constants.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,8DAA8D;AAC9D,MAAM,CAAC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/lib/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,0CAA0C;AAC1C,gFAAgF;AAChF,MAAM,SAAS,GAAG,OAAO,MAAM,KAAK,WAAW,IAAI,CAAC,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;AAEzH,8DAA8D;AAC9D,wDAAwD;AACxD,MAAM,CAAC,MAAM,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;AAElD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,yBAAyB,GAAG,WAAW,CAAC;AAErD,sEAAsE;AACtE,wCAAwC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;AACvF,MAAM,CAAC,MAAM,aAAa,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;AACnF,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;AAE9E,uBAAuB;AACvB,MAAM,CAAC,MAAM,gBAAgB,GAAG,wBAAwB,CAAC"}
|
package/dist/lib/helpers.d.ts
CHANGED
|
@@ -13,17 +13,7 @@ export declare function qr(text: string, options?: {
|
|
|
13
13
|
}): Promise<string>;
|
|
14
14
|
/**
|
|
15
15
|
* Image helper for templates
|
|
16
|
-
* Converts an image file to a data URI
|
|
16
|
+
* Converts an image file or URL to a data URI
|
|
17
17
|
*/
|
|
18
|
-
export declare function image(
|
|
19
|
-
/**
|
|
20
|
-
* Pre-extract all frames from a video file
|
|
21
|
-
* This should be called during the discovery/pre-generation phase
|
|
22
|
-
*/
|
|
23
|
-
export declare function extractVideoFramesForCache(filePath: string, fps: number): Promise<string[]>;
|
|
24
|
-
/**
|
|
25
|
-
* Video helper for templates
|
|
26
|
-
* Returns the appropriate video frame as a data URI based on current frame number
|
|
27
|
-
*/
|
|
28
|
-
export declare function video(filePath: string, currentFrame: number, fps: number): Promise<string>;
|
|
18
|
+
export declare function image(filePathOrUrl: string): Promise<string>;
|
|
29
19
|
//# sourceMappingURL=helpers.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/lib/helpers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/lib/helpers.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,wBAAsB,EAAE,CACtB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE;IACR,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IAC7C,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACH,GACA,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED;;;GAGG;AACH,wBAAsB,KAAK,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAyClE"}
|
package/dist/lib/helpers.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import QRCode from 'qrcode';
|
|
2
2
|
import fs from 'fs/promises';
|
|
3
3
|
import path from 'path';
|
|
4
|
-
import { spawn } from 'child_process';
|
|
5
|
-
import os from 'os';
|
|
6
4
|
/**
|
|
7
5
|
* QR Code helper for templates
|
|
8
6
|
* Generates a data URI for a QR code from a string
|
|
@@ -28,24 +26,39 @@ export async function qr(text, options) {
|
|
|
28
26
|
}
|
|
29
27
|
/**
|
|
30
28
|
* Image helper for templates
|
|
31
|
-
* Converts an image file to a data URI
|
|
29
|
+
* Converts an image file or URL to a data URI
|
|
32
30
|
*/
|
|
33
|
-
export async function image(
|
|
31
|
+
export async function image(filePathOrUrl) {
|
|
34
32
|
try {
|
|
35
|
-
|
|
36
|
-
const
|
|
37
|
-
|
|
38
|
-
let mimeType
|
|
39
|
-
if (
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
33
|
+
// Check if it's a URL
|
|
34
|
+
const isUrl = filePathOrUrl.startsWith('http://') || filePathOrUrl.startsWith('https://');
|
|
35
|
+
let buffer;
|
|
36
|
+
let mimeType;
|
|
37
|
+
if (isUrl) {
|
|
38
|
+
// Fetch the image from URL
|
|
39
|
+
const response = await fetch(filePathOrUrl);
|
|
40
|
+
if (!response.ok) {
|
|
41
|
+
throw new Error(`Failed to fetch image: ${response.statusText}`);
|
|
42
|
+
}
|
|
43
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
44
|
+
buffer = Buffer.from(arrayBuffer);
|
|
45
|
+
// Get MIME type from Content-Type header, or guess from URL
|
|
46
|
+
const contentType = response.headers.get('content-type');
|
|
47
|
+
if (contentType && contentType.startsWith('image/')) {
|
|
48
|
+
mimeType = contentType.split(';')[0]; // Remove charset etc.
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// Fallback: guess from URL extension
|
|
52
|
+
const ext = path.extname(new URL(filePathOrUrl).pathname).toLowerCase();
|
|
53
|
+
mimeType = getMimeType(ext);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
// Read local file
|
|
58
|
+
buffer = await fs.readFile(filePathOrUrl);
|
|
59
|
+
const ext = path.extname(filePathOrUrl).toLowerCase();
|
|
60
|
+
mimeType = getMimeType(ext);
|
|
61
|
+
}
|
|
49
62
|
const base64 = buffer.toString('base64');
|
|
50
63
|
return `data:${mimeType};base64,${base64}`;
|
|
51
64
|
}
|
|
@@ -56,104 +69,19 @@ export async function image(filePath) {
|
|
|
56
69
|
}
|
|
57
70
|
}
|
|
58
71
|
/**
|
|
59
|
-
*
|
|
60
|
-
* Maps video path -> array of frame data URIs
|
|
61
|
-
*/
|
|
62
|
-
const videoFrameCache = new Map();
|
|
63
|
-
/**
|
|
64
|
-
* Extract frames from a video file using ffmpeg
|
|
72
|
+
* Get MIME type from file extension
|
|
65
73
|
*/
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
if (
|
|
70
|
-
return
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
const args = [
|
|
79
|
-
'-i', videoPath,
|
|
80
|
-
'-vf', `fps=${fps}`,
|
|
81
|
-
path.join(tmpDir, 'frame-%04d.png')
|
|
82
|
-
];
|
|
83
|
-
const ffmpeg = spawn('ffmpeg', args);
|
|
84
|
-
let stderr = '';
|
|
85
|
-
ffmpeg.stderr.on('data', (data) => {
|
|
86
|
-
stderr += data.toString();
|
|
87
|
-
});
|
|
88
|
-
ffmpeg.on('error', (err) => {
|
|
89
|
-
// Check if it's a "command not found" error (ffmpeg not installed)
|
|
90
|
-
if (err.message.includes('ENOENT') || err.message.includes('not found')) {
|
|
91
|
-
reject(new Error('FFmpeg is not installed. Video embedding requires FFmpeg.\n' +
|
|
92
|
-
'Install it:\n' +
|
|
93
|
-
' macOS: brew install ffmpeg\n' +
|
|
94
|
-
' Ubuntu: apt-get install ffmpeg\n' +
|
|
95
|
-
' Windows: choco install ffmpeg'));
|
|
96
|
-
}
|
|
97
|
-
else {
|
|
98
|
-
reject(new Error(`Failed to extract video frames: ${err.message}`));
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
ffmpeg.on('close', (code) => {
|
|
102
|
-
if (code === 0) {
|
|
103
|
-
resolve();
|
|
104
|
-
}
|
|
105
|
-
else {
|
|
106
|
-
reject(new Error(`ffmpeg exited with code ${code}\n${stderr}`));
|
|
107
|
-
}
|
|
108
|
-
});
|
|
109
|
-
});
|
|
110
|
-
// Read all extracted frames and convert to data URIs
|
|
111
|
-
const files = await fs.readdir(tmpDir);
|
|
112
|
-
const frameFiles = files
|
|
113
|
-
.filter(f => f.startsWith('frame-') && f.endsWith('.png'))
|
|
114
|
-
.sort();
|
|
115
|
-
const frames = [];
|
|
116
|
-
for (const file of frameFiles) {
|
|
117
|
-
const framePath = path.join(tmpDir, file);
|
|
118
|
-
const buffer = await fs.readFile(framePath);
|
|
119
|
-
const base64 = buffer.toString('base64');
|
|
120
|
-
frames.push(`data:image/png;base64,${base64}`);
|
|
121
|
-
}
|
|
122
|
-
// Cache the frames
|
|
123
|
-
videoFrameCache.set(cacheKey, frames);
|
|
124
|
-
// Clean up temp directory
|
|
125
|
-
await fs.rm(tmpDir, { recursive: true, force: true });
|
|
126
|
-
return frames;
|
|
127
|
-
}
|
|
128
|
-
catch (error) {
|
|
129
|
-
// Clean up on error
|
|
130
|
-
await fs.rm(tmpDir, { recursive: true, force: true }).catch(() => { });
|
|
131
|
-
throw error;
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
/**
|
|
135
|
-
* Pre-extract all frames from a video file
|
|
136
|
-
* This should be called during the discovery/pre-generation phase
|
|
137
|
-
*/
|
|
138
|
-
export async function extractVideoFramesForCache(filePath, fps) {
|
|
139
|
-
return extractVideoFrames(filePath, fps);
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* Video helper for templates
|
|
143
|
-
* Returns the appropriate video frame as a data URI based on current frame number
|
|
144
|
-
*/
|
|
145
|
-
export async function video(filePath, currentFrame, fps) {
|
|
146
|
-
try {
|
|
147
|
-
const frames = await extractVideoFrames(filePath, fps);
|
|
148
|
-
// Return the frame that matches the current frame
|
|
149
|
-
// If we run out of frames, loop back to start
|
|
150
|
-
const frameIndex = currentFrame % frames.length;
|
|
151
|
-
return frames[frameIndex];
|
|
152
|
-
}
|
|
153
|
-
catch (error) {
|
|
154
|
-
console.error('Video frame extraction failed:', error);
|
|
155
|
-
// Return a placeholder data URI on error
|
|
156
|
-
return 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==';
|
|
157
|
-
}
|
|
74
|
+
function getMimeType(ext) {
|
|
75
|
+
if (ext === '.jpg' || ext === '.jpeg')
|
|
76
|
+
return 'image/jpeg';
|
|
77
|
+
if (ext === '.png')
|
|
78
|
+
return 'image/png';
|
|
79
|
+
if (ext === '.gif')
|
|
80
|
+
return 'image/gif';
|
|
81
|
+
if (ext === '.webp')
|
|
82
|
+
return 'image/webp';
|
|
83
|
+
if (ext === '.svg')
|
|
84
|
+
return 'image/svg+xml';
|
|
85
|
+
return 'image/png';
|
|
158
86
|
}
|
|
159
87
|
//# sourceMappingURL=helpers.js.map
|
package/dist/lib/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/lib/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/lib/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/lib/renderer.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAiB1D;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAqFhD;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,YAAY,EAAE,MAAM,EACpB,KAAK,GAAE,aAAkB,GACxB,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"renderer.d.ts","sourceRoot":"","sources":["../../src/lib/renderer.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAiB1D;;;;;;GAMG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC;IAAE,MAAM,EAAE,GAAG,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,CAAC,CAqFhD;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,YAAY,EAAE,MAAM,EACpB,KAAK,GAAE,aAAkB,GACxB,OAAO,CAAC,MAAM,CAAC,CAkPjB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,YAAY,EAAE,MAAM,EACpB,KAAK,GAAE,aAAkB,EACzB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,KAAK,GAAE,aAAkB,EACzB,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAO,GACjD,OAAO,CAAC,MAAM,CAAC,CAwBjB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,YAAY,EAAE,MAAM,EACpB,KAAK,GAAE,aAAkB,GACxB,OAAO,CAAC,MAAM,CAAC,CAUjB;AAGD;;GAEG;AACH,wBAAsB,UAAU,CAC9B,IAAI,EAAE,MAAM,GAAG,MAAM,EACrB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAEf;AAwKD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;CAClD;AAED;;GAEG;AACH,wBAAsB,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,CA8B7E"}
|