@mulmocast/slide 0.1.3 → 0.1.5
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/lib/actions/bundle.d.ts +1 -1
- package/lib/actions/bundle.d.ts.map +1 -1
- package/lib/actions/bundle.js +6 -1
- package/lib/actions/bundle.js.map +1 -1
- package/lib/actions/movie.d.ts +5 -1
- package/lib/actions/movie.d.ts.map +1 -1
- package/lib/actions/movie.js +6 -1
- package/lib/actions/movie.js.map +1 -1
- package/lib/actions/preview.d.ts +3 -0
- package/lib/actions/preview.d.ts.map +1 -0
- package/lib/actions/preview.js +165 -0
- package/lib/actions/preview.js.map +1 -0
- package/lib/actions/upload.d.ts.map +1 -1
- package/lib/actions/upload.js +57 -18
- package/lib/actions/upload.js.map +1 -1
- package/lib/cli.js +27 -26
- package/lib/cli.js.map +1 -1
- package/lib/convert/pptx.d.ts.map +1 -1
- package/lib/convert/pptx.js +217 -6
- package/lib/convert/pptx.js.map +1 -1
- package/lib/vue/assets/index-CLnVMYbH.js +1 -0
- package/lib/vue/assets/index-aXYemk-W.css +1 -0
- package/lib/vue/index.html +13 -0
- package/lib/vue/main.d.ts +2 -0
- package/lib/vue/main.d.ts.map +1 -0
- package/lib/vue/main.js +10 -0
- package/lib/vue/main.js.map +1 -0
- package/package.json +12 -2
package/lib/actions/bundle.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../src/actions/bundle.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../src/actions/bundle.ts"],"names":[],"mappings":";AAOA,wBAAsB,cAAc,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAwB9F"}
|
package/lib/actions/bundle.js
CHANGED
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.runMulmoBundle = runMulmoBundle;
|
|
7
8
|
const mulmocast_1 = require("mulmocast");
|
|
8
9
|
const yargs_1 = __importDefault(require("yargs"));
|
|
9
10
|
const helpers_1 = require("yargs/helpers");
|
|
@@ -58,5 +59,9 @@ async function main() {
|
|
|
58
59
|
generateText: argv.g,
|
|
59
60
|
});
|
|
60
61
|
}
|
|
61
|
-
main()
|
|
62
|
+
// Only run main() when executed directly, not when imported
|
|
63
|
+
const isDirectRun = process.argv[1]?.endsWith("bundle.ts") || process.argv[1]?.endsWith("bundle.js");
|
|
64
|
+
if (isDirectRun) {
|
|
65
|
+
main();
|
|
66
|
+
}
|
|
62
67
|
//# sourceMappingURL=bundle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../src/actions/bundle.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../src/actions/bundle.ts"],"names":[],"mappings":"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"}
|
package/lib/actions/movie.d.ts
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env tsx
|
|
2
|
-
export {
|
|
2
|
+
export interface MovieOptions {
|
|
3
|
+
targetLang?: string;
|
|
4
|
+
captionLang?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function runMulmoMovie(mulmoScriptPath: string, outputDir: string, options?: MovieOptions): Promise<void>;
|
|
3
7
|
//# sourceMappingURL=movie.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"movie.d.ts","sourceRoot":"","sources":["../../src/actions/movie.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"movie.d.ts","sourceRoot":"","sources":["../../src/actions/movie.ts"],"names":[],"mappings":";AAOA,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,aAAa,CACjC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,YAAiB,GACzB,OAAO,CAAC,IAAI,CAAC,CAiCf"}
|
package/lib/actions/movie.js
CHANGED
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
5
|
};
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.runMulmoMovie = runMulmoMovie;
|
|
7
8
|
const mulmocast_1 = require("mulmocast");
|
|
8
9
|
const yargs_1 = __importDefault(require("yargs"));
|
|
9
10
|
const helpers_1 = require("yargs/helpers");
|
|
@@ -81,5 +82,9 @@ async function main() {
|
|
|
81
82
|
generateText: argv.g,
|
|
82
83
|
});
|
|
83
84
|
}
|
|
84
|
-
main()
|
|
85
|
+
// Only run main() when executed directly, not when imported
|
|
86
|
+
const isDirectRun = process.argv[1]?.endsWith("movie.ts") || process.argv[1]?.endsWith("movie.js");
|
|
87
|
+
if (isDirectRun) {
|
|
88
|
+
main();
|
|
89
|
+
}
|
|
85
90
|
//# sourceMappingURL=movie.js.map
|
package/lib/actions/movie.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"movie.js","sourceRoot":"","sources":["../../src/actions/movie.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"movie.js","sourceRoot":"","sources":["../../src/actions/movie.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/actions/preview.ts"],"names":[],"mappings":";AAmFA,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAqB,GAAG,IAAI,CAqDpE"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
"use strict";
|
|
3
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
4
|
+
if (k2 === undefined) k2 = k;
|
|
5
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
6
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
+
}
|
|
9
|
+
Object.defineProperty(o, k2, desc);
|
|
10
|
+
}) : (function(o, m, k, k2) {
|
|
11
|
+
if (k2 === undefined) k2 = k;
|
|
12
|
+
o[k2] = m[k];
|
|
13
|
+
}));
|
|
14
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
+
}) : function(o, v) {
|
|
17
|
+
o["default"] = v;
|
|
18
|
+
});
|
|
19
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
+
var ownKeys = function(o) {
|
|
21
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
+
var ar = [];
|
|
23
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
+
return ar;
|
|
25
|
+
};
|
|
26
|
+
return ownKeys(o);
|
|
27
|
+
};
|
|
28
|
+
return function (mod) {
|
|
29
|
+
if (mod && mod.__esModule) return mod;
|
|
30
|
+
var result = {};
|
|
31
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
+
__setModuleDefault(result, mod);
|
|
33
|
+
return result;
|
|
34
|
+
};
|
|
35
|
+
})();
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.startPreviewServer = startPreviewServer;
|
|
38
|
+
const http = __importStar(require("http"));
|
|
39
|
+
const fs = __importStar(require("fs"));
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const DEFAULT_PORT = 3000;
|
|
42
|
+
// Find bundle directories in output/
|
|
43
|
+
function findBundles(outputDir) {
|
|
44
|
+
const bundles = [];
|
|
45
|
+
if (!fs.existsSync(outputDir)) {
|
|
46
|
+
return bundles;
|
|
47
|
+
}
|
|
48
|
+
const entries = fs.readdirSync(outputDir, { withFileTypes: true });
|
|
49
|
+
for (const entry of entries) {
|
|
50
|
+
if (entry.isDirectory()) {
|
|
51
|
+
// Check for mulmo_view.json in subdirectories (e.g., output/GraphAI/mulmo_script/)
|
|
52
|
+
const dirPath = path.join(outputDir, entry.name);
|
|
53
|
+
const subEntries = fs.readdirSync(dirPath, { withFileTypes: true });
|
|
54
|
+
for (const subEntry of subEntries) {
|
|
55
|
+
if (subEntry.isDirectory()) {
|
|
56
|
+
const subDirPath = path.join(dirPath, subEntry.name);
|
|
57
|
+
if (fs.existsSync(path.join(subDirPath, "mulmo_view.json"))) {
|
|
58
|
+
bundles.push({
|
|
59
|
+
name: entry.name,
|
|
60
|
+
path: `${entry.name}/${subEntry.name}`,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return bundles;
|
|
68
|
+
}
|
|
69
|
+
// Get MIME type from file extension
|
|
70
|
+
function getMimeType(filePath) {
|
|
71
|
+
const ext = path.extname(filePath).toLowerCase();
|
|
72
|
+
const mimeTypes = {
|
|
73
|
+
".html": "text/html",
|
|
74
|
+
".css": "text/css",
|
|
75
|
+
".js": "application/javascript",
|
|
76
|
+
".json": "application/json",
|
|
77
|
+
".png": "image/png",
|
|
78
|
+
".jpg": "image/jpeg",
|
|
79
|
+
".jpeg": "image/jpeg",
|
|
80
|
+
".gif": "image/gif",
|
|
81
|
+
".svg": "image/svg+xml",
|
|
82
|
+
".mp3": "audio/mpeg",
|
|
83
|
+
".mp4": "video/mp4",
|
|
84
|
+
".webm": "video/webm",
|
|
85
|
+
};
|
|
86
|
+
return mimeTypes[ext] || "application/octet-stream";
|
|
87
|
+
}
|
|
88
|
+
// Serve static file
|
|
89
|
+
function serveFile(res, filePath) {
|
|
90
|
+
if (!fs.existsSync(filePath)) {
|
|
91
|
+
res.writeHead(404, { "Content-Type": "text/plain" });
|
|
92
|
+
res.end("Not Found");
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const stat = fs.statSync(filePath);
|
|
96
|
+
if (!stat.isFile()) {
|
|
97
|
+
res.writeHead(404, { "Content-Type": "text/plain" });
|
|
98
|
+
res.end("Not Found");
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
res.writeHead(200, { "Content-Type": getMimeType(filePath) });
|
|
102
|
+
fs.createReadStream(filePath).pipe(res);
|
|
103
|
+
}
|
|
104
|
+
function startPreviewServer(port = DEFAULT_PORT) {
|
|
105
|
+
const cwd = process.cwd();
|
|
106
|
+
const outputDir = path.join(cwd, "output");
|
|
107
|
+
// Find the Vue build directory
|
|
108
|
+
// In development, it's in the project root
|
|
109
|
+
// In npm package, it's in node_modules/@mulmocast/slide/lib/vue
|
|
110
|
+
let vueDir = path.join(__dirname, "..", "..", "lib", "vue");
|
|
111
|
+
if (!fs.existsSync(vueDir)) {
|
|
112
|
+
// Fallback to project root for development
|
|
113
|
+
vueDir = path.join(__dirname, "..", "..", "..", "lib", "vue");
|
|
114
|
+
}
|
|
115
|
+
if (!fs.existsSync(vueDir)) {
|
|
116
|
+
console.error("Vue build not found. Run 'yarn build:vue' first.");
|
|
117
|
+
console.log("Or use 'yarn dev' for development mode.");
|
|
118
|
+
process.exit(1);
|
|
119
|
+
}
|
|
120
|
+
const server = http.createServer((req, res) => {
|
|
121
|
+
const url = new URL(req.url || "/", `http://localhost:${port}`);
|
|
122
|
+
const pathname = url.pathname;
|
|
123
|
+
// API endpoint for bundles list
|
|
124
|
+
if (pathname === "/api/bundles") {
|
|
125
|
+
const bundles = findBundles(outputDir);
|
|
126
|
+
res.writeHead(200, { "Content-Type": "application/json" });
|
|
127
|
+
res.end(JSON.stringify(bundles));
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
// Serve bundle files from output/
|
|
131
|
+
if (pathname.startsWith("/bundles/")) {
|
|
132
|
+
const bundlePath = pathname.slice("/bundles/".length);
|
|
133
|
+
const filePath = path.join(outputDir, bundlePath);
|
|
134
|
+
serveFile(res, filePath);
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
// Serve Vue app static files
|
|
138
|
+
let filePath = path.join(vueDir, pathname);
|
|
139
|
+
if (pathname === "/" || !fs.existsSync(filePath)) {
|
|
140
|
+
filePath = path.join(vueDir, "index.html");
|
|
141
|
+
}
|
|
142
|
+
serveFile(res, filePath);
|
|
143
|
+
});
|
|
144
|
+
server.listen(port, () => {
|
|
145
|
+
console.log(`\nMulmoViewer Preview Server`);
|
|
146
|
+
console.log(` Local: http://localhost:${port}`);
|
|
147
|
+
console.log(` Output directory: ${outputDir}`);
|
|
148
|
+
console.log(`\nPress Ctrl+C to stop\n`);
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
async function main() {
|
|
152
|
+
const args = process.argv.slice(2);
|
|
153
|
+
const port = args[0] ? parseInt(args[0], 10) : DEFAULT_PORT;
|
|
154
|
+
if (isNaN(port)) {
|
|
155
|
+
console.error("Invalid port number");
|
|
156
|
+
process.exit(1);
|
|
157
|
+
}
|
|
158
|
+
startPreviewServer(port);
|
|
159
|
+
}
|
|
160
|
+
// Only run main() when executed directly
|
|
161
|
+
const isDirectRun = process.argv[1]?.endsWith("preview.ts") || process.argv[1]?.endsWith("preview.js");
|
|
162
|
+
if (isDirectRun) {
|
|
163
|
+
main();
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=preview.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/actions/preview.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/actions/upload.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"upload.d.ts","sourceRoot":"","sources":["../../src/actions/upload.ts"],"names":[],"mappings":";AAqGA,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAiEpD"}
|
package/lib/actions/upload.js
CHANGED
|
@@ -43,6 +43,25 @@ const fs = __importStar(require("fs"));
|
|
|
43
43
|
const path = __importStar(require("path"));
|
|
44
44
|
dotenv_1.default.config({ quiet: true });
|
|
45
45
|
const API_BASE_URL = "https://mulmocast-app-dev.web.app/api/1.0";
|
|
46
|
+
const MAX_RETRIES = 3;
|
|
47
|
+
const INITIAL_DELAY_MS = 1000;
|
|
48
|
+
const MAX_CONCURRENT_UPLOADS = 5;
|
|
49
|
+
async function sleep(ms) {
|
|
50
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
51
|
+
}
|
|
52
|
+
async function uploadWithConcurrencyLimit(items, fn, concurrency) {
|
|
53
|
+
const results = [];
|
|
54
|
+
let index = 0;
|
|
55
|
+
async function worker() {
|
|
56
|
+
while (index < items.length) {
|
|
57
|
+
const currentIndex = index++;
|
|
58
|
+
results[currentIndex] = await fn(items[currentIndex]);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const workers = Array.from({ length: Math.min(concurrency, items.length) }, () => worker());
|
|
62
|
+
await Promise.all(workers);
|
|
63
|
+
return results;
|
|
64
|
+
}
|
|
46
65
|
async function uploadFileToR2(sign, mediaDir) {
|
|
47
66
|
const filePath = path.join(mediaDir, sign.fileName);
|
|
48
67
|
if (!fs.existsSync(filePath)) {
|
|
@@ -50,25 +69,41 @@ async function uploadFileToR2(sign, mediaDir) {
|
|
|
50
69
|
return false;
|
|
51
70
|
}
|
|
52
71
|
const fileBuffer = fs.readFileSync(filePath);
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
72
|
+
for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {
|
|
73
|
+
try {
|
|
74
|
+
const response = await fetch(sign.url, {
|
|
75
|
+
method: "PUT",
|
|
76
|
+
headers: {
|
|
77
|
+
"Content-Type": sign.contentType,
|
|
78
|
+
},
|
|
79
|
+
body: new Uint8Array(fileBuffer),
|
|
80
|
+
});
|
|
81
|
+
if (response.ok) {
|
|
82
|
+
console.log(` Uploaded: ${sign.fileName}`);
|
|
83
|
+
return true;
|
|
84
|
+
}
|
|
85
|
+
// Retry on 5xx server errors
|
|
86
|
+
if (response.status >= 500 && attempt < MAX_RETRIES) {
|
|
87
|
+
const delay = INITIAL_DELAY_MS * Math.pow(2, attempt - 1);
|
|
88
|
+
console.log(` Retry ${attempt}/${MAX_RETRIES} for ${sign.fileName} (${response.status}), waiting ${delay}ms...`);
|
|
89
|
+
await sleep(delay);
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
62
92
|
console.error(` Failed to upload ${sign.fileName}: ${response.status} ${response.statusText}`);
|
|
63
93
|
return false;
|
|
64
94
|
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
95
|
+
catch (error) {
|
|
96
|
+
if (attempt < MAX_RETRIES) {
|
|
97
|
+
const delay = INITIAL_DELAY_MS * Math.pow(2, attempt - 1);
|
|
98
|
+
console.log(` Retry ${attempt}/${MAX_RETRIES} for ${sign.fileName} (network error), waiting ${delay}ms...`);
|
|
99
|
+
await sleep(delay);
|
|
100
|
+
continue;
|
|
101
|
+
}
|
|
102
|
+
console.error(` Error uploading ${sign.fileName}:`, error);
|
|
103
|
+
return false;
|
|
104
|
+
}
|
|
71
105
|
}
|
|
106
|
+
return false;
|
|
72
107
|
}
|
|
73
108
|
async function uploadBundleDir(bundleDir, apiKey) {
|
|
74
109
|
const jsonFilePath = path.join(bundleDir, "mulmo_view.json");
|
|
@@ -92,8 +127,8 @@ async function uploadBundleDir(bundleDir, apiKey) {
|
|
|
92
127
|
}
|
|
93
128
|
const data = (await response.json());
|
|
94
129
|
if (data.signs && data.signs.length > 0) {
|
|
95
|
-
console.log(` Uploading ${data.signs.length} files...`);
|
|
96
|
-
const results = await
|
|
130
|
+
console.log(` Uploading ${data.signs.length} files (${MAX_CONCURRENT_UPLOADS} concurrent)...`);
|
|
131
|
+
const results = await uploadWithConcurrencyLimit(data.signs, (sign) => uploadFileToR2(sign, bundleDir), MAX_CONCURRENT_UPLOADS);
|
|
97
132
|
const failCount = results.filter((success) => !success).length;
|
|
98
133
|
if (failCount > 0) {
|
|
99
134
|
throw new Error(`Failed to upload ${failCount} out of ${data.signs.length} files`);
|
|
@@ -168,5 +203,9 @@ async function main() {
|
|
|
168
203
|
process.exit(1);
|
|
169
204
|
}
|
|
170
205
|
}
|
|
171
|
-
main()
|
|
206
|
+
// Only run main() when executed directly, not when imported
|
|
207
|
+
const isDirectRun = process.argv[1]?.endsWith("upload.ts") || process.argv[1]?.endsWith("upload.js");
|
|
208
|
+
if (isDirectRun) {
|
|
209
|
+
main();
|
|
210
|
+
}
|
|
172
211
|
//# sourceMappingURL=upload.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/actions/upload.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/actions/upload.ts"],"names":[],"mappings":"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"}
|
package/lib/cli.js
CHANGED
|
@@ -45,9 +45,11 @@ const pdf_1 = require("./convert/pdf");
|
|
|
45
45
|
const child_process_1 = require("child_process");
|
|
46
46
|
const path = __importStar(require("path"));
|
|
47
47
|
const fs = __importStar(require("fs"));
|
|
48
|
-
const mulmocast_1 = require("mulmocast");
|
|
49
48
|
const lang_1 = require("./utils/lang");
|
|
50
49
|
const common_1 = require("./actions/common");
|
|
50
|
+
const movie_1 = require("./actions/movie");
|
|
51
|
+
const bundle_1 = require("./actions/bundle");
|
|
52
|
+
const preview_1 = require("./actions/preview");
|
|
51
53
|
// Common options for conversion commands
|
|
52
54
|
const convertOptions = {
|
|
53
55
|
...lang_1.langOption,
|
|
@@ -167,34 +169,14 @@ async function runAction(action, file, options) {
|
|
|
167
169
|
}
|
|
168
170
|
console.log(`\n✓ MulmoScript generated: ${mulmoScriptPath}`);
|
|
169
171
|
}
|
|
170
|
-
const context = await (0, common_1.initializeContext)(mulmoScriptPath, outputDir, {
|
|
171
|
-
targetLang: options.targetLang,
|
|
172
|
-
captionLang: options.captionLang,
|
|
173
|
-
});
|
|
174
172
|
if (action === "movie") {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
current.context = await (0, mulmocast_1.translate)(current.context);
|
|
180
|
-
}
|
|
181
|
-
console.log("Generating audio...");
|
|
182
|
-
current.context = await (0, mulmocast_1.audio)(current.context);
|
|
183
|
-
if (options.captionLang) {
|
|
184
|
-
console.log(`Generating captions (${options.captionLang})...`);
|
|
185
|
-
current.context = await (0, mulmocast_1.captions)(current.context);
|
|
186
|
-
}
|
|
187
|
-
console.log("Generating images...");
|
|
188
|
-
current.context = await (0, mulmocast_1.images)(current.context);
|
|
189
|
-
console.log("Creating movie...");
|
|
190
|
-
const result = await (0, mulmocast_1.movie)(current.context);
|
|
191
|
-
if (!result) {
|
|
192
|
-
throw new Error("Movie generation failed");
|
|
193
|
-
}
|
|
173
|
+
await (0, movie_1.runMulmoMovie)(mulmoScriptPath, outputDir, {
|
|
174
|
+
targetLang: options.targetLang,
|
|
175
|
+
captionLang: options.captionLang,
|
|
176
|
+
});
|
|
194
177
|
}
|
|
195
178
|
else {
|
|
196
|
-
|
|
197
|
-
await (0, mulmocast_1.mulmoViewerBundle)(context, { skipZip: true });
|
|
179
|
+
await (0, bundle_1.runMulmoBundle)(mulmoScriptPath, outputDir);
|
|
198
180
|
}
|
|
199
181
|
console.log(`\n✓ ${action === "movie" ? "Movie" : "Bundle"} generation complete!`);
|
|
200
182
|
console.log(` Output directory: ${outputDir}`);
|
|
@@ -342,9 +324,28 @@ async function runUpload(basename) {
|
|
|
342
324
|
});
|
|
343
325
|
}, async (argv) => {
|
|
344
326
|
await runUpload(argv.basename);
|
|
327
|
+
})
|
|
328
|
+
.command("preview [port]", "Start MulmoViewer preview server", (yargs) => {
|
|
329
|
+
return yargs.positional("port", {
|
|
330
|
+
describe: "Port number for the server",
|
|
331
|
+
type: "number",
|
|
332
|
+
default: 3000,
|
|
333
|
+
});
|
|
334
|
+
}, (argv) => {
|
|
335
|
+
(0, preview_1.startPreviewServer)(argv.port);
|
|
345
336
|
})
|
|
346
337
|
.demandCommand(1, "You need to specify a command")
|
|
347
338
|
.strict()
|
|
339
|
+
.showHelpOnFail(false)
|
|
340
|
+
.fail((msg, err) => {
|
|
341
|
+
if (err) {
|
|
342
|
+
console.error(`\n✗ Error: ${err.message}`);
|
|
343
|
+
}
|
|
344
|
+
else if (msg) {
|
|
345
|
+
console.error(msg);
|
|
346
|
+
}
|
|
347
|
+
process.exit(1);
|
|
348
|
+
})
|
|
348
349
|
.help()
|
|
349
350
|
.parse();
|
|
350
351
|
//# sourceMappingURL=cli.js.map
|
package/lib/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,kDAA0B;AAC1B,2CAAwC;AACxC,yCAA6C;AAC7C,yCAA6C;AAC7C,uCAA2C;AAC3C,iDAAyC;AACzC,2CAA6B;AAC7B,uCAAyB;AACzB,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pptx.d.ts","sourceRoot":"","sources":["../../src/convert/pptx.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pptx.d.ts","sourceRoot":"","sources":["../../src/convert/pptx.ts"],"names":[],"mappings":"AAOA,OAAO,EAA2B,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAoD5E,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;CACpB;AA4ND,wBAAsB,WAAW,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAuGzF"}
|
package/lib/convert/pptx.js
CHANGED
|
@@ -46,6 +46,193 @@ const helpers_1 = require("yargs/helpers");
|
|
|
46
46
|
const lang_1 = require("../utils/lang");
|
|
47
47
|
const pdf_1 = require("../utils/pdf");
|
|
48
48
|
const dependencies_1 = require("../utils/dependencies");
|
|
49
|
+
const unzipper_1 = __importDefault(require("unzipper"));
|
|
50
|
+
const xml2js_1 = require("xml2js");
|
|
51
|
+
/**
|
|
52
|
+
* Get the correct slide order from presentation.xml
|
|
53
|
+
* Returns an array of slide IDs in presentation order
|
|
54
|
+
*/
|
|
55
|
+
async function getSlideOrder(pptxFile) {
|
|
56
|
+
const directory = (await unzipper_1.default.Open.file(pptxFile));
|
|
57
|
+
const presentationFile = directory.files.find((f) => f.path === "ppt/presentation.xml");
|
|
58
|
+
if (!presentationFile) {
|
|
59
|
+
throw new Error("presentation.xml not found");
|
|
60
|
+
}
|
|
61
|
+
const content = await presentationFile.buffer();
|
|
62
|
+
const xmlContent = content.toString("utf-8");
|
|
63
|
+
return new Promise((resolve, reject) => {
|
|
64
|
+
(0, xml2js_1.parseString)(xmlContent, (err, result) => {
|
|
65
|
+
if (err) {
|
|
66
|
+
reject(err);
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
const pres = result?.["p:presentation"];
|
|
71
|
+
const sldIdLst = Array.isArray(pres)
|
|
72
|
+
? pres[0]?.["p:sldIdLst"]
|
|
73
|
+
: pres?.["p:sldIdLst"];
|
|
74
|
+
const slideIdList = sldIdLst?.[0]?.["p:sldId"] || [];
|
|
75
|
+
const slideOrder = [];
|
|
76
|
+
for (const slideId of slideIdList) {
|
|
77
|
+
const rId = slideId.$["r:id"];
|
|
78
|
+
// rId format is like "rId2", extract the number
|
|
79
|
+
const idNum = parseInt(rId.replace(/\D/g, ""), 10);
|
|
80
|
+
slideOrder.push(idNum);
|
|
81
|
+
}
|
|
82
|
+
resolve(slideOrder);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
reject(error);
|
|
86
|
+
}
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Map relationship IDs to slide numbers
|
|
92
|
+
* Returns a map of rId number -> slide number
|
|
93
|
+
*/
|
|
94
|
+
async function getSlideIdMap(pptxFile) {
|
|
95
|
+
const directory = (await unzipper_1.default.Open.file(pptxFile));
|
|
96
|
+
const relsFile = directory.files.find((f) => f.path === "ppt/_rels/presentation.xml.rels");
|
|
97
|
+
if (!relsFile) {
|
|
98
|
+
throw new Error("presentation.xml.rels not found");
|
|
99
|
+
}
|
|
100
|
+
const content = await relsFile.buffer();
|
|
101
|
+
const xmlContent = content.toString("utf-8");
|
|
102
|
+
return new Promise((resolve, reject) => {
|
|
103
|
+
(0, xml2js_1.parseString)(xmlContent, (err, result) => {
|
|
104
|
+
if (err) {
|
|
105
|
+
reject(err);
|
|
106
|
+
return;
|
|
107
|
+
}
|
|
108
|
+
try {
|
|
109
|
+
const relationships = result.Relationships?.Relationship || [];
|
|
110
|
+
const idMap = {};
|
|
111
|
+
for (const rel of relationships) {
|
|
112
|
+
const rId = rel.$?.Id;
|
|
113
|
+
const target = rel.$?.Target;
|
|
114
|
+
if (target && target.includes("slides/slide") && rId) {
|
|
115
|
+
const slideNum = parseInt(target.match(/slide(\d+)\.xml$/)?.[1] || "0", 10);
|
|
116
|
+
const idNum = parseInt(rId.replace(/\D/g, ""), 10);
|
|
117
|
+
idMap[idNum] = slideNum;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
resolve(idMap);
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
reject(error);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Extract speaker notes from PPTX file with correct slide mapping
|
|
130
|
+
* PPTX files contain speaker notes in ppt/notesSlides/notesSlide*.xml
|
|
131
|
+
* The mapping between slides and notesSlides is in ppt/slides/_rels/slide*.xml.rels
|
|
132
|
+
*/
|
|
133
|
+
async function extractSpeakerNotes(pptxFile, slideOrder) {
|
|
134
|
+
const directory = (await unzipper_1.default.Open.file(pptxFile));
|
|
135
|
+
// Build a map of slideN -> notesSlideN by reading relationship files
|
|
136
|
+
const slideToNotesMap = {};
|
|
137
|
+
// Find all slide relationship files
|
|
138
|
+
const slideRelsFiles = directory.files.filter((f) => f.path.match(/^ppt\/slides\/_rels\/slide\d+\.xml\.rels$/));
|
|
139
|
+
for (const relsFile of slideRelsFiles) {
|
|
140
|
+
const slideNum = parseInt(relsFile.path.match(/slide(\d+)\.xml\.rels$/)?.[1] || "0", 10);
|
|
141
|
+
const content = await relsFile.buffer();
|
|
142
|
+
const xmlContent = content.toString("utf-8");
|
|
143
|
+
// Parse the rels file to find notesSlide reference
|
|
144
|
+
await new Promise((resolve) => {
|
|
145
|
+
(0, xml2js_1.parseString)(xmlContent, (err, result) => {
|
|
146
|
+
if (err) {
|
|
147
|
+
resolve();
|
|
148
|
+
return;
|
|
149
|
+
}
|
|
150
|
+
try {
|
|
151
|
+
const relationships = result
|
|
152
|
+
?.Relationships?.Relationship || [];
|
|
153
|
+
for (const rel of relationships) {
|
|
154
|
+
const target = rel.$?.Target;
|
|
155
|
+
if (target && target.includes("notesSlide")) {
|
|
156
|
+
const notesNum = parseInt(target.match(/notesSlide(\d+)\.xml$/)?.[1] || "0", 10);
|
|
157
|
+
slideToNotesMap[slideNum] = notesNum;
|
|
158
|
+
break;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
// Ignore parsing errors
|
|
164
|
+
}
|
|
165
|
+
resolve();
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
// Extract notes content from notesSlide files
|
|
170
|
+
const notesContentMap = {};
|
|
171
|
+
const notesFiles = directory.files.filter((f) => f.path.match(/^ppt\/notesSlides\/notesSlide\d+\.xml$/));
|
|
172
|
+
for (const file of notesFiles) {
|
|
173
|
+
const notesNum = parseInt(file.path.match(/notesSlide(\d+)\.xml$/)?.[1] || "0", 10);
|
|
174
|
+
const content = await file.buffer();
|
|
175
|
+
const xmlContent = content.toString("utf-8");
|
|
176
|
+
const texts = [];
|
|
177
|
+
await new Promise((resolve, reject) => {
|
|
178
|
+
(0, xml2js_1.parseString)(xmlContent, (err, result) => {
|
|
179
|
+
if (err) {
|
|
180
|
+
reject(err);
|
|
181
|
+
return;
|
|
182
|
+
}
|
|
183
|
+
// Navigate through the XML structure to find text content
|
|
184
|
+
// Only extract text from shapes with placeholder type "body" (speaker notes)
|
|
185
|
+
try {
|
|
186
|
+
const notesRoot = result["p:notes"];
|
|
187
|
+
const notesObj = Array.isArray(notesRoot) ? notesRoot[0] : notesRoot;
|
|
188
|
+
const cSld = notesObj?.["p:cSld"]?.[0];
|
|
189
|
+
const spTree = cSld?.["p:spTree"]?.[0];
|
|
190
|
+
const shapes = spTree?.["p:sp"] || [];
|
|
191
|
+
for (const shape of shapes) {
|
|
192
|
+
const nvSpPr = shape["p:nvSpPr"]?.[0];
|
|
193
|
+
const nvPr = nvSpPr?.["p:nvPr"]?.[0];
|
|
194
|
+
const ph = nvPr?.["p:ph"]?.[0];
|
|
195
|
+
const phType = ph?.$?.type;
|
|
196
|
+
if (phType !== "body")
|
|
197
|
+
continue;
|
|
198
|
+
const txBody = shape["p:txBody"]?.[0];
|
|
199
|
+
if (!txBody)
|
|
200
|
+
continue;
|
|
201
|
+
const paragraphs = txBody["a:p"] || [];
|
|
202
|
+
for (const para of paragraphs) {
|
|
203
|
+
const runs = para["a:r"] || [];
|
|
204
|
+
for (const run of runs) {
|
|
205
|
+
const textNodes = run["a:t"] || [];
|
|
206
|
+
for (const textNode of textNodes) {
|
|
207
|
+
if (typeof textNode === "string") {
|
|
208
|
+
texts.push(textNode);
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
catch (e) {
|
|
216
|
+
console.warn(`Failed to parse notes from ${file.path}:`, e);
|
|
217
|
+
}
|
|
218
|
+
resolve();
|
|
219
|
+
});
|
|
220
|
+
});
|
|
221
|
+
notesContentMap[notesNum] = texts.join("\n");
|
|
222
|
+
}
|
|
223
|
+
// Build final notes array aligned with slide order
|
|
224
|
+
const notes = [];
|
|
225
|
+
for (const slideNum of slideOrder) {
|
|
226
|
+
const notesNum = slideToNotesMap[slideNum];
|
|
227
|
+
if (notesNum && notesContentMap[notesNum]) {
|
|
228
|
+
notes.push(notesContentMap[notesNum]);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
notes.push(""); // No speaker notes for this slide
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return notes;
|
|
235
|
+
}
|
|
49
236
|
async function convertPptx(options) {
|
|
50
237
|
const { inputPath, lang, generateText = false } = options;
|
|
51
238
|
const pptxFile = path.resolve(inputPath);
|
|
@@ -80,21 +267,45 @@ async function convertPptx(options) {
|
|
|
80
267
|
imagesDir,
|
|
81
268
|
basename,
|
|
82
269
|
});
|
|
270
|
+
// Get presentation order first
|
|
271
|
+
const presentationOrder = await getSlideOrder(pptxFile);
|
|
272
|
+
const slideIdMap = await getSlideIdMap(pptxFile);
|
|
273
|
+
const slideOrder = presentationOrder.map((rId) => slideIdMap[rId]);
|
|
83
274
|
// Extract text from PPTX
|
|
84
275
|
const parser = new node_pptx_parser_1.default(pptxFile);
|
|
85
|
-
const textContent = await parser.extractText();
|
|
86
|
-
|
|
276
|
+
const textContent = (await parser.extractText());
|
|
277
|
+
// Build a map of rId -> text
|
|
278
|
+
// node-pptx-parser returns slides with id (rId) and path fields
|
|
279
|
+
const rIdToTextMap = {};
|
|
280
|
+
textContent.forEach((slide) => {
|
|
281
|
+
const rIdNum = parseInt(slide.id.replace(/\D/g, ""), 10);
|
|
282
|
+
rIdToTextMap[rIdNum] = slide.text.join("\n");
|
|
283
|
+
});
|
|
284
|
+
// Now map presentation order to texts
|
|
285
|
+
// presentationOrder contains rIds in presentation order
|
|
286
|
+
const orderedSlideTexts = presentationOrder.map((rId) => rIdToTextMap[rId] || "");
|
|
287
|
+
// Extract speaker notes from PPTX with correct order
|
|
288
|
+
const speakerNotes = await extractSpeakerNotes(pptxFile, slideOrder);
|
|
289
|
+
// Use speaker notes if available, otherwise fall back to slide text
|
|
290
|
+
const finalTexts = speakerNotes.map((note, index) => {
|
|
291
|
+
// If speaker note exists and is not empty, use it; otherwise use slide text
|
|
292
|
+
return note.trim() ? note : orderedSlideTexts[index] || "";
|
|
293
|
+
});
|
|
294
|
+
// Ensure we have enough texts for all slides
|
|
295
|
+
while (finalTexts.length < slideCount) {
|
|
296
|
+
finalTexts.push(orderedSlideTexts[finalTexts.length] || "");
|
|
297
|
+
}
|
|
87
298
|
// Resolve language (with auto-detection from extracted text)
|
|
88
|
-
const resolvedLang = (0, lang_1.resolveLang)(lang,
|
|
299
|
+
const resolvedLang = (0, lang_1.resolveLang)(lang, finalTexts);
|
|
89
300
|
// Build MulmoScript using shared utility
|
|
90
|
-
// Pass
|
|
301
|
+
// Pass finalTexts (speaker notes or slide text) as slideTexts
|
|
91
302
|
const { mulmoScript } = await (0, pdf_1.buildMulmoScriptFromImages)({
|
|
92
303
|
slideCount,
|
|
93
304
|
imagesDir,
|
|
94
305
|
basename,
|
|
95
306
|
lang: resolvedLang,
|
|
96
|
-
slideTexts,
|
|
97
|
-
extractedTexts:
|
|
307
|
+
slideTexts: finalTexts,
|
|
308
|
+
extractedTexts: orderedSlideTexts,
|
|
98
309
|
generateText,
|
|
99
310
|
title: basename,
|
|
100
311
|
});
|
package/lib/convert/pptx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pptx.js","sourceRoot":"","sources":["../../src/convert/pptx.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pptx.js","sourceRoot":"","sources":["../../src/convert/pptx.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(function(){const t=document.createElement("link").relList;if(t&&t.supports&&t.supports("modulepreload"))return;for(const r of document.querySelectorAll('link[rel="modulepreload"]'))s(r);new MutationObserver(r=>{for(const i of r)if(i.type==="childList")for(const l of i.addedNodes)l.tagName==="LINK"&&l.rel==="modulepreload"&&s(l)}).observe(document,{childList:!0,subtree:!0});function n(r){const i={};return r.integrity&&(i.integrity=r.integrity),r.referrerPolicy&&(i.referrerPolicy=r.referrerPolicy),r.crossOrigin==="use-credentials"?i.credentials="include":r.crossOrigin==="anonymous"?i.credentials="omit":i.credentials="same-origin",i}function s(r){if(r.ep)return;r.ep=!0;const i=n(r);fetch(r.href,i)}})();function Jn(e){const t=Object.create(null);for(const n of e.split(","))t[n]=1;return n=>n in t}const k={},at=[],De=()=>{},Xs=()=>!1,cn=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),Yn=e=>e.startsWith("onUpdate:"),ue=Object.assign,zn=(e,t)=>{const n=e.indexOf(t);n>-1&&e.splice(n,1)},oi=Object.prototype.hasOwnProperty,V=(e,t)=>oi.call(e,t),R=Array.isArray,dt=e=>Nt(e)==="[object Map]",fn=e=>Nt(e)==="[object Set]",bs=e=>Nt(e)==="[object Date]",L=e=>typeof e=="function",Q=e=>typeof e=="string",Ce=e=>typeof e=="symbol",Y=e=>e!==null&&typeof e=="object",Qs=e=>(Y(e)||L(e))&&L(e.then)&&L(e.catch),er=Object.prototype.toString,Nt=e=>er.call(e),ui=e=>Nt(e).slice(8,-1),tr=e=>Nt(e)==="[object Object]",Zn=e=>Q(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,Ct=Jn(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),an=e=>{const t=Object.create(null);return(n=>t[n]||(t[n]=e(n)))},ci=/-\w/g,Qe=an(e=>e.replace(ci,t=>t.slice(1).toUpperCase())),fi=/\B([A-Z])/g,ot=an(e=>e.replace(fi,"-$1").toLowerCase()),nr=an(e=>e.charAt(0).toUpperCase()+e.slice(1)),wn=an(e=>e?`on${nr(e)}`:""),Ze=(e,t)=>!Object.is(e,t),qt=(e,...t)=>{for(let n=0;n<e.length;n++)e[n](...t)},sr=(e,t,n,s=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:s,value:n})},rr=e=>{const t=parseFloat(e);return isNaN(t)?e:t};let xs;const dn=()=>xs||(xs=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function hn(e){if(R(e)){const t={};for(let n=0;n<e.length;n++){const s=e[n],r=Q(s)?pi(s):hn(s);if(r)for(const i in r)t[i]=r[i]}return t}else if(Q(e)||Y(e))return e}const ai=/;(?![^(]*\))/g,di=/:([^]+)/,hi=/\/\*[^]*?\*\//g;function pi(e){const t={};return e.replace(hi,"").split(ai).forEach(n=>{if(n){const s=n.split(di);s.length>1&&(t[s[0].trim()]=s[1].trim())}}),t}function Ht(e){let t="";if(Q(e))t=e;else if(R(e))for(let n=0;n<e.length;n++){const s=Ht(e[n]);s&&(t+=s+" ")}else if(Y(e))for(const n in e)e[n]&&(t+=n+" ");return t.trim()}function Ss(e){if(!e)return null;let{class:t,style:n}=e;return t&&!Q(t)&&(e.class=Ht(t)),n&&(e.style=hn(n)),e}const gi="itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly",mi=Jn(gi);function ir(e){return!!e||e===""}function vi(e,t){if(e.length!==t.length)return!1;let n=!0;for(let s=0;n&&s<e.length;s++)n=pn(e[s],t[s]);return n}function pn(e,t){if(e===t)return!0;let n=bs(e),s=bs(t);if(n||s)return n&&s?e.getTime()===t.getTime():!1;if(n=Ce(e),s=Ce(t),n||s)return e===t;if(n=R(e),s=R(t),n||s)return n&&s?vi(e,t):!1;if(n=Y(e),s=Y(t),n||s){if(!n||!s)return!1;const r=Object.keys(e).length,i=Object.keys(t).length;if(r!==i)return!1;for(const l in e){const o=e.hasOwnProperty(l),u=t.hasOwnProperty(l);if(o&&!u||!o&&u||!pn(e[l],t[l]))return!1}}return String(e)===String(t)}function _i(e,t){return e.findIndex(n=>pn(n,t))}const lr=e=>!!(e&&e.__v_isRef===!0),ze=e=>Q(e)?e:e==null?"":R(e)||Y(e)&&(e.toString===er||!L(e.toString))?lr(e)?ze(e.value):JSON.stringify(e,or,2):String(e),or=(e,t)=>lr(t)?or(e,t.value):dt(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((n,[s,r],i)=>(n[En(s,i)+" =>"]=r,n),{})}:fn(t)?{[`Set(${t.size})`]:[...t.values()].map(n=>En(n))}:Ce(t)?En(t):Y(t)&&!R(t)&&!tr(t)?String(t):t,En=(e,t="")=>{var n;return Ce(e)?`Symbol(${(n=e.description)!=null?n:t})`:e};let ge;class yi{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=ge,!t&&ge&&(this.index=(ge.scopes||(ge.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].pause();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,n;if(this.scopes)for(t=0,n=this.scopes.length;t<n;t++)this.scopes[t].resume();for(t=0,n=this.effects.length;t<n;t++)this.effects[t].resume()}}run(t){if(this._active){const n=ge;try{return ge=this,t()}finally{ge=n}}}on(){++this._on===1&&(this.prevScope=ge,ge=this)}off(){this._on>0&&--this._on===0&&(ge=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let n,s;for(n=0,s=this.effects.length;n<s;n++)this.effects[n].stop();for(this.effects.length=0,n=0,s=this.cleanups.length;n<s;n++)this.cleanups[n]();if(this.cleanups.length=0,this.scopes){for(n=0,s=this.scopes.length;n<s;n++)this.scopes[n].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0}}}function bi(){return ge}let J;const Tn=new WeakSet;class ur{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,ge&&ge.active&&ge.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,Tn.has(this)&&(Tn.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||fr(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,ws(this),ar(this);const t=J,n=Te;J=this,Te=!0;try{return this.fn()}finally{dr(this),J=t,Te=n,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)es(t);this.deps=this.depsTail=void 0,ws(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?Tn.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){jn(this)&&this.run()}get dirty(){return jn(this)}}let cr=0,Pt,At;function fr(e,t=!1){if(e.flags|=8,t){e.next=At,At=e;return}e.next=Pt,Pt=e}function Xn(){cr++}function Qn(){if(--cr>0)return;if(At){let t=At;for(At=void 0;t;){const n=t.next;t.next=void 0,t.flags&=-9,t=n}}let e;for(;Pt;){let t=Pt;for(Pt=void 0;t;){const n=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(s){e||(e=s)}t=n}}if(e)throw e}function ar(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function dr(e){let t,n=e.depsTail,s=n;for(;s;){const r=s.prevDep;s.version===-1?(s===n&&(n=r),es(s),xi(s)):t=s,s.dep.activeLink=s.prevActiveLink,s.prevActiveLink=void 0,s=r}e.deps=t,e.depsTail=n}function jn(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(hr(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function hr(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===It)||(e.globalVersion=It,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!jn(e))))return;e.flags|=2;const t=e.dep,n=J,s=Te;J=e,Te=!0;try{ar(e);const r=e.fn(e._value);(t.version===0||Ze(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{J=n,Te=s,dr(e),e.flags&=-3}}function es(e,t=!1){const{dep:n,prevSub:s,nextSub:r}=e;if(s&&(s.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=s,e.nextSub=void 0),n.subs===e&&(n.subs=s,!s&&n.computed)){n.computed.flags&=-5;for(let i=n.computed.deps;i;i=i.nextDep)es(i,!0)}!t&&!--n.sc&&n.map&&n.map.delete(n.key)}function xi(e){const{prevDep:t,nextDep:n}=e;t&&(t.nextDep=n,e.prevDep=void 0),n&&(n.prevDep=t,e.nextDep=void 0)}let Te=!0;const pr=[];function We(){pr.push(Te),Te=!1}function Ke(){const e=pr.pop();Te=e===void 0?!0:e}function ws(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const n=J;J=void 0;try{t()}finally{J=n}}}let It=0;class Si{constructor(t,n){this.sub=t,this.dep=n,this.version=n.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class ts{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!J||!Te||J===this.computed)return;let n=this.activeLink;if(n===void 0||n.sub!==J)n=this.activeLink=new Si(J,this),J.deps?(n.prevDep=J.depsTail,J.depsTail.nextDep=n,J.depsTail=n):J.deps=J.depsTail=n,gr(n);else if(n.version===-1&&(n.version=this.version,n.nextDep)){const s=n.nextDep;s.prevDep=n.prevDep,n.prevDep&&(n.prevDep.nextDep=s),n.prevDep=J.depsTail,n.nextDep=void 0,J.depsTail.nextDep=n,J.depsTail=n,J.deps===n&&(J.deps=s)}return n}trigger(t){this.version++,It++,this.notify(t)}notify(t){Xn();try{for(let n=this.subs;n;n=n.prevSub)n.sub.notify()&&n.sub.dep.notify()}finally{Qn()}}}function gr(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let s=t.deps;s;s=s.nextDep)gr(s)}const n=e.dep.subs;n!==e&&(e.prevSub=n,n&&(n.nextSub=e)),e.dep.subs=e}}const Dn=new WeakMap,it=Symbol(""),Nn=Symbol(""),Lt=Symbol("");function ie(e,t,n){if(Te&&J){let s=Dn.get(e);s||Dn.set(e,s=new Map);let r=s.get(n);r||(s.set(n,r=new ts),r.map=s,r.key=n),r.track()}}function Ve(e,t,n,s,r,i){const l=Dn.get(e);if(!l){It++;return}const o=u=>{u&&u.trigger()};if(Xn(),t==="clear")l.forEach(o);else{const u=R(e),d=u&&Zn(n);if(u&&n==="length"){const a=Number(s);l.forEach((p,w)=>{(w==="length"||w===Lt||!Ce(w)&&w>=a)&&o(p)})}else switch((n!==void 0||l.has(void 0))&&o(l.get(n)),d&&o(l.get(Lt)),t){case"add":u?d&&o(l.get("length")):(o(l.get(it)),dt(e)&&o(l.get(Nn)));break;case"delete":u||(o(l.get(it)),dt(e)&&o(l.get(Nn)));break;case"set":dt(e)&&o(l.get(it));break}}Qn()}function ut(e){const t=$(e);return t===e?t:(ie(t,"iterate",Lt),xe(e)?t:t.map(Pe))}function gn(e){return ie(e=$(e),"iterate",Lt),e}function Ge(e,t){return Be(e)?lt(e)?mt(Pe(t)):mt(t):Pe(t)}const wi={__proto__:null,[Symbol.iterator](){return Cn(this,Symbol.iterator,e=>Ge(this,e))},concat(...e){return ut(this).concat(...e.map(t=>R(t)?ut(t):t))},entries(){return Cn(this,"entries",e=>(e[1]=Ge(this,e[1]),e))},every(e,t){return He(this,"every",e,t,void 0,arguments)},filter(e,t){return He(this,"filter",e,t,n=>n.map(s=>Ge(this,s)),arguments)},find(e,t){return He(this,"find",e,t,n=>Ge(this,n),arguments)},findIndex(e,t){return He(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return He(this,"findLast",e,t,n=>Ge(this,n),arguments)},findLastIndex(e,t){return He(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return He(this,"forEach",e,t,void 0,arguments)},includes(...e){return Pn(this,"includes",e)},indexOf(...e){return Pn(this,"indexOf",e)},join(e){return ut(this).join(e)},lastIndexOf(...e){return Pn(this,"lastIndexOf",e)},map(e,t){return He(this,"map",e,t,void 0,arguments)},pop(){return St(this,"pop")},push(...e){return St(this,"push",e)},reduce(e,...t){return Es(this,"reduce",e,t)},reduceRight(e,...t){return Es(this,"reduceRight",e,t)},shift(){return St(this,"shift")},some(e,t){return He(this,"some",e,t,void 0,arguments)},splice(...e){return St(this,"splice",e)},toReversed(){return ut(this).toReversed()},toSorted(e){return ut(this).toSorted(e)},toSpliced(...e){return ut(this).toSpliced(...e)},unshift(...e){return St(this,"unshift",e)},values(){return Cn(this,"values",e=>Ge(this,e))}};function Cn(e,t,n){const s=gn(e),r=s[t]();return s!==e&&!xe(e)&&(r._next=r.next,r.next=()=>{const i=r._next();return i.done||(i.value=n(i.value)),i}),r}const Ei=Array.prototype;function He(e,t,n,s,r,i){const l=gn(e),o=l!==e&&!xe(e),u=l[t];if(u!==Ei[t]){const p=u.apply(e,i);return o?Pe(p):p}let d=n;l!==e&&(o?d=function(p,w){return n.call(this,Ge(e,p),w,e)}:n.length>2&&(d=function(p,w){return n.call(this,p,w,e)}));const a=u.call(l,d,s);return o&&r?r(a):a}function Es(e,t,n,s){const r=gn(e);let i=n;return r!==e&&(xe(e)?n.length>3&&(i=function(l,o,u){return n.call(this,l,o,u,e)}):i=function(l,o,u){return n.call(this,l,Ge(e,o),u,e)}),r[t](i,...s)}function Pn(e,t,n){const s=$(e);ie(s,"iterate",Lt);const r=s[t](...n);return(r===-1||r===!1)&&is(n[0])?(n[0]=$(n[0]),s[t](...n)):r}function St(e,t,n=[]){We(),Xn();const s=$(e)[t].apply(e,n);return Qn(),Ke(),s}const Ti=Jn("__proto__,__v_isRef,__isVue"),mr=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ce));function Ci(e){Ce(e)||(e=String(e));const t=$(this);return ie(t,"has",e),t.hasOwnProperty(e)}class vr{constructor(t=!1,n=!1){this._isReadonly=t,this._isShallow=n}get(t,n,s){if(n==="__v_skip")return t.__v_skip;const r=this._isReadonly,i=this._isShallow;if(n==="__v_isReactive")return!r;if(n==="__v_isReadonly")return r;if(n==="__v_isShallow")return i;if(n==="__v_raw")return s===(r?i?Di:xr:i?br:yr).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(s)?t:void 0;const l=R(t);if(!r){let u;if(l&&(u=wi[n]))return u;if(n==="hasOwnProperty")return Ci}const o=Reflect.get(t,n,oe(t)?t:s);if((Ce(n)?mr.has(n):Ti(n))||(r||ie(t,"get",n),i))return o;if(oe(o)){const u=l&&Zn(n)?o:o.value;return r&&Y(u)?$n(u):u}return Y(o)?r?$n(o):ss(o):o}}class _r extends vr{constructor(t=!1){super(!1,t)}set(t,n,s,r){let i=t[n];const l=R(t)&&Zn(n);if(!this._isShallow){const d=Be(i);if(!xe(s)&&!Be(s)&&(i=$(i),s=$(s)),!l&&oe(i)&&!oe(s))return d||(i.value=s),!0}const o=l?Number(n)<t.length:V(t,n),u=Reflect.set(t,n,s,oe(t)?t:r);return t===$(r)&&(o?Ze(s,i)&&Ve(t,"set",n,s):Ve(t,"add",n,s)),u}deleteProperty(t,n){const s=V(t,n);t[n];const r=Reflect.deleteProperty(t,n);return r&&s&&Ve(t,"delete",n,void 0),r}has(t,n){const s=Reflect.has(t,n);return(!Ce(n)||!mr.has(n))&&ie(t,"has",n),s}ownKeys(t){return ie(t,"iterate",R(t)?"length":it),Reflect.ownKeys(t)}}class Pi extends vr{constructor(t=!1){super(!0,t)}set(t,n){return!0}deleteProperty(t,n){return!0}}const Ai=new _r,Oi=new Pi,Mi=new _r(!0);const Hn=e=>e,Kt=e=>Reflect.getPrototypeOf(e);function Ri(e,t,n){return function(...s){const r=this.__v_raw,i=$(r),l=dt(i),o=e==="entries"||e===Symbol.iterator&&l,u=e==="keys"&&l,d=r[e](...s),a=n?Hn:t?mt:Pe;return!t&&ie(i,"iterate",u?Nn:it),{next(){const{value:p,done:w}=d.next();return w?{value:p,done:w}:{value:o?[a(p[0]),a(p[1])]:a(p),done:w}},[Symbol.iterator](){return this}}}}function Bt(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Ii(e,t){const n={get(r){const i=this.__v_raw,l=$(i),o=$(r);e||(Ze(r,o)&&ie(l,"get",r),ie(l,"get",o));const{has:u}=Kt(l),d=t?Hn:e?mt:Pe;if(u.call(l,r))return d(i.get(r));if(u.call(l,o))return d(i.get(o));i!==l&&i.get(r)},get size(){const r=this.__v_raw;return!e&&ie($(r),"iterate",it),r.size},has(r){const i=this.__v_raw,l=$(i),o=$(r);return e||(Ze(r,o)&&ie(l,"has",r),ie(l,"has",o)),r===o?i.has(r):i.has(r)||i.has(o)},forEach(r,i){const l=this,o=l.__v_raw,u=$(o),d=t?Hn:e?mt:Pe;return!e&&ie(u,"iterate",it),o.forEach((a,p)=>r.call(i,d(a),d(p),l))}};return ue(n,e?{add:Bt("add"),set:Bt("set"),delete:Bt("delete"),clear:Bt("clear")}:{add(r){!t&&!xe(r)&&!Be(r)&&(r=$(r));const i=$(this);return Kt(i).has.call(i,r)||(i.add(r),Ve(i,"add",r,r)),this},set(r,i){!t&&!xe(i)&&!Be(i)&&(i=$(i));const l=$(this),{has:o,get:u}=Kt(l);let d=o.call(l,r);d||(r=$(r),d=o.call(l,r));const a=u.call(l,r);return l.set(r,i),d?Ze(i,a)&&Ve(l,"set",r,i):Ve(l,"add",r,i),this},delete(r){const i=$(this),{has:l,get:o}=Kt(i);let u=l.call(i,r);u||(r=$(r),u=l.call(i,r)),o&&o.call(i,r);const d=i.delete(r);return u&&Ve(i,"delete",r,void 0),d},clear(){const r=$(this),i=r.size!==0,l=r.clear();return i&&Ve(r,"clear",void 0,void 0),l}}),["keys","values","entries",Symbol.iterator].forEach(r=>{n[r]=Ri(r,e,t)}),n}function ns(e,t){const n=Ii(e,t);return(s,r,i)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?s:Reflect.get(V(n,r)&&r in s?n:s,r,i)}const Li={get:ns(!1,!1)},Fi={get:ns(!1,!0)},ji={get:ns(!0,!1)};const yr=new WeakMap,br=new WeakMap,xr=new WeakMap,Di=new WeakMap;function Ni(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Hi(e){return e.__v_skip||!Object.isExtensible(e)?0:Ni(ui(e))}function ss(e){return Be(e)?e:rs(e,!1,Ai,Li,yr)}function $i(e){return rs(e,!1,Mi,Fi,br)}function $n(e){return rs(e,!0,Oi,ji,xr)}function rs(e,t,n,s,r){if(!Y(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const i=Hi(e);if(i===0)return e;const l=r.get(e);if(l)return l;const o=new Proxy(e,i===2?s:n);return r.set(e,o),o}function lt(e){return Be(e)?lt(e.__v_raw):!!(e&&e.__v_isReactive)}function Be(e){return!!(e&&e.__v_isReadonly)}function xe(e){return!!(e&&e.__v_isShallow)}function is(e){return e?!!e.__v_raw:!1}function $(e){const t=e&&e.__v_raw;return t?$(t):e}function Vi(e){return!V(e,"__v_skip")&&Object.isExtensible(e)&&sr(e,"__v_skip",!0),e}const Pe=e=>Y(e)?ss(e):e,mt=e=>Y(e)?$n(e):e;function oe(e){return e?e.__v_isRef===!0:!1}function te(e){return Ui(e,!1)}function Ui(e,t){return oe(e)?e:new Wi(e,t)}class Wi{constructor(t,n){this.dep=new ts,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=n?t:$(t),this._value=n?t:Pe(t),this.__v_isShallow=n}get value(){return this.dep.track(),this._value}set value(t){const n=this._rawValue,s=this.__v_isShallow||xe(t)||Be(t);t=s?t:$(t),Ze(t,n)&&(this._rawValue=t,this._value=s?t:Pe(t),this.dep.trigger())}}function ls(e){return oe(e)?e.value:e}const Ki={get:(e,t,n)=>t==="__v_raw"?e:ls(Reflect.get(e,t,n)),set:(e,t,n,s)=>{const r=e[t];return oe(r)&&!oe(n)?(r.value=n,!0):Reflect.set(e,t,n,s)}};function Sr(e){return lt(e)?e:new Proxy(e,Ki)}class Bi{constructor(t,n,s){this.fn=t,this.setter=n,this._value=void 0,this.dep=new ts(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=It-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!n,this.isSSR=s}notify(){if(this.flags|=16,!(this.flags&8)&&J!==this)return fr(this,!0),!0}get value(){const t=this.dep.track();return hr(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function ki(e,t,n=!1){let s,r;return L(e)?s=e:(s=e.get,r=e.set),new Bi(s,r,n)}const kt={},Xt=new WeakMap;let rt;function qi(e,t=!1,n=rt){if(n){let s=Xt.get(n);s||Xt.set(n,s=[]),s.push(e)}}function Gi(e,t,n=k){const{immediate:s,deep:r,once:i,scheduler:l,augmentJob:o,call:u}=n,d=O=>r?O:xe(O)||r===!1||r===0?Ue(O,1):Ue(O);let a,p,w,y,C=!1,T=!1;if(oe(e)?(p=()=>e.value,C=xe(e)):lt(e)?(p=()=>d(e),C=!0):R(e)?(T=!0,C=e.some(O=>lt(O)||xe(O)),p=()=>e.map(O=>{if(oe(O))return O.value;if(lt(O))return d(O);if(L(O))return u?u(O,2):O()})):L(e)?t?p=u?()=>u(e,2):e:p=()=>{if(w){We();try{w()}finally{Ke()}}const O=rt;rt=a;try{return u?u(e,3,[y]):e(y)}finally{rt=O}}:p=De,t&&r){const O=p,B=r===!0?1/0:r;p=()=>Ue(O(),B)}const Z=bi(),F=()=>{a.stop(),Z&&Z.active&&zn(Z.effects,a)};if(i&&t){const O=t;t=(...B)=>{O(...B),F()}}let j=T?new Array(e.length).fill(kt):kt;const D=O=>{if(!(!(a.flags&1)||!a.dirty&&!O))if(t){const B=a.run();if(r||C||(T?B.some((be,se)=>Ze(be,j[se])):Ze(B,j))){w&&w();const be=rt;rt=a;try{const se=[B,j===kt?void 0:T&&j[0]===kt?[]:j,y];j=B,u?u(t,3,se):t(...se)}finally{rt=be}}}else a.run()};return o&&o(D),a=new ur(p),a.scheduler=l?()=>l(D,!1):D,y=O=>qi(O,!1,a),w=a.onStop=()=>{const O=Xt.get(a);if(O){if(u)u(O,4);else for(const B of O)B();Xt.delete(a)}},t?s?D(!0):j=a.run():l?l(D.bind(null,!0),!0):a.run(),F.pause=a.pause.bind(a),F.resume=a.resume.bind(a),F.stop=F,F}function Ue(e,t=1/0,n){if(t<=0||!Y(e)||e.__v_skip||(n=n||new Map,(n.get(e)||0)>=t))return e;if(n.set(e,t),t--,oe(e))Ue(e.value,t,n);else if(R(e))for(let s=0;s<e.length;s++)Ue(e[s],t,n);else if(fn(e)||dt(e))e.forEach(s=>{Ue(s,t,n)});else if(tr(e)){for(const s in e)Ue(e[s],t,n);for(const s of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,s)&&Ue(e[s],t,n)}return e}function $t(e,t,n,s){try{return s?e(...s):e()}catch(r){mn(r,t,n)}}function Ne(e,t,n,s){if(L(e)){const r=$t(e,t,n,s);return r&&Qs(r)&&r.catch(i=>{mn(i,t,n)}),r}if(R(e)){const r=[];for(let i=0;i<e.length;i++)r.push(Ne(e[i],t,n,s));return r}}function mn(e,t,n,s=!0){const r=t?t.vnode:null,{errorHandler:i,throwUnhandledErrorInProduction:l}=t&&t.appContext.config||k;if(t){let o=t.parent;const u=t.proxy,d=`https://vuejs.org/error-reference/#runtime-${n}`;for(;o;){const a=o.ec;if(a){for(let p=0;p<a.length;p++)if(a[p](e,u,d)===!1)return}o=o.parent}if(i){We(),$t(i,null,10,[e,u,d]),Ke();return}}Ji(e,n,r,s,l)}function Ji(e,t,n,s=!0,r=!1){if(r)throw e;console.error(e)}const ae=[];let Fe=-1;const ht=[];let Je=null,ct=0;const wr=Promise.resolve();let Qt=null;function Er(e){const t=Qt||wr;return e?t.then(this?e.bind(this):e):t}function Yi(e){let t=Fe+1,n=ae.length;for(;t<n;){const s=t+n>>>1,r=ae[s],i=Ft(r);i<e||i===e&&r.flags&2?t=s+1:n=s}return t}function os(e){if(!(e.flags&1)){const t=Ft(e),n=ae[ae.length-1];!n||!(e.flags&2)&&t>=Ft(n)?ae.push(e):ae.splice(Yi(t),0,e),e.flags|=1,Tr()}}function Tr(){Qt||(Qt=wr.then(Pr))}function zi(e){R(e)?ht.push(...e):Je&&e.id===-1?Je.splice(ct+1,0,e):e.flags&1||(ht.push(e),e.flags|=1),Tr()}function Ts(e,t,n=Fe+1){for(;n<ae.length;n++){const s=ae[n];if(s&&s.flags&2){if(e&&s.id!==e.uid)continue;ae.splice(n,1),n--,s.flags&4&&(s.flags&=-2),s(),s.flags&4||(s.flags&=-2)}}}function Cr(e){if(ht.length){const t=[...new Set(ht)].sort((n,s)=>Ft(n)-Ft(s));if(ht.length=0,Je){Je.push(...t);return}for(Je=t,ct=0;ct<Je.length;ct++){const n=Je[ct];n.flags&4&&(n.flags&=-2),n.flags&8||n(),n.flags&=-2}Je=null,ct=0}}const Ft=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Pr(e){try{for(Fe=0;Fe<ae.length;Fe++){const t=ae[Fe];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),$t(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Fe<ae.length;Fe++){const t=ae[Fe];t&&(t.flags&=-2)}Fe=-1,ae.length=0,Cr(),Qt=null,(ae.length||ht.length)&&Pr()}}let le=null,Ar=null;function en(e){const t=le;return le=e,Ar=e&&e.type.__scopeId||null,t}function Zi(e,t=le,n){if(!t||e._n)return e;const s=(...r)=>{s._d&&js(-1);const i=en(t);let l;try{l=e(...r)}finally{en(i),s._d&&js(1)}return l};return s._n=!0,s._c=!0,s._d=!0,s}function Vn(e,t){if(le===null)return e;const n=xn(le),s=e.dirs||(e.dirs=[]);for(let r=0;r<t.length;r++){let[i,l,o,u=k]=t[r];i&&(L(i)&&(i={mounted:i,updated:i}),i.deep&&Ue(l),s.push({dir:i,instance:n,value:l,oldValue:void 0,arg:o,modifiers:u}))}return e}function nt(e,t,n,s){const r=e.dirs,i=t&&t.dirs;for(let l=0;l<r.length;l++){const o=r[l];i&&(o.oldValue=i[l].value);let u=o.dir[s];u&&(We(),Ne(u,n,8,[e.el,o,e,t]),Ke())}}function Xi(e,t){if(de){let n=de.provides;const s=de.parent&&de.parent.provides;s===n&&(n=de.provides=Object.create(s)),n[e]=t}}function Gt(e,t,n=!1){const s=Yl();if(s||gt){let r=gt?gt._context.provides:s?s.parent==null||s.ce?s.vnode.appContext&&s.vnode.appContext.provides:s.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return n&&L(t)?t.call(s&&s.proxy):t}}const Qi=Symbol.for("v-scx"),el=()=>Gt(Qi);function Ee(e,t,n){return Or(e,t,n)}function Or(e,t,n=k){const{immediate:s,deep:r,flush:i,once:l}=n,o=ue({},n),u=t&&s||!t&&i!=="post";let d;if(Dt){if(i==="sync"){const y=el();d=y.__watcherHandles||(y.__watcherHandles=[])}else if(!u){const y=()=>{};return y.stop=De,y.resume=De,y.pause=De,y}}const a=de;o.call=(y,C,T)=>Ne(y,a,C,T);let p=!1;i==="post"?o.scheduler=y=>{_e(y,a&&a.suspense)}:i!=="sync"&&(p=!0,o.scheduler=(y,C)=>{C?y():os(y)}),o.augmentJob=y=>{t&&(y.flags|=4),p&&(y.flags|=2,a&&(y.id=a.uid,y.i=a))};const w=Gi(e,t,o);return Dt&&(d?d.push(w):u&&w()),w}function tl(e,t,n){const s=this.proxy,r=Q(e)?e.includes(".")?Mr(s,e):()=>s[e]:e.bind(s,s);let i;L(t)?i=t:(i=t.handler,n=t);const l=Vt(this),o=Or(r,i.bind(s),n);return l(),o}function Mr(e,t){const n=t.split(".");return()=>{let s=e;for(let r=0;r<n.length&&s;r++)s=s[n[r]];return s}}const nl=Symbol("_vte"),sl=e=>e.__isTeleport,rl=Symbol("_leaveCb");function us(e,t){e.shapeFlag&6&&e.component?(e.transition=t,us(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function vn(e,t){return L(e)?ue({name:e.name},t,{setup:e}):e}function Rr(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}const tn=new WeakMap;function Ot(e,t,n,s,r=!1){if(R(e)){e.forEach((C,T)=>Ot(C,t&&(R(t)?t[T]:t),n,s,r));return}if(pt(s)&&!r){s.shapeFlag&512&&s.type.__asyncResolved&&s.component.subTree.component&&Ot(e,t,n,s.component.subTree);return}const i=s.shapeFlag&4?xn(s.component):s.el,l=r?null:i,{i:o,r:u}=e,d=t&&t.r,a=o.refs===k?o.refs={}:o.refs,p=o.setupState,w=$(p),y=p===k?Xs:C=>V(w,C);if(d!=null&&d!==u){if(Cs(t),Q(d))a[d]=null,y(d)&&(p[d]=null);else if(oe(d)){d.value=null;const C=t;C.k&&(a[C.k]=null)}}if(L(u))$t(u,o,12,[l,a]);else{const C=Q(u),T=oe(u);if(C||T){const Z=()=>{if(e.f){const F=C?y(u)?p[u]:a[u]:u.value;if(r)R(F)&&zn(F,i);else if(R(F))F.includes(i)||F.push(i);else if(C)a[u]=[i],y(u)&&(p[u]=a[u]);else{const j=[i];u.value=j,e.k&&(a[e.k]=j)}}else C?(a[u]=l,y(u)&&(p[u]=l)):T&&(u.value=l,e.k&&(a[e.k]=l))};if(l){const F=()=>{Z(),tn.delete(e)};F.id=-1,tn.set(e,F),_e(F,n)}else Cs(e),Z()}}}function Cs(e){const t=tn.get(e);t&&(t.flags|=8,tn.delete(e))}dn().requestIdleCallback;dn().cancelIdleCallback;const pt=e=>!!e.type.__asyncLoader,Ir=e=>e.type.__isKeepAlive;function il(e,t){Lr(e,"a",t)}function ll(e,t){Lr(e,"da",t)}function Lr(e,t,n=de){const s=e.__wdc||(e.__wdc=()=>{let r=n;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(_n(t,s,n),n){let r=n.parent;for(;r&&r.parent;)Ir(r.parent.vnode)&&ol(s,t,n,r),r=r.parent}}function ol(e,t,n,s){const r=_n(t,e,s,!0);cs(()=>{zn(s[t],r)},n)}function _n(e,t,n=de,s=!1){if(n){const r=n[e]||(n[e]=[]),i=t.__weh||(t.__weh=(...l)=>{We();const o=Vt(n),u=Ne(t,n,e,l);return o(),Ke(),u});return s?r.unshift(i):r.push(i),i}}const qe=e=>(t,n=de)=>{(!Dt||e==="sp")&&_n(e,(...s)=>t(...s),n)},ul=qe("bm"),nn=qe("m"),cl=qe("bu"),fl=qe("u"),al=qe("bum"),cs=qe("um"),dl=qe("sp"),hl=qe("rtg"),pl=qe("rtc");function gl(e,t=de){_n("ec",e,t)}const ml=Symbol.for("v-ndc");function Jt(e,t,n,s){let r;const i=n,l=R(e);if(l||Q(e)){const o=l&<(e);let u=!1,d=!1;o&&(u=!xe(e),d=Be(e),e=gn(e)),r=new Array(e.length);for(let a=0,p=e.length;a<p;a++)r[a]=t(u?d?mt(Pe(e[a])):Pe(e[a]):e[a],a,void 0,i)}else if(typeof e=="number"){r=new Array(e);for(let o=0;o<e;o++)r[o]=t(o+1,o,void 0,i)}else if(Y(e))if(e[Symbol.iterator])r=Array.from(e,(o,u)=>t(o,u,void 0,i));else{const o=Object.keys(e);r=new Array(o.length);for(let u=0,d=o.length;u<d;u++){const a=o[u];r[u]=t(e[a],a,u,i)}}else r=[];return r}function vl(e,t,n={},s,r){if(le.ce||le.parent&&pt(le.parent)&&le.parent.ce){const d=Object.keys(n).length>0;return H(),rn(ne,null,[Se("slot",n,s&&s())],d?-2:64)}let i=e[t];i&&i._c&&(i._d=!1),H();const l=i&&Fr(i(n)),o=n.key||l&&l.key,u=rn(ne,{key:(o&&!Ce(o)?o:`_${t}`)+(!l&&s?"_fb":"")},l||(s?s():[]),l&&e._===1?64:-2);return u.scopeId&&(u.slotScopeIds=[u.scopeId+"-s"]),i&&i._c&&(i._d=!0),u}function Fr(e){return e.some(t=>ds(t)?!(t.type===ke||t.type===ne&&!Fr(t.children)):!0)?e:null}const Un=e=>e?ei(e)?xn(e):Un(e.parent):null,Mt=ue(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Un(e.parent),$root:e=>Un(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>Dr(e),$forceUpdate:e=>e.f||(e.f=()=>{os(e.update)}),$nextTick:e=>e.n||(e.n=Er.bind(e.proxy)),$watch:e=>tl.bind(e)}),An=(e,t)=>e!==k&&!e.__isScriptSetup&&V(e,t),_l={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:n,setupState:s,data:r,props:i,accessCache:l,type:o,appContext:u}=e;if(t[0]!=="$"){const w=l[t];if(w!==void 0)switch(w){case 1:return s[t];case 2:return r[t];case 4:return n[t];case 3:return i[t]}else{if(An(s,t))return l[t]=1,s[t];if(r!==k&&V(r,t))return l[t]=2,r[t];if(V(i,t))return l[t]=3,i[t];if(n!==k&&V(n,t))return l[t]=4,n[t];Wn&&(l[t]=0)}}const d=Mt[t];let a,p;if(d)return t==="$attrs"&&ie(e.attrs,"get",""),d(e);if((a=o.__cssModules)&&(a=a[t]))return a;if(n!==k&&V(n,t))return l[t]=4,n[t];if(p=u.config.globalProperties,V(p,t))return p[t]},set({_:e},t,n){const{data:s,setupState:r,ctx:i}=e;return An(r,t)?(r[t]=n,!0):s!==k&&V(s,t)?(s[t]=n,!0):V(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(i[t]=n,!0)},has({_:{data:e,setupState:t,accessCache:n,ctx:s,appContext:r,props:i,type:l}},o){let u;return!!(n[o]||e!==k&&o[0]!=="$"&&V(e,o)||An(t,o)||V(i,o)||V(s,o)||V(Mt,o)||V(r.config.globalProperties,o)||(u=l.__cssModules)&&u[o])},defineProperty(e,t,n){return n.get!=null?e._.accessCache[t]=0:V(n,"value")&&this.set(e,t,n.value,null),Reflect.defineProperty(e,t,n)}};function Ps(e){return R(e)?e.reduce((t,n)=>(t[n]=null,t),{}):e}let Wn=!0;function yl(e){const t=Dr(e),n=e.proxy,s=e.ctx;Wn=!1,t.beforeCreate&&As(t.beforeCreate,e,"bc");const{data:r,computed:i,methods:l,watch:o,provide:u,inject:d,created:a,beforeMount:p,mounted:w,beforeUpdate:y,updated:C,activated:T,deactivated:Z,beforeDestroy:F,beforeUnmount:j,destroyed:D,unmounted:O,render:B,renderTracked:be,renderTriggered:se,errorCaptured:me,serverPrefetch:re,expose:U,inheritAttrs:P,components:ee,directives:Ae,filters:_t}=t;if(d&&bl(d,s,null),l)for(const X in l){const q=l[X];L(q)&&(s[X]=q.bind(n))}if(r){const X=r.call(n,n);Y(X)&&(e.data=ss(X))}if(Wn=!0,i)for(const X in i){const q=i[X],et=L(q)?q.bind(n,n):L(q.get)?q.get.bind(n,n):De,Ut=!L(q)&&L(q.set)?q.set.bind(n):De,tt=we({get:et,set:Ut});Object.defineProperty(s,X,{enumerable:!0,configurable:!0,get:()=>tt.value,set:Oe=>tt.value=Oe})}if(o)for(const X in o)jr(o[X],s,n,X);if(u){const X=L(u)?u.call(n):u;Reflect.ownKeys(X).forEach(q=>{Xi(q,X[q])})}a&&As(a,e,"c");function ce(X,q){R(q)?q.forEach(et=>X(et.bind(n))):q&&X(q.bind(n))}if(ce(ul,p),ce(nn,w),ce(cl,y),ce(fl,C),ce(il,T),ce(ll,Z),ce(gl,me),ce(pl,be),ce(hl,se),ce(al,j),ce(cs,O),ce(dl,re),R(U))if(U.length){const X=e.exposed||(e.exposed={});U.forEach(q=>{Object.defineProperty(X,q,{get:()=>n[q],set:et=>n[q]=et,enumerable:!0})})}else e.exposed||(e.exposed={});B&&e.render===De&&(e.render=B),P!=null&&(e.inheritAttrs=P),ee&&(e.components=ee),Ae&&(e.directives=Ae),re&&Rr(e)}function bl(e,t,n=De){R(e)&&(e=Kn(e));for(const s in e){const r=e[s];let i;Y(r)?"default"in r?i=Gt(r.from||s,r.default,!0):i=Gt(r.from||s):i=Gt(r),oe(i)?Object.defineProperty(t,s,{enumerable:!0,configurable:!0,get:()=>i.value,set:l=>i.value=l}):t[s]=i}}function As(e,t,n){Ne(R(e)?e.map(s=>s.bind(t.proxy)):e.bind(t.proxy),t,n)}function jr(e,t,n,s){let r=s.includes(".")?Mr(n,s):()=>n[s];if(Q(e)){const i=t[e];L(i)&&Ee(r,i)}else if(L(e))Ee(r,e.bind(n));else if(Y(e))if(R(e))e.forEach(i=>jr(i,t,n,s));else{const i=L(e.handler)?e.handler.bind(n):t[e.handler];L(i)&&Ee(r,i,e)}}function Dr(e){const t=e.type,{mixins:n,extends:s}=t,{mixins:r,optionsCache:i,config:{optionMergeStrategies:l}}=e.appContext,o=i.get(t);let u;return o?u=o:!r.length&&!n&&!s?u=t:(u={},r.length&&r.forEach(d=>sn(u,d,l,!0)),sn(u,t,l)),Y(t)&&i.set(t,u),u}function sn(e,t,n,s=!1){const{mixins:r,extends:i}=t;i&&sn(e,i,n,!0),r&&r.forEach(l=>sn(e,l,n,!0));for(const l in t)if(!(s&&l==="expose")){const o=xl[l]||n&&n[l];e[l]=o?o(e[l],t[l]):t[l]}return e}const xl={data:Os,props:Ms,emits:Ms,methods:Tt,computed:Tt,beforeCreate:fe,created:fe,beforeMount:fe,mounted:fe,beforeUpdate:fe,updated:fe,beforeDestroy:fe,beforeUnmount:fe,destroyed:fe,unmounted:fe,activated:fe,deactivated:fe,errorCaptured:fe,serverPrefetch:fe,components:Tt,directives:Tt,watch:wl,provide:Os,inject:Sl};function Os(e,t){return t?e?function(){return ue(L(e)?e.call(this,this):e,L(t)?t.call(this,this):t)}:t:e}function Sl(e,t){return Tt(Kn(e),Kn(t))}function Kn(e){if(R(e)){const t={};for(let n=0;n<e.length;n++)t[e[n]]=e[n];return t}return e}function fe(e,t){return e?[...new Set([].concat(e,t))]:t}function Tt(e,t){return e?ue(Object.create(null),e,t):t}function Ms(e,t){return e?R(e)&&R(t)?[...new Set([...e,...t])]:ue(Object.create(null),Ps(e),Ps(t??{})):t}function wl(e,t){if(!e)return t;if(!t)return e;const n=ue(Object.create(null),e);for(const s in t)n[s]=fe(e[s],t[s]);return n}function Nr(){return{app:null,config:{isNativeTag:Xs,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let El=0;function Tl(e,t){return function(s,r=null){L(s)||(s=ue({},s)),r!=null&&!Y(r)&&(r=null);const i=Nr(),l=new WeakSet,o=[];let u=!1;const d=i.app={_uid:El++,_component:s,_props:r,_container:null,_context:i,_instance:null,version:to,get config(){return i.config},set config(a){},use(a,...p){return l.has(a)||(a&&L(a.install)?(l.add(a),a.install(d,...p)):L(a)&&(l.add(a),a(d,...p))),d},mixin(a){return i.mixins.includes(a)||i.mixins.push(a),d},component(a,p){return p?(i.components[a]=p,d):i.components[a]},directive(a,p){return p?(i.directives[a]=p,d):i.directives[a]},mount(a,p,w){if(!u){const y=d._ceVNode||Se(s,r);return y.appContext=i,w===!0?w="svg":w===!1&&(w=void 0),e(y,a,w),u=!0,d._container=a,a.__vue_app__=d,xn(y.component)}},onUnmount(a){o.push(a)},unmount(){u&&(Ne(o,d._instance,16),e(null,d._container),delete d._container.__vue_app__)},provide(a,p){return i.provides[a]=p,d},runWithContext(a){const p=gt;gt=d;try{return a()}finally{gt=p}}};return d}}let gt=null;const Cl=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${Qe(t)}Modifiers`]||e[`${ot(t)}Modifiers`];function Pl(e,t,...n){if(e.isUnmounted)return;const s=e.vnode.props||k;let r=n;const i=t.startsWith("update:"),l=i&&Cl(s,t.slice(7));l&&(l.trim&&(r=n.map(a=>Q(a)?a.trim():a)),l.number&&(r=n.map(rr)));let o,u=s[o=wn(t)]||s[o=wn(Qe(t))];!u&&i&&(u=s[o=wn(ot(t))]),u&&Ne(u,e,6,r);const d=s[o+"Once"];if(d){if(!e.emitted)e.emitted={};else if(e.emitted[o])return;e.emitted[o]=!0,Ne(d,e,6,r)}}const Al=new WeakMap;function Hr(e,t,n=!1){const s=n?Al:t.emitsCache,r=s.get(e);if(r!==void 0)return r;const i=e.emits;let l={},o=!1;if(!L(e)){const u=d=>{const a=Hr(d,t,!0);a&&(o=!0,ue(l,a))};!n&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}return!i&&!o?(Y(e)&&s.set(e,null),null):(R(i)?i.forEach(u=>l[u]=null):ue(l,i),Y(e)&&s.set(e,l),l)}function yn(e,t){return!e||!cn(t)?!1:(t=t.slice(2).replace(/Once$/,""),V(e,t[0].toLowerCase()+t.slice(1))||V(e,ot(t))||V(e,t))}function Rs(e){const{type:t,vnode:n,proxy:s,withProxy:r,propsOptions:[i],slots:l,attrs:o,emit:u,render:d,renderCache:a,props:p,data:w,setupState:y,ctx:C,inheritAttrs:T}=e,Z=en(e);let F,j;try{if(n.shapeFlag&4){const O=r||s,B=O;F=je(d.call(B,O,a,p,y,w,C)),j=o}else{const O=t;F=je(O.length>1?O(p,{attrs:o,slots:l,emit:u}):O(p,null)),j=t.props?o:Ol(o)}}catch(O){Rt.length=0,mn(O,e,1),F=Se(ke)}let D=F;if(j&&T!==!1){const O=Object.keys(j),{shapeFlag:B}=D;O.length&&B&7&&(i&&O.some(Yn)&&(j=Ml(j,i)),D=vt(D,j,!1,!0))}return n.dirs&&(D=vt(D,null,!1,!0),D.dirs=D.dirs?D.dirs.concat(n.dirs):n.dirs),n.transition&&us(D,n.transition),F=D,en(Z),F}const Ol=e=>{let t;for(const n in e)(n==="class"||n==="style"||cn(n))&&((t||(t={}))[n]=e[n]);return t},Ml=(e,t)=>{const n={};for(const s in e)(!Yn(s)||!(s.slice(9)in t))&&(n[s]=e[s]);return n};function Rl(e,t,n){const{props:s,children:r,component:i}=e,{props:l,children:o,patchFlag:u}=t,d=i.emitsOptions;if(t.dirs||t.transition)return!0;if(n&&u>=0){if(u&1024)return!0;if(u&16)return s?Is(s,l,d):!!l;if(u&8){const a=t.dynamicProps;for(let p=0;p<a.length;p++){const w=a[p];if(l[w]!==s[w]&&!yn(d,w))return!0}}}else return(r||o)&&(!o||!o.$stable)?!0:s===l?!1:s?l?Is(s,l,d):!0:!!l;return!1}function Is(e,t,n){const s=Object.keys(t);if(s.length!==Object.keys(e).length)return!0;for(let r=0;r<s.length;r++){const i=s[r];if(t[i]!==e[i]&&!yn(n,i))return!0}return!1}function Il({vnode:e,parent:t},n){for(;t;){const s=t.subTree;if(s.suspense&&s.suspense.activeBranch===e&&(s.el=e.el),s===e)(e=t.vnode).el=n,t=t.parent;else break}}const $r={},Vr=()=>Object.create($r),Ur=e=>Object.getPrototypeOf(e)===$r;function Ll(e,t,n,s=!1){const r={},i=Vr();e.propsDefaults=Object.create(null),Wr(e,t,r,i);for(const l in e.propsOptions[0])l in r||(r[l]=void 0);n?e.props=s?r:$i(r):e.type.props?e.props=r:e.props=i,e.attrs=i}function Fl(e,t,n,s){const{props:r,attrs:i,vnode:{patchFlag:l}}=e,o=$(r),[u]=e.propsOptions;let d=!1;if((s||l>0)&&!(l&16)){if(l&8){const a=e.vnode.dynamicProps;for(let p=0;p<a.length;p++){let w=a[p];if(yn(e.emitsOptions,w))continue;const y=t[w];if(u)if(V(i,w))y!==i[w]&&(i[w]=y,d=!0);else{const C=Qe(w);r[C]=Bn(u,o,C,y,e,!1)}else y!==i[w]&&(i[w]=y,d=!0)}}}else{Wr(e,t,r,i)&&(d=!0);let a;for(const p in o)(!t||!V(t,p)&&((a=ot(p))===p||!V(t,a)))&&(u?n&&(n[p]!==void 0||n[a]!==void 0)&&(r[p]=Bn(u,o,p,void 0,e,!0)):delete r[p]);if(i!==o)for(const p in i)(!t||!V(t,p))&&(delete i[p],d=!0)}d&&Ve(e.attrs,"set","")}function Wr(e,t,n,s){const[r,i]=e.propsOptions;let l=!1,o;if(t)for(let u in t){if(Ct(u))continue;const d=t[u];let a;r&&V(r,a=Qe(u))?!i||!i.includes(a)?n[a]=d:(o||(o={}))[a]=d:yn(e.emitsOptions,u)||(!(u in s)||d!==s[u])&&(s[u]=d,l=!0)}if(i){const u=$(n),d=o||k;for(let a=0;a<i.length;a++){const p=i[a];n[p]=Bn(r,u,p,d[p],e,!V(d,p))}}return l}function Bn(e,t,n,s,r,i){const l=e[n];if(l!=null){const o=V(l,"default");if(o&&s===void 0){const u=l.default;if(l.type!==Function&&!l.skipFactory&&L(u)){const{propsDefaults:d}=r;if(n in d)s=d[n];else{const a=Vt(r);s=d[n]=u.call(null,t),a()}}else s=u;r.ce&&r.ce._setProp(n,s)}l[0]&&(i&&!o?s=!1:l[1]&&(s===""||s===ot(n))&&(s=!0))}return s}const jl=new WeakMap;function Kr(e,t,n=!1){const s=n?jl:t.propsCache,r=s.get(e);if(r)return r;const i=e.props,l={},o=[];let u=!1;if(!L(e)){const a=p=>{u=!0;const[w,y]=Kr(p,t,!0);ue(l,w),y&&o.push(...y)};!n&&t.mixins.length&&t.mixins.forEach(a),e.extends&&a(e.extends),e.mixins&&e.mixins.forEach(a)}if(!i&&!u)return Y(e)&&s.set(e,at),at;if(R(i))for(let a=0;a<i.length;a++){const p=Qe(i[a]);Ls(p)&&(l[p]=k)}else if(i)for(const a in i){const p=Qe(a);if(Ls(p)){const w=i[a],y=l[p]=R(w)||L(w)?{type:w}:ue({},w),C=y.type;let T=!1,Z=!0;if(R(C))for(let F=0;F<C.length;++F){const j=C[F],D=L(j)&&j.name;if(D==="Boolean"){T=!0;break}else D==="String"&&(Z=!1)}else T=L(C)&&C.name==="Boolean";y[0]=T,y[1]=Z,(T||V(y,"default"))&&o.push(p)}}const d=[l,o];return Y(e)&&s.set(e,d),d}function Ls(e){return e[0]!=="$"&&!Ct(e)}const fs=e=>e==="_"||e==="_ctx"||e==="$stable",as=e=>R(e)?e.map(je):[je(e)],Dl=(e,t,n)=>{if(t._n)return t;const s=Zi((...r)=>as(t(...r)),n);return s._c=!1,s},Br=(e,t,n)=>{const s=e._ctx;for(const r in e){if(fs(r))continue;const i=e[r];if(L(i))t[r]=Dl(r,i,s);else if(i!=null){const l=as(i);t[r]=()=>l}}},kr=(e,t)=>{const n=as(t);e.slots.default=()=>n},qr=(e,t,n)=>{for(const s in t)(n||!fs(s))&&(e[s]=t[s])},Nl=(e,t,n)=>{const s=e.slots=Vr();if(e.vnode.shapeFlag&32){const r=t._;r?(qr(s,t,n),n&&sr(s,"_",r,!0)):Br(t,s)}else t&&kr(e,t)},Hl=(e,t,n)=>{const{vnode:s,slots:r}=e;let i=!0,l=k;if(s.shapeFlag&32){const o=t._;o?n&&o===1?i=!1:qr(r,t,n):(i=!t.$stable,Br(t,r)),l=t}else t&&(kr(e,t),l={default:1});if(i)for(const o in r)!fs(o)&&l[o]==null&&delete r[o]},_e=Kl;function $l(e){return Vl(e)}function Vl(e,t){const n=dn();n.__VUE__=!0;const{insert:s,remove:r,patchProp:i,createElement:l,createText:o,createComment:u,setText:d,setElementText:a,parentNode:p,nextSibling:w,setScopeId:y=De,insertStaticContent:C}=e,T=(c,f,h,_=null,g=null,m=null,S=void 0,x=null,b=!!f.dynamicChildren)=>{if(c===f)return;c&&!wt(c,f)&&(_=Wt(c),Oe(c,g,m,!0),c=null),f.patchFlag===-2&&(b=!1,f.dynamicChildren=null);const{type:v,ref:M,shapeFlag:E}=f;switch(v){case bn:Z(c,f,h,_);break;case ke:F(c,f,h,_);break;case Mn:c==null&&j(f,h,_,S);break;case ne:ee(c,f,h,_,g,m,S,x,b);break;default:E&1?B(c,f,h,_,g,m,S,x,b):E&6?Ae(c,f,h,_,g,m,S,x,b):(E&64||E&128)&&v.process(c,f,h,_,g,m,S,x,b,bt)}M!=null&&g?Ot(M,c&&c.ref,m,f||c,!f):M==null&&c&&c.ref!=null&&Ot(c.ref,null,m,c,!0)},Z=(c,f,h,_)=>{if(c==null)s(f.el=o(f.children),h,_);else{const g=f.el=c.el;f.children!==c.children&&d(g,f.children)}},F=(c,f,h,_)=>{c==null?s(f.el=u(f.children||""),h,_):f.el=c.el},j=(c,f,h,_)=>{[c.el,c.anchor]=C(c.children,f,h,_,c.el,c.anchor)},D=({el:c,anchor:f},h,_)=>{let g;for(;c&&c!==f;)g=w(c),s(c,h,_),c=g;s(f,h,_)},O=({el:c,anchor:f})=>{let h;for(;c&&c!==f;)h=w(c),r(c),c=h;r(f)},B=(c,f,h,_,g,m,S,x,b)=>{if(f.type==="svg"?S="svg":f.type==="math"&&(S="mathml"),c==null)be(f,h,_,g,m,S,x,b);else{const v=c.el&&c.el._isVueCE?c.el:null;try{v&&v._beginPatch(),re(c,f,g,m,S,x,b)}finally{v&&v._endPatch()}}},be=(c,f,h,_,g,m,S,x)=>{let b,v;const{props:M,shapeFlag:E,transition:A,dirs:I}=c;if(b=c.el=l(c.type,m,M&&M.is,M),E&8?a(b,c.children):E&16&&me(c.children,b,null,_,g,On(c,m),S,x),I&&nt(c,null,_,"created"),se(b,c,c.scopeId,S,_),M){for(const G in M)G!=="value"&&!Ct(G)&&i(b,G,null,M[G],m,_);"value"in M&&i(b,"value",null,M.value,m),(v=M.onVnodeBeforeMount)&&Le(v,_,c)}I&&nt(c,null,_,"beforeMount");const N=Ul(g,A);N&&A.beforeEnter(b),s(b,f,h),((v=M&&M.onVnodeMounted)||N||I)&&_e(()=>{v&&Le(v,_,c),N&&A.enter(b),I&&nt(c,null,_,"mounted")},g)},se=(c,f,h,_,g)=>{if(h&&y(c,h),_)for(let m=0;m<_.length;m++)y(c,_[m]);if(g){let m=g.subTree;if(f===m||zr(m.type)&&(m.ssContent===f||m.ssFallback===f)){const S=g.vnode;se(c,S,S.scopeId,S.slotScopeIds,g.parent)}}},me=(c,f,h,_,g,m,S,x,b=0)=>{for(let v=b;v<c.length;v++){const M=c[v]=x?Ye(c[v]):je(c[v]);T(null,M,f,h,_,g,m,S,x)}},re=(c,f,h,_,g,m,S)=>{const x=f.el=c.el;let{patchFlag:b,dynamicChildren:v,dirs:M}=f;b|=c.patchFlag&16;const E=c.props||k,A=f.props||k;let I;if(h&&st(h,!1),(I=A.onVnodeBeforeUpdate)&&Le(I,h,f,c),M&&nt(f,c,h,"beforeUpdate"),h&&st(h,!0),(E.innerHTML&&A.innerHTML==null||E.textContent&&A.textContent==null)&&a(x,""),v?U(c.dynamicChildren,v,x,h,_,On(f,g),m):S||q(c,f,x,null,h,_,On(f,g),m,!1),b>0){if(b&16)P(x,E,A,h,g);else if(b&2&&E.class!==A.class&&i(x,"class",null,A.class,g),b&4&&i(x,"style",E.style,A.style,g),b&8){const N=f.dynamicProps;for(let G=0;G<N.length;G++){const W=N[G],he=E[W],pe=A[W];(pe!==he||W==="value")&&i(x,W,he,pe,g,h)}}b&1&&c.children!==f.children&&a(x,f.children)}else!S&&v==null&&P(x,E,A,h,g);((I=A.onVnodeUpdated)||M)&&_e(()=>{I&&Le(I,h,f,c),M&&nt(f,c,h,"updated")},_)},U=(c,f,h,_,g,m,S)=>{for(let x=0;x<f.length;x++){const b=c[x],v=f[x],M=b.el&&(b.type===ne||!wt(b,v)||b.shapeFlag&198)?p(b.el):h;T(b,v,M,null,_,g,m,S,!0)}},P=(c,f,h,_,g)=>{if(f!==h){if(f!==k)for(const m in f)!Ct(m)&&!(m in h)&&i(c,m,f[m],null,g,_);for(const m in h){if(Ct(m))continue;const S=h[m],x=f[m];S!==x&&m!=="value"&&i(c,m,x,S,g,_)}"value"in h&&i(c,"value",f.value,h.value,g)}},ee=(c,f,h,_,g,m,S,x,b)=>{const v=f.el=c?c.el:o(""),M=f.anchor=c?c.anchor:o("");let{patchFlag:E,dynamicChildren:A,slotScopeIds:I}=f;I&&(x=x?x.concat(I):I),c==null?(s(v,h,_),s(M,h,_),me(f.children||[],h,M,g,m,S,x,b)):E>0&&E&64&&A&&c.dynamicChildren&&c.dynamicChildren.length===A.length?(U(c.dynamicChildren,A,h,g,m,S,x),(f.key!=null||g&&f===g.subTree)&&Gr(c,f,!0)):q(c,f,h,M,g,m,S,x,b)},Ae=(c,f,h,_,g,m,S,x,b)=>{f.slotScopeIds=x,c==null?f.shapeFlag&512?g.ctx.activate(f,h,_,S,b):_t(f,h,_,g,m,S,b):ps(c,f,b)},_t=(c,f,h,_,g,m,S)=>{const x=c.component=Jl(c,_,g);if(Ir(c)&&(x.ctx.renderer=bt),zl(x,!1,S),x.asyncDep){if(g&&g.registerDep(x,ce,S),!c.el){const b=x.subTree=Se(ke);F(null,b,f,h),c.placeholder=b.el}}else ce(x,c,f,h,g,m,S)},ps=(c,f,h)=>{const _=f.component=c.component;if(Rl(c,f,h))if(_.asyncDep&&!_.asyncResolved){X(_,f,h);return}else _.next=f,_.update();else f.el=c.el,_.vnode=f},ce=(c,f,h,_,g,m,S)=>{const x=()=>{if(c.isMounted){let{next:E,bu:A,u:I,parent:N,vnode:G}=c;{const Re=Jr(c);if(Re){E&&(E.el=G.el,X(c,E,S)),Re.asyncDep.then(()=>{c.isUnmounted||x()});return}}let W=E,he;st(c,!1),E?(E.el=G.el,X(c,E,S)):E=G,A&&qt(A),(he=E.props&&E.props.onVnodeBeforeUpdate)&&Le(he,N,E,G),st(c,!0);const pe=Rs(c),Me=c.subTree;c.subTree=pe,T(Me,pe,p(Me.el),Wt(Me),c,g,m),E.el=pe.el,W===null&&Il(c,pe.el),I&&_e(I,g),(he=E.props&&E.props.onVnodeUpdated)&&_e(()=>Le(he,N,E,G),g)}else{let E;const{el:A,props:I}=f,{bm:N,m:G,parent:W,root:he,type:pe}=c,Me=pt(f);st(c,!1),N&&qt(N),!Me&&(E=I&&I.onVnodeBeforeMount)&&Le(E,W,f),st(c,!0);{he.ce&&he.ce._def.shadowRoot!==!1&&he.ce._injectChildStyle(pe);const Re=c.subTree=Rs(c);T(null,Re,h,_,c,g,m),f.el=Re.el}if(G&&_e(G,g),!Me&&(E=I&&I.onVnodeMounted)){const Re=f;_e(()=>Le(E,W,Re),g)}(f.shapeFlag&256||W&&pt(W.vnode)&&W.vnode.shapeFlag&256)&&c.a&&_e(c.a,g),c.isMounted=!0,f=h=_=null}};c.scope.on();const b=c.effect=new ur(x);c.scope.off();const v=c.update=b.run.bind(b),M=c.job=b.runIfDirty.bind(b);M.i=c,M.id=c.uid,b.scheduler=()=>os(M),st(c,!0),v()},X=(c,f,h)=>{f.component=c;const _=c.vnode.props;c.vnode=f,c.next=null,Fl(c,f.props,_,h),Hl(c,f.children,h),We(),Ts(c),Ke()},q=(c,f,h,_,g,m,S,x,b=!1)=>{const v=c&&c.children,M=c?c.shapeFlag:0,E=f.children,{patchFlag:A,shapeFlag:I}=f;if(A>0){if(A&128){Ut(v,E,h,_,g,m,S,x,b);return}else if(A&256){et(v,E,h,_,g,m,S,x,b);return}}I&8?(M&16&&yt(v,g,m),E!==v&&a(h,E)):M&16?I&16?Ut(v,E,h,_,g,m,S,x,b):yt(v,g,m,!0):(M&8&&a(h,""),I&16&&me(E,h,_,g,m,S,x,b))},et=(c,f,h,_,g,m,S,x,b)=>{c=c||at,f=f||at;const v=c.length,M=f.length,E=Math.min(v,M);let A;for(A=0;A<E;A++){const I=f[A]=b?Ye(f[A]):je(f[A]);T(c[A],I,h,null,g,m,S,x,b)}v>M?yt(c,g,m,!0,!1,E):me(f,h,_,g,m,S,x,b,E)},Ut=(c,f,h,_,g,m,S,x,b)=>{let v=0;const M=f.length;let E=c.length-1,A=M-1;for(;v<=E&&v<=A;){const I=c[v],N=f[v]=b?Ye(f[v]):je(f[v]);if(wt(I,N))T(I,N,h,null,g,m,S,x,b);else break;v++}for(;v<=E&&v<=A;){const I=c[E],N=f[A]=b?Ye(f[A]):je(f[A]);if(wt(I,N))T(I,N,h,null,g,m,S,x,b);else break;E--,A--}if(v>E){if(v<=A){const I=A+1,N=I<M?f[I].el:_;for(;v<=A;)T(null,f[v]=b?Ye(f[v]):je(f[v]),h,N,g,m,S,x,b),v++}}else if(v>A)for(;v<=E;)Oe(c[v],g,m,!0),v++;else{const I=v,N=v,G=new Map;for(v=N;v<=A;v++){const ve=f[v]=b?Ye(f[v]):je(f[v]);ve.key!=null&&G.set(ve.key,v)}let W,he=0;const pe=A-N+1;let Me=!1,Re=0;const xt=new Array(pe);for(v=0;v<pe;v++)xt[v]=0;for(v=I;v<=E;v++){const ve=c[v];if(he>=pe){Oe(ve,g,m,!0);continue}let Ie;if(ve.key!=null)Ie=G.get(ve.key);else for(W=N;W<=A;W++)if(xt[W-N]===0&&wt(ve,f[W])){Ie=W;break}Ie===void 0?Oe(ve,g,m,!0):(xt[Ie-N]=v+1,Ie>=Re?Re=Ie:Me=!0,T(ve,f[Ie],h,null,g,m,S,x,b),he++)}const vs=Me?Wl(xt):at;for(W=vs.length-1,v=pe-1;v>=0;v--){const ve=N+v,Ie=f[ve],_s=f[ve+1],ys=ve+1<M?_s.el||Yr(_s):_;xt[v]===0?T(null,Ie,h,ys,g,m,S,x,b):Me&&(W<0||v!==vs[W]?tt(Ie,h,ys,2):W--)}}},tt=(c,f,h,_,g=null)=>{const{el:m,type:S,transition:x,children:b,shapeFlag:v}=c;if(v&6){tt(c.component.subTree,f,h,_);return}if(v&128){c.suspense.move(f,h,_);return}if(v&64){S.move(c,f,h,bt);return}if(S===ne){s(m,f,h);for(let E=0;E<b.length;E++)tt(b[E],f,h,_);s(c.anchor,f,h);return}if(S===Mn){D(c,f,h);return}if(_!==2&&v&1&&x)if(_===0)x.beforeEnter(m),s(m,f,h),_e(()=>x.enter(m),g);else{const{leave:E,delayLeave:A,afterLeave:I}=x,N=()=>{c.ctx.isUnmounted?r(m):s(m,f,h)},G=()=>{m._isLeaving&&m[rl](!0),E(m,()=>{N(),I&&I()})};A?A(m,N,G):G()}else s(m,f,h)},Oe=(c,f,h,_=!1,g=!1)=>{const{type:m,props:S,ref:x,children:b,dynamicChildren:v,shapeFlag:M,patchFlag:E,dirs:A,cacheIndex:I}=c;if(E===-2&&(g=!1),x!=null&&(We(),Ot(x,null,h,c,!0),Ke()),I!=null&&(f.renderCache[I]=void 0),M&256){f.ctx.deactivate(c);return}const N=M&1&&A,G=!pt(c);let W;if(G&&(W=S&&S.onVnodeBeforeUnmount)&&Le(W,f,c),M&6)li(c.component,h,_);else{if(M&128){c.suspense.unmount(h,_);return}N&&nt(c,null,f,"beforeUnmount"),M&64?c.type.remove(c,f,h,bt,_):v&&!v.hasOnce&&(m!==ne||E>0&&E&64)?yt(v,f,h,!1,!0):(m===ne&&E&384||!g&&M&16)&&yt(b,f,h),_&&gs(c)}(G&&(W=S&&S.onVnodeUnmounted)||N)&&_e(()=>{W&&Le(W,f,c),N&&nt(c,null,f,"unmounted")},h)},gs=c=>{const{type:f,el:h,anchor:_,transition:g}=c;if(f===ne){ii(h,_);return}if(f===Mn){O(c);return}const m=()=>{r(h),g&&!g.persisted&&g.afterLeave&&g.afterLeave()};if(c.shapeFlag&1&&g&&!g.persisted){const{leave:S,delayLeave:x}=g,b=()=>S(h,m);x?x(c.el,m,b):b()}else m()},ii=(c,f)=>{let h;for(;c!==f;)h=w(c),r(c),c=h;r(f)},li=(c,f,h)=>{const{bum:_,scope:g,job:m,subTree:S,um:x,m:b,a:v}=c;Fs(b),Fs(v),_&&qt(_),g.stop(),m&&(m.flags|=8,Oe(S,c,f,h)),x&&_e(x,f),_e(()=>{c.isUnmounted=!0},f)},yt=(c,f,h,_=!1,g=!1,m=0)=>{for(let S=m;S<c.length;S++)Oe(c[S],f,h,_,g)},Wt=c=>{if(c.shapeFlag&6)return Wt(c.component.subTree);if(c.shapeFlag&128)return c.suspense.next();const f=w(c.anchor||c.el),h=f&&f[nl];return h?w(h):f};let Sn=!1;const ms=(c,f,h)=>{let _;c==null?f._vnode&&(Oe(f._vnode,null,null,!0),_=f._vnode.component):T(f._vnode||null,c,f,null,null,null,h),f._vnode=c,Sn||(Sn=!0,Ts(_),Cr(),Sn=!1)},bt={p:T,um:Oe,m:tt,r:gs,mt:_t,mc:me,pc:q,pbc:U,n:Wt,o:e};return{render:ms,hydrate:void 0,createApp:Tl(ms)}}function On({type:e,props:t},n){return n==="svg"&&e==="foreignObject"||n==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:n}function st({effect:e,job:t},n){n?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Ul(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Gr(e,t,n=!1){const s=e.children,r=t.children;if(R(s)&&R(r))for(let i=0;i<s.length;i++){const l=s[i];let o=r[i];o.shapeFlag&1&&!o.dynamicChildren&&((o.patchFlag<=0||o.patchFlag===32)&&(o=r[i]=Ye(r[i]),o.el=l.el),!n&&o.patchFlag!==-2&&Gr(l,o)),o.type===bn&&(o.patchFlag!==-1?o.el=l.el:o.__elIndex=i+(e.type===ne?1:0)),o.type===ke&&!o.el&&(o.el=l.el)}}function Wl(e){const t=e.slice(),n=[0];let s,r,i,l,o;const u=e.length;for(s=0;s<u;s++){const d=e[s];if(d!==0){if(r=n[n.length-1],e[r]<d){t[s]=r,n.push(s);continue}for(i=0,l=n.length-1;i<l;)o=i+l>>1,e[n[o]]<d?i=o+1:l=o;d<e[n[i]]&&(i>0&&(t[s]=n[i-1]),n[i]=s)}}for(i=n.length,l=n[i-1];i-- >0;)n[i]=l,l=t[l];return n}function Jr(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Jr(t)}function Fs(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}function Yr(e){if(e.placeholder)return e.placeholder;const t=e.component;return t?Yr(t.subTree):null}const zr=e=>e.__isSuspense;function Kl(e,t){t&&t.pendingBranch?R(e)?t.effects.push(...e):t.effects.push(e):zi(e)}const ne=Symbol.for("v-fgt"),bn=Symbol.for("v-txt"),ke=Symbol.for("v-cmt"),Mn=Symbol.for("v-stc"),Rt=[];let ye=null;function H(e=!1){Rt.push(ye=e?null:[])}function Bl(){Rt.pop(),ye=Rt[Rt.length-1]||null}let jt=1;function js(e,t=!1){jt+=e,e<0&&ye&&t&&(ye.hasOnce=!0)}function Zr(e){return e.dynamicChildren=jt>0?ye||at:null,Bl(),jt>0&&ye&&ye.push(e),e}function K(e,t,n,s,r,i){return Zr(z(e,t,n,s,r,i,!0))}function rn(e,t,n,s,r){return Zr(Se(e,t,n,s,r,!0))}function ds(e){return e?e.__v_isVNode===!0:!1}function wt(e,t){return e.type===t.type&&e.key===t.key}const Xr=({key:e})=>e??null,Yt=({ref:e,ref_key:t,ref_for:n})=>(typeof e=="number"&&(e=""+e),e!=null?Q(e)||oe(e)||L(e)?{i:le,r:e,k:t,f:!!n}:e:null);function z(e,t=null,n=null,s=0,r=null,i=e===ne?0:1,l=!1,o=!1){const u={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Xr(t),ref:t&&Yt(t),scopeId:Ar,slotScopeIds:null,children:n,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:i,patchFlag:s,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:le};return o?(hs(u,n),i&128&&e.normalize(u)):n&&(u.shapeFlag|=Q(n)?8:16),jt>0&&!l&&ye&&(u.patchFlag>0||i&6)&&u.patchFlag!==32&&ye.push(u),u}const Se=kl;function kl(e,t=null,n=null,s=0,r=null,i=!1){if((!e||e===ml)&&(e=ke),ds(e)){const o=vt(e,t,!0);return n&&hs(o,n),jt>0&&!i&&ye&&(o.shapeFlag&6?ye[ye.indexOf(e)]=o:ye.push(o)),o.patchFlag=-2,o}if(eo(e)&&(e=e.__vccOpts),t){t=Qr(t);let{class:o,style:u}=t;o&&!Q(o)&&(t.class=Ht(o)),Y(u)&&(is(u)&&!R(u)&&(u=ue({},u)),t.style=hn(u))}const l=Q(e)?1:zr(e)?128:sl(e)?64:Y(e)?4:L(e)?2:0;return z(e,t,n,s,r,l,i,!0)}function Qr(e){return e?is(e)||Ur(e)?ue({},e):e:null}function vt(e,t,n=!1,s=!1){const{props:r,ref:i,patchFlag:l,children:o,transition:u}=e,d=t?kn(r||{},t):r,a={__v_isVNode:!0,__v_skip:!0,type:e.type,props:d,key:d&&Xr(d),ref:t&&t.ref?n&&i?R(i)?i.concat(Yt(t)):[i,Yt(t)]:Yt(t):i,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:o,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ne?l===-1?16:l|16:l,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:u,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&vt(e.ssContent),ssFallback:e.ssFallback&&vt(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return u&&s&&us(a,u.clone(a)),a}function ft(e=" ",t=0){return Se(bn,null,e,t)}function Xe(e="",t=!1){return t?(H(),rn(ke,null,e)):Se(ke,null,e)}function je(e){return e==null||typeof e=="boolean"?Se(ke):R(e)?Se(ne,null,e.slice()):ds(e)?Ye(e):Se(bn,null,String(e))}function Ye(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:vt(e)}function hs(e,t){let n=0;const{shapeFlag:s}=e;if(t==null)t=null;else if(R(t))n=16;else if(typeof t=="object")if(s&65){const r=t.default;r&&(r._c&&(r._d=!1),hs(e,r()),r._c&&(r._d=!0));return}else{n=32;const r=t._;!r&&!Ur(t)?t._ctx=le:r===3&&le&&(le.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else L(t)?(t={default:t,_ctx:le},n=32):(t=String(t),s&64?(n=16,t=[ft(t)]):n=8);e.children=t,e.shapeFlag|=n}function kn(...e){const t={};for(let n=0;n<e.length;n++){const s=e[n];for(const r in s)if(r==="class")t.class!==s.class&&(t.class=Ht([t.class,s.class]));else if(r==="style")t.style=hn([t.style,s.style]);else if(cn(r)){const i=t[r],l=s[r];l&&i!==l&&!(R(i)&&i.includes(l))&&(t[r]=i?[].concat(i,l):l)}else r!==""&&(t[r]=s[r])}return t}function Le(e,t,n,s=null){Ne(e,t,7,[n,s])}const ql=Nr();let Gl=0;function Jl(e,t,n){const s=e.type,r=(t?t.appContext:e.appContext)||ql,i={uid:Gl++,vnode:e,type:s,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new yi(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Kr(s,r),emitsOptions:Hr(s,r),emit:null,emitted:null,propsDefaults:k,inheritAttrs:s.inheritAttrs,ctx:k,data:k,props:k,attrs:k,slots:k,refs:k,setupState:k,setupContext:null,suspense:n,suspenseId:n?n.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return i.ctx={_:i},i.root=t?t.root:i,i.emit=Pl.bind(null,i),e.ce&&e.ce(i),i}let de=null;const Yl=()=>de||le;let ln,qn;{const e=dn(),t=(n,s)=>{let r;return(r=e[n])||(r=e[n]=[]),r.push(s),i=>{r.length>1?r.forEach(l=>l(i)):r[0](i)}};ln=t("__VUE_INSTANCE_SETTERS__",n=>de=n),qn=t("__VUE_SSR_SETTERS__",n=>Dt=n)}const Vt=e=>{const t=de;return ln(e),e.scope.on(),()=>{e.scope.off(),ln(t)}},Ds=()=>{de&&de.scope.off(),ln(null)};function ei(e){return e.vnode.shapeFlag&4}let Dt=!1;function zl(e,t=!1,n=!1){t&&qn(t);const{props:s,children:r}=e.vnode,i=ei(e);Ll(e,s,i,t),Nl(e,r,n||t);const l=i?Zl(e,t):void 0;return t&&qn(!1),l}function Zl(e,t){const n=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,_l);const{setup:s}=n;if(s){We();const r=e.setupContext=s.length>1?Ql(e):null,i=Vt(e),l=$t(s,e,0,[e.props,r]),o=Qs(l);if(Ke(),i(),(o||e.sp)&&!pt(e)&&Rr(e),o){if(l.then(Ds,Ds),t)return l.then(u=>{Ns(e,u)}).catch(u=>{mn(u,e,0)});e.asyncDep=l}else Ns(e,l)}else ti(e)}function Ns(e,t,n){L(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:Y(t)&&(e.setupState=Sr(t)),ti(e)}function ti(e,t,n){const s=e.type;e.render||(e.render=s.render||De);{const r=Vt(e);We();try{yl(e)}finally{Ke(),r()}}}const Xl={get(e,t){return ie(e,"get",""),e[t]}};function Ql(e){const t=n=>{e.exposed=n||{}};return{attrs:new Proxy(e.attrs,Xl),slots:e.slots,emit:e.emit,expose:t}}function xn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Sr(Vi(e.exposed)),{get(t,n){if(n in t)return t[n];if(n in Mt)return Mt[n](e)},has(t,n){return n in t||n in Mt}})):e.proxy}function eo(e){return L(e)&&"__vccOpts"in e}const we=(e,t)=>ki(e,t,Dt),to="3.5.26";let Gn;const Hs=typeof window<"u"&&window.trustedTypes;if(Hs)try{Gn=Hs.createPolicy("vue",{createHTML:e=>e})}catch{}const ni=Gn?e=>Gn.createHTML(e):e=>e,no="http://www.w3.org/2000/svg",so="http://www.w3.org/1998/Math/MathML",$e=typeof document<"u"?document:null,$s=$e&&$e.createElement("template"),ro={insert:(e,t,n)=>{t.insertBefore(e,n||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,n,s)=>{const r=t==="svg"?$e.createElementNS(no,e):t==="mathml"?$e.createElementNS(so,e):n?$e.createElement(e,{is:n}):$e.createElement(e);return e==="select"&&s&&s.multiple!=null&&r.setAttribute("multiple",s.multiple),r},createText:e=>$e.createTextNode(e),createComment:e=>$e.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>$e.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,n,s,r,i){const l=n?n.previousSibling:t.lastChild;if(r&&(r===i||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),n),!(r===i||!(r=r.nextSibling)););else{$s.innerHTML=ni(s==="svg"?`<svg>${e}</svg>`:s==="mathml"?`<math>${e}</math>`:e);const o=$s.content;if(s==="svg"||s==="mathml"){const u=o.firstChild;for(;u.firstChild;)o.appendChild(u.firstChild);o.removeChild(u)}t.insertBefore(o,n)}return[l?l.nextSibling:t.firstChild,n?n.previousSibling:t.lastChild]}},io=Symbol("_vtc");function lo(e,t,n){const s=e[io];s&&(t=(t?[t,...s]:[...s]).join(" ")),t==null?e.removeAttribute("class"):n?e.setAttribute("class",t):e.className=t}const on=Symbol("_vod"),si=Symbol("_vsh"),oo={name:"show",beforeMount(e,{value:t},{transition:n}){e[on]=e.style.display==="none"?"":e.style.display,n&&t?n.beforeEnter(e):Et(e,t)},mounted(e,{value:t},{transition:n}){n&&t&&n.enter(e)},updated(e,{value:t,oldValue:n},{transition:s}){!t!=!n&&(s?t?(s.beforeEnter(e),Et(e,!0),s.enter(e)):s.leave(e,()=>{Et(e,!1)}):Et(e,t))},beforeUnmount(e,{value:t}){Et(e,t)}};function Et(e,t){e.style.display=t?e[on]:"none",e[si]=!t}const uo=Symbol(""),co=/(?:^|;)\s*display\s*:/;function fo(e,t,n){const s=e.style,r=Q(n);let i=!1;if(n&&!r){if(t)if(Q(t))for(const l of t.split(";")){const o=l.slice(0,l.indexOf(":")).trim();n[o]==null&&zt(s,o,"")}else for(const l in t)n[l]==null&&zt(s,l,"");for(const l in n)l==="display"&&(i=!0),zt(s,l,n[l])}else if(r){if(t!==n){const l=s[uo];l&&(n+=";"+l),s.cssText=n,i=co.test(n)}}else t&&e.removeAttribute("style");on in e&&(e[on]=i?s.display:"",e[si]&&(s.display="none"))}const Vs=/\s*!important$/;function zt(e,t,n){if(R(n))n.forEach(s=>zt(e,t,s));else if(n==null&&(n=""),t.startsWith("--"))e.setProperty(t,n);else{const s=ao(e,t);Vs.test(n)?e.setProperty(ot(s),n.replace(Vs,""),"important"):e[s]=n}}const Us=["Webkit","Moz","ms"],Rn={};function ao(e,t){const n=Rn[t];if(n)return n;let s=Qe(t);if(s!=="filter"&&s in e)return Rn[t]=s;s=nr(s);for(let r=0;r<Us.length;r++){const i=Us[r]+s;if(i in e)return Rn[t]=i}return t}const Ws="http://www.w3.org/1999/xlink";function Ks(e,t,n,s,r,i=mi(t)){s&&t.startsWith("xlink:")?n==null?e.removeAttributeNS(Ws,t.slice(6,t.length)):e.setAttributeNS(Ws,t,n):n==null||i&&!ir(n)?e.removeAttribute(t):e.setAttribute(t,i?"":Ce(n)?String(n):n)}function Bs(e,t,n,s,r){if(t==="innerHTML"||t==="textContent"){n!=null&&(e[t]=t==="innerHTML"?ni(n):n);return}const i=e.tagName;if(t==="value"&&i!=="PROGRESS"&&!i.includes("-")){const o=i==="OPTION"?e.getAttribute("value")||"":e.value,u=n==null?e.type==="checkbox"?"on":"":String(n);(o!==u||!("_value"in e))&&(e.value=u),n==null&&e.removeAttribute(t),e._value=n;return}let l=!1;if(n===""||n==null){const o=typeof e[t];o==="boolean"?n=ir(n):n==null&&o==="string"?(n="",l=!0):o==="number"&&(n=0,l=!0)}try{e[t]=n}catch{}l&&e.removeAttribute(r||t)}function ri(e,t,n,s){e.addEventListener(t,n,s)}function ho(e,t,n,s){e.removeEventListener(t,n,s)}const ks=Symbol("_vei");function po(e,t,n,s,r=null){const i=e[ks]||(e[ks]={}),l=i[t];if(s&&l)l.value=s;else{const[o,u]=go(t);if(s){const d=i[t]=_o(s,r);ri(e,o,d,u)}else l&&(ho(e,o,l,u),i[t]=void 0)}}const qs=/(?:Once|Passive|Capture)$/;function go(e){let t;if(qs.test(e)){t={};let s;for(;s=e.match(qs);)e=e.slice(0,e.length-s[0].length),t[s[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):ot(e.slice(2)),t]}let In=0;const mo=Promise.resolve(),vo=()=>In||(mo.then(()=>In=0),In=Date.now());function _o(e,t){const n=s=>{if(!s._vts)s._vts=Date.now();else if(s._vts<=n.attached)return;Ne(yo(s,n.value),t,5,[s])};return n.value=e,n.attached=vo(),n}function yo(e,t){if(R(t)){const n=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{n.call(e),e._stopped=!0},t.map(s=>r=>!r._stopped&&s&&s(r))}else return t}const Gs=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,bo=(e,t,n,s,r,i)=>{const l=r==="svg";t==="class"?lo(e,s,l):t==="style"?fo(e,n,s):cn(t)?Yn(t)||po(e,t,n,s,i):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):xo(e,t,s,l))?(Bs(e,t,s),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&Ks(e,t,s,l,i,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!Q(s))?Bs(e,Qe(t),s,i,t):(t==="true-value"?e._trueValue=s:t==="false-value"&&(e._falseValue=s),Ks(e,t,s,l))};function xo(e,t,n,s){if(s)return!!(t==="innerHTML"||t==="textContent"||t in e&&Gs(t)&&L(n));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="sandbox"&&e.tagName==="IFRAME"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return Gs(t)&&Q(n)?!1:t in e}const Js=e=>{const t=e.props["onUpdate:modelValue"]||!1;return R(t)?n=>qt(t,n):t},Ln=Symbol("_assign"),Ys={deep:!0,created(e,{value:t,modifiers:{number:n}},s){const r=fn(t);ri(e,"change",()=>{const i=Array.prototype.filter.call(e.options,l=>l.selected).map(l=>n?rr(un(l)):un(l));e[Ln](e.multiple?r?new Set(i):i:i[0]),e._assigning=!0,Er(()=>{e._assigning=!1})}),e[Ln]=Js(s)},mounted(e,{value:t}){zs(e,t)},beforeUpdate(e,t,n){e[Ln]=Js(n)},updated(e,{value:t}){e._assigning||zs(e,t)}};function zs(e,t){const n=e.multiple,s=R(t);if(!(n&&!s&&!fn(t))){for(let r=0,i=e.options.length;r<i;r++){const l=e.options[r],o=un(l);if(n)if(s){const u=typeof o;u==="string"||u==="number"?l.selected=t.some(d=>String(d)===String(o)):l.selected=_i(t,o)>-1}else l.selected=t.has(o);else if(pn(un(l),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!n&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function un(e){return"_value"in e?e._value:e.value}const So=ue({patchProp:bo},ro);let Zs;function wo(){return Zs||(Zs=$l(So))}const Eo=((...e)=>{const t=wo().createApp(...e),{mount:n}=t;return t.mount=s=>{const r=Co(s);if(!r)return;const i=t._component;!L(i)&&!i.render&&!i.template&&(i.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const l=n(r,!1,To(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),l},t});function To(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Co(e){return Q(e)?document.querySelector(e):e}const Zt=async e=>await new Promise(t=>setTimeout(t,e)),Po={class:"items-center justify-center w-full"},Ao={key:0},Oo=["src"],Mo={key:1,class:"relative inline-block"},Ro=["src"],Io=["src"],Lo={key:2,class:"relative inline-block"},Fo=["src"],jo=["src"],Do={key:3,class:"relative inline-block"},No=["src"],Ho={key:4},$o={key:5,class:"mt-4 px-6 py-4 text-left"},Vo={class:"text-lg leading-relaxed font-sans text-gray-800"},Uo={key:0,class:"text-base leading-relaxed font-sans text-gray-400 mt-3 italic"},Wo="https://github.com/receptron/mulmocast-cli/blob/main/assets/images/mulmocast_credit.png?raw=true",Fn=vn({__name:"mulmo_player",props:{index:{},videoWithAudioSource:{},soundEffectSource:{},videoSource:{},imageSource:{},audioSource:{},text:{},originalText:{},duration:{},defaultLang:{},currentLang:{},playbackSpeed:{default:1}},emits:["play","pause","ended"],setup(e,{expose:t,emit:n}){const s=e,r=n,i=te(),l=te(),o=te(),u=te(),d=()=>{l.value&&s.videoSource&&(s.audioSource&&s.currentLang&&s.defaultLang&&s.currentLang!==s.defaultLang?l.value.volume=.2:l.value.volume=0)},a=()=>{const U=s.playbackSpeed??1;i.value&&(i.value.playbackRate=U),l.value&&(l.value.playbackRate=U),o.value&&(o.value.playbackRate=U),u.value&&(u.value.playbackRate=U)};Ee([()=>s.currentLang,()=>s.defaultLang,()=>s.videoSource,()=>s.audioSource],()=>{d()}),Ee(()=>s.playbackSpeed,()=>{a()}),Ee(l,U=>{U&&(d(),a())}),Ee([i,o,u],()=>{a()}),nn(()=>{d(),a()});const p=()=>{j.value=!0,o.value&&l.value&&(o.value.currentTime=l.value.currentTime,o.value.currentTime===l.value.currentTime&&o.value.play()),r("play")},w=U=>{document.hidden||(j.value=!1),!l.value?.ended&&o?.value&&o.value?.pause(),console.log(U),Z(U)},y=()=>{(!o.value||o.value.ended)&&F()},C=()=>{(!l.value||l.value.ended)&&F()},T=()=>{j.value=!0,r("play")},Z=U=>{document.hidden||(j.value=!1);const P=U.target;P.duration!==P.currentTime&&r("pause")},F=()=>{j.value=!1,r("ended")},j=te(!1);let D=null;const O=async()=>{j.value=!0,i.value&&(a(),i.value.play()),l.value&&(d(),a(),l.value.play(),o.value&&(o.value.currentTime=l.value.currentTime,o.value.play())),u.value&&(a(),u.value.play()),!i.value&&!l.value&&!u.value&&(await Zt((s.duration??0)*1e3),j.value=!1,r("ended"))},B=U=>{U?.paused&&!U.ended&&U.play().catch(()=>{})},be=(U,P)=>{P.paused&&!P.ended&&(U.ended||(P.currentTime=U.currentTime),P.play().catch(()=>{}))},se=()=>{j.value&&(B(i.value),l.value&&o.value?(B(l.value),be(l.value,o.value)):B(l.value),B(u.value))},me=()=>{document.hidden&&j.value?D||(D=setInterval(se,500)):document.hidden||D&&(clearInterval(D),D=null)},re=()=>{document.hidden&&j.value&&setTimeout(se,50)};return nn(()=>{document.addEventListener("visibilitychange",me),i.value?.addEventListener("pause",re),l.value?.addEventListener("pause",re),u.value?.addEventListener("pause",re),o.value?.addEventListener("pause",re)}),cs(()=>{document.removeEventListener("visibilitychange",me),i.value?.removeEventListener("pause",re),l.value?.removeEventListener("pause",re),u.value?.removeEventListener("pause",re),o.value?.removeEventListener("pause",re),D&&(clearInterval(D),D=null)}),t({play:O}),(U,P)=>(H(),K("div",Po,[e.videoWithAudioSource?(H(),K("div",Ao,[z("video",{ref_key:"videoWithAudioRef",ref:i,src:e.videoWithAudioSource,class:"mulmocast-video mx-auto h-auto max-h-[80vh] w-auto object-contain",controls:!0,playsinline:"true",onPlay:T,onPause:Z,onEnded:F},null,40,Oo)])):e.soundEffectSource||e.videoSource?(H(),K("div",Mo,[z("video",{ref_key:"videoRef",ref:l,class:"mulmocast-video mx-auto h-auto max-h-[80vh] w-auto object-contain",src:e.soundEffectSource||e.videoSource,controls:!0,playsinline:"true",onPlay:p,onPause:w,onEnded:y},null,40,Ro),e.audioSource?(H(),K("audio",{key:0,ref_key:"audioSyncRef",ref:o,src:e.audioSource,controls:!0,class:"hidden",onEnded:C},null,40,Io)):Xe("",!0)])):e.audioSource?(H(),K("div",Lo,[e.imageSource?(H(),K("img",{key:0,src:e.imageSource,class:"mx-auto h-auto max-h-[80vh] w-auto object-contain",alt:"Background"},null,8,Fo)):(H(),K("img",{key:1,src:Wo,class:"mx-auto h-auto max-h-[80vh] w-auto object-contain",alt:"Background"})),z("audio",{ref_key:"audioRef",ref:u,class:"mulmocast-audio absolute inset-0 w-full h-full",src:e.audioSource,controls:!0,onPlay:T,onPause:Z,onEnded:F},null,40,jo)])):e.imageSource?(H(),K("div",Do,[z("img",{src:e.imageSource,class:"max-w-full max-h-full object-contain"},null,8,No)])):(H(),K("div",Ho,"No media available")),e.text?(H(),K("div",$o,[z("p",Vo,ze(e.text),1),e.originalText&&e.originalText!==e.text?(H(),K("p",Uo,ze(e.originalText),1)):Xe("",!0)])):Xe("",!0)]))}}),Ko=["value"],Bo=["value"],ko=vn({__name:"select_language",props:{modelValue:{}},emits:["update:modelValue"],setup(e,{emit:t}){const n=["en","ja"],s={en:"English",ja:"日本語"},r=t,i=l=>{const o=l.target;r("update:modelValue",o.value)};return(l,o)=>(H(),K("select",{value:e.modelValue,class:"px-4 py-2 bg-white border-2 border-gray-300 rounded-lg shadow-sm hover:border-indigo-400 focus:border-indigo-500 focus:ring-2 focus:ring-indigo-200 focus:outline-none transition-colors cursor-pointer text-base font-medium text-gray-700",onChange:i},[(H(),K(ne,null,Jt(n,u=>z("option",{key:u,value:u},ze(s[u]||u),9,Bo)),64))],40,Ko))}}),qo={class:"w-full overflow-hidden"},Go={class:"max-w-7xl mx-auto px-4"},Jo={class:"flex items-center justify-between"},Yo=["disabled"],zo={class:"px-4"},Zo=["disabled"],Xo=["src"],Qo=vn({__name:"mulmo_viewer",props:{dataSet:{},basePath:{},initPage:{},audioLang:{default:"en"},textLang:{default:"en"},playbackSpeed:{default:1}},emits:["updatedPage","update:audioLang","update:textLang","allCompleted"],setup(e,{expose:t,emit:n}){const s=e,r=n,i=s.dataSet?.beats?.length??0,l=te(s.initPage??0),o=te(!0),u=te(),d=te(),a=we({get:()=>s.audioLang,set:P=>r("update:audioLang",P||"en")}),p=we({get:()=>s.textLang,set:P=>r("update:textLang",P||"en")});Ee(()=>s.audioLang,async(P,ee)=>{if(P!==ee&&T.value){const Ae=T.value;T.value=!1,await Zt(500),Ae&&u.value&&(T.value=!0,await u.value.play())}}),Ee(()=>s.textLang,async(P,ee)=>{P!==ee&&T.value&&(await Zt(100),u.value&&await u.value.play())}),Ee(d,P=>{P&&(P.volume=.3)});const w=we(()=>s.dataSet?.beats[l.value]),y=P=>P?s.basePath+"/"+P:"",C=we(()=>y(s.dataSet?.bgmSource)),T=te(!1),Z=()=>{T.value=!0,d.value&&(d.value.volume=.3,d.value.play())},F=()=>{console.log("pause"),T.value=!1,d.value&&d.value.pause()},j=async()=>{await Zt(500),u.value&&u.value.play()},D=P=>{l.value!==P&&(l.value=P,T.value&&o.value&&j())},O=P=>{const ee=l.value+P;return ee>-1&&ee<i?(D(ee),r("updatedPage",ee),!0):!1},B=()=>{console.log("end"),o.value&&O(1)?j():(T.value=!1,d.value&&d.value.pause(),r("allCompleted"))},be={onPlay:Z,onPause:F,onEnded:B},se=we(()=>{const P=w.value,ee=P?.audioSources?.[a.value],Ae=P?.multiLinguals?.[p.value]??P?.text??"",_t=s.dataSet?.lang?P?.multiLinguals?.[s.dataSet.lang]??P?.text??"":"";return{videoWithAudioSource:y(P?.videoWithAudioSource),videoSource:y(P?.videoSource),soundEffectSource:y(P?.soundEffectSource),audioSource:y(ee),imageSource:y(P?.imageSource),index:l.value,text:Ae,originalText:_t,duration:P?.duration,defaultLang:s.dataSet?.lang,currentLang:a.value,playbackSpeed:s.playbackSpeed,...be}}),me=we(()=>s.dataSet?.beats[l.value+1]),re=we(()=>{if(l.value+1>=i)return null;const P=me.value;return{videoWithAudioSource:y(P?.videoWithAudioSource),videoSource:y(P?.videoSource),soundEffectSource:y(P?.soundEffectSource),audioSource:y(P?.audioSources?.[a.value]),imageSource:y(P?.imageSource),index:l.value+1,text:P?.multiLinguals?.[p.value]??P?.text??"",duration:P?.duration}}),U=we(()=>({MulmoPlayer:Fn,pageProps:se.value,currentPage:l.value,pageCount:i,pageMove:O,isPlaying:T.value,audioLang:a,textLang:p,SelectLanguage:ko,mediaPlayerRef:u,handlePlay:Z,handlePause:F,handleEnded:B}));return t({updatePage:D}),(P,ee)=>(H(),K(ne,null,[vl(P.$slots,"default",Ss(Qr(U.value)),()=>[z("div",qo,[z("div",Go,[z("div",Jo,[z("button",{class:"px-4 py-2 bg-gray-500 text-white rounded hover:bg-gray-600 disabled:opacity-50",disabled:l.value===0,onClick:ee[0]||(ee[0]=Ae=>O(-1))}," Prev ",8,Yo),z("div",zo,[Se(Fn,kn({ref_key:"mediaPlayer",ref:u},se.value),null,16)]),z("button",{class:"px-4 py-2 bg-gray-500 text-white rounded hover:bg-gray-600 disabled:opacity-50",disabled:l.value>=ls(i)-1,onClick:ee[1]||(ee[1]=Ae=>O(1))}," Next ",8,Zo)])])])]),re.value?Vn((H(),rn(Fn,Ss(kn({key:0},re.value)),null,16)),[[oo,!1]]):Xe("",!0),C.value?(H(),K("audio",{key:1,ref_key:"bgmRef",ref:d,src:C.value},null,8,Xo)):Xe("",!0)],64))}}),eu={class:"min-h-screen flex flex-col bg-gray-900 text-white"},tu={class:"bg-gray-800 border-b border-gray-700"},nu={class:"flex items-center gap-6 px-6 py-3"},su={key:0,class:"flex gap-2 flex-wrap"},ru=["onClick"],iu={key:0,class:"flex items-center gap-6 px-6 py-2 bg-gray-750 border-t border-gray-700"},lu={class:"flex items-center gap-2 text-sm text-gray-300"},ou=["value"],uu={class:"flex items-center gap-2 text-sm text-gray-300"},cu=["value"],fu={class:"flex-1 flex items-center justify-content p-4"},au={key:0,class:"text-center p-8 text-gray-400"},du={key:1,class:"text-center p-8 text-red-400"},hu={key:2,class:"text-center p-8 text-gray-500"},pu={key:3,class:"w-full max-w-5xl mx-auto"},gu=vn({__name:"App",setup(e){const t=te([]),n=te(null),s=te(!0),r=te(null),i=te(null),l=te(0),o=te("en"),u=te("en"),d=we(()=>i.value?.beats?.[0]?.audioSources?Object.keys(i.value.beats[0].audioSources):["en"]),a=we(()=>n.value?`/bundles/${n.value}`:"");nn(async()=>{try{const y=await fetch("/api/bundles");if(!y.ok)throw new Error("Failed to load bundles");t.value=await y.json(),t.value.length>0&&(n.value=t.value[0].path)}catch(y){r.value=y instanceof Error?y.message:"Unknown error"}finally{s.value=!1}}),Ee(n,async y=>{if(!y){i.value=null;return}try{const C=await fetch(`/bundles/${y}/mulmo_view.json`);if(!C.ok)throw new Error("Failed to load bundle data");i.value=await C.json(),l.value=0,i.value?.lang&&(o.value=i.value.lang,u.value=i.value.lang)}catch(C){r.value=C instanceof Error?C.message:"Unknown error",i.value=null}});function p(y){n.value=y}function w(y){l.value=y}return(y,C)=>(H(),K("div",eu,[z("header",tu,[z("div",nu,[C[4]||(C[4]=z("h1",{class:"text-lg font-semibold whitespace-nowrap"},"MulmoViewer Preview",-1)),t.value.length>0?(H(),K("nav",su,[(H(!0),K(ne,null,Jt(t.value,T=>(H(),K("button",{key:T.path,class:Ht(["px-3 py-1.5 rounded text-sm cursor-pointer transition-colors border-none",n.value===T.path?"bg-blue-600 text-white":"bg-gray-700 text-gray-300 hover:bg-gray-600"]),onClick:Z=>p(T.path)},ze(T.name),11,ru))),128))])):Xe("",!0)]),i.value?(H(),K("div",iu,[z("label",lu,[C[5]||(C[5]=ft(" Audio: ",-1)),Vn(z("select",{"onUpdate:modelValue":C[0]||(C[0]=T=>o.value=T),class:"bg-gray-700 border border-gray-600 text-white px-2 py-1 rounded text-sm cursor-pointer hover:bg-gray-600"},[(H(!0),K(ne,null,Jt(d.value,T=>(H(),K("option",{key:T,value:T},ze(T.toUpperCase()),9,ou))),128))],512),[[Ys,o.value]])]),z("label",uu,[C[6]||(C[6]=ft(" Text: ",-1)),Vn(z("select",{"onUpdate:modelValue":C[1]||(C[1]=T=>u.value=T),class:"bg-gray-700 border border-gray-600 text-white px-2 py-1 rounded text-sm cursor-pointer hover:bg-gray-600"},[(H(!0),K(ne,null,Jt(d.value,T=>(H(),K("option",{key:T,value:T},ze(T.toUpperCase()),9,cu))),128))],512),[[Ys,u.value]])])])):Xe("",!0)]),z("main",fu,[s.value?(H(),K("div",au,"Loading bundles...")):r.value?(H(),K("div",du,ze(r.value),1)):t.value.length===0?(H(),K("div",hu,[...C[7]||(C[7]=[ft(" No bundles found in output/ directory. ",-1),z("p",{class:"mt-2"},[ft("Run "),z("code",{class:"bg-gray-800 px-2 py-1 rounded font-mono text-sm"},"yarn run cli bundle <file>"),ft(" to generate a bundle.")],-1)])])):i.value?(H(),K("div",pu,[Se(ls(Qo),{"data-set":i.value,"base-path":a.value,"init-page":l.value,"audio-lang":o.value,"onUpdate:audioLang":C[2]||(C[2]=T=>o.value=T),"text-lang":u.value,"onUpdate:textLang":C[3]||(C[3]=T=>u.value=T),onUpdatedPage:w},null,8,["data-set","base-path","init-page","audio-lang","text-lang"])])):Xe("",!0)])]))}});Eo(gu).mount("#app");
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-green-600:oklch(62.7% .194 149.214);--color-green-700:oklch(52.7% .154 150.069);--color-indigo-200:oklch(87% .065 274.039);--color-indigo-400:oklch(67.3% .182 276.935);--color-indigo-500:oklch(58.5% .233 277.117);--color-indigo-600:oklch(51.1% .262 276.966);--color-indigo-700:oklch(45.7% .24 277.023);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-7xl:80rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-base:1rem;--text-base--line-height: 1.5 ;--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--text-xl:1.25rem;--text-xl--line-height:calc(1.75/1.25);--text-2xl:1.5rem;--text-2xl--line-height:calc(2/1.5);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-wide:.025em;--leading-relaxed:1.625;--radius-lg:.5rem;--radius-2xl:1rem;--aspect-video:16/9;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:calc(var(--spacing)*0)}.top-0{top:calc(var(--spacing)*0)}.top-2{top:calc(var(--spacing)*2)}.right-0{right:calc(var(--spacing)*0)}.bottom-0{bottom:calc(var(--spacing)*0)}.bottom-2{bottom:calc(var(--spacing)*2)}.left-0{left:calc(var(--spacing)*0)}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing)*2)}.z-50{z-index:50}.float-left{float:left}.clear-both{clear:both}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mx-auto{margin-inline:auto}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mr-4{margin-right:calc(var(--spacing)*4)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.line-clamp-3{-webkit-line-clamp:3;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.table{display:table}.aspect-video{aspect-ratio:var(--aspect-video)}.h-4{height:calc(var(--spacing)*4)}.h-6\!{height:calc(var(--spacing)*6)!important}.h-auto{height:auto}.h-full{height:100%}.max-h-\[80vh\]{max-height:80vh}.max-h-full{max-height:100%}.w-4{width:calc(var(--spacing)*4)}.w-30{width:calc(var(--spacing)*30)}.w-64{width:calc(var(--spacing)*64)}.w-auto{width:auto}.w-full{width:100%}.max-w-7xl{max-width:var(--container-7xl)}.max-w-full{max-width:100%}.flex-shrink-0{flex-shrink:0}.shrink{flex-shrink:1}.grow{flex-grow:1}.-translate-x-1\/2{--tw-translate-x: -50% ;translate:var(--tw-translate-x)var(--tw-translate-y)}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.cursor-pointer{cursor:pointer}.resize{resize:both}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-1{gap:calc(var(--spacing)*1)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-4>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*4)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*4)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*6)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*6)*calc(1 - var(--tw-space-y-reverse)))}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-t-2xl{border-top-left-radius:var(--radius-2xl);border-top-right-radius:var(--radius-2xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-gray-200{border-color:var(--color-gray-200)}.border-gray-300{border-color:var(--color-gray-300)}.bg-amber-600{background-color:var(--color-amber-600)}.bg-black{background-color:var(--color-black)}.bg-black\/60{background-color:#0009}@supports (color:color-mix(in lab,red,red)){.bg-black\/60{background-color:color-mix(in oklab,var(--color-black)60%,transparent)}}.bg-gray-200{background-color:var(--color-gray-200)}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-600{background-color:var(--color-gray-600)}.bg-green-600{background-color:var(--color-green-600)}.bg-indigo-600{background-color:var(--color-indigo-600)}.bg-red-600{background-color:var(--color-red-600)}.bg-white{background-color:var(--color-white)}.object-contain{object-fit:contain}.object-cover{object-fit:cover}.p-2{padding:calc(var(--spacing)*2)}.p-4{padding:calc(var(--spacing)*4)}.p-6{padding:calc(var(--spacing)*6)}.p-10{padding:calc(var(--spacing)*10)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-1{padding-block:calc(var(--spacing)*1)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.py-12{padding-block:calc(var(--spacing)*12)}.text-center{text-align:center}.text-left{text-align:left}.font-sans{font-family:var(--font-sans)}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-red-600{color:var(--color-red-600)}.text-white{color:var(--color-white)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.opacity-0\!{opacity:0!important}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-300{--tw-duration:.3s;transition-duration:.3s}@media(hover:hover){.group-hover\:text-indigo-600:is(:where(.group):hover *){color:var(--color-indigo-600)}.hover\:border-gray-400:hover{border-color:var(--color-gray-400)}.hover\:border-indigo-400:hover{border-color:var(--color-indigo-400)}.hover\:bg-amber-700:hover{background-color:var(--color-amber-700)}.hover\:bg-black\/80:hover{background-color:#000c}@supports (color:color-mix(in lab,red,red)){.hover\:bg-black\/80:hover{background-color:color-mix(in oklab,var(--color-black)80%,transparent)}}.hover\:bg-gray-600:hover{background-color:var(--color-gray-600)}.hover\:bg-gray-700:hover{background-color:var(--color-gray-700)}.hover\:bg-green-700:hover{background-color:var(--color-green-700)}.hover\:bg-indigo-700:hover{background-color:var(--color-indigo-700)}.hover\:bg-red-700:hover{background-color:var(--color-red-700)}.hover\:text-gray-700:hover{color:var(--color-gray-700)}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}}.focus\:border-indigo-500:focus{border-color:var(--color-indigo-500)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-indigo-200:focus{--tw-ring-color:var(--color-indigo-200)}.focus\:ring-indigo-500:focus{--tw-ring-color:var(--color-indigo-500)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.disabled\:opacity-50:disabled{opacity:.5}@media(min-width:40rem){.sm\:block{display:block}.sm\:flex{display:flex}.sm\:hidden{display:none}.sm\:inline-block{display:inline-block}.sm\:w-auto{width:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:gap-4{gap:calc(var(--spacing)*4)}.sm\:py-4{padding-block:calc(var(--spacing)*4)}.sm\:text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}}@media(min-width:64rem){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(min-width:80rem){.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}}.mulmocast-video::-webkit-media-controls-enclosure{background-color:#00000080!important;border-radius:0!important}.mulmocast-video::-webkit-media-controls-current-time-display{-webkit-text-fill-color:#fff!important}.mulmocast-video::-webkit-media-controls-time-remaining-display{-webkit-text-fill-color:#fff!important}.mulmocast-video::-webkit-media-controls-play-button{filter:brightness(1.1)}.mulmocast-video::-webkit-media-controls-mute-button{filter:brightness(1.1)}.mulmocast-video::-webkit-media-controls-overlay-play-button{filter:brightness(1.1)}.mulmocast-video::-webkit-media-controls-fullscreen-button{filter:brightness(1.1)}.mulmocast-video::-webkit-media-controls{opacity:0;transition:opacity .3s}.mulmocast-video:hover::-webkit-media-controls{opacity:1}.mulmocast-audio::-webkit-media-controls-enclosure{background-color:#00000080!important;border-radius:0!important}.mulmocast-audio::-webkit-media-controls-current-time-display{-webkit-text-fill-color:#fff!important}.mulmocast-audio::-webkit-media-controls-time-remaining-display{-webkit-text-fill-color:#fff!important}.mulmocast-audio::-webkit-media-controls-play-button{filter:brightness(1.1)}.mulmocast-audio::-webkit-media-controls-mute-button{filter:brightness(1.1)}.mulmocast-audio::-webkit-media-controls{opacity:0;transition:opacity .3s}.mulmocast-audio:hover::-webkit-media-controls{opacity:1}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-leading{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}.text-gray-800{color:#fff!important}.text-gray-400{color:#bbb!important}.mt-4.px-6.py-4{background:#1f2937;border-radius:.5rem;margin-top:1rem}.px-4.py-2.bg-gray-500{margin:.5rem}.items-center.justify-center.w-full{padding:.5rem}.max-w-7xl{padding:.5rem;margin:.5rem}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-400:oklch(70.4% .191 22.216);--color-blue-600:oklch(54.6% .245 262.881);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-white:#fff;--spacing:.25rem;--container-5xl:64rem;--container-7xl:80rem;--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-semibold:600;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.mx-auto{margin-inline:auto}.mt-2{margin-top:calc(var(--spacing)*2)}.flex{display:flex}.min-h-screen{min-height:100vh}.w-full{width:100%}.max-w-5xl{max-width:var(--container-5xl)}.max-w-7xl{max-width:var(--container-7xl)}.flex-1{flex:1}.cursor-pointer{cursor:pointer}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.gap-2{gap:calc(var(--spacing)*2)}.gap-6{gap:calc(var(--spacing)*6)}.rounded{border-radius:.25rem}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-none{--tw-border-style:none;border-style:none}.border-gray-600{border-color:var(--color-gray-600)}.border-gray-700{border-color:var(--color-gray-700)}.bg-blue-600{background-color:var(--color-blue-600)}.bg-gray-500{background-color:var(--color-gray-500)}.bg-gray-700{background-color:var(--color-gray-700)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900{background-color:var(--color-gray-900)}.p-4{padding:calc(var(--spacing)*4)}.p-8{padding:calc(var(--spacing)*8)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.text-center{text-align:center}.font-mono{font-family:var(--font-mono)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.whitespace-nowrap{white-space:nowrap}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-800{color:var(--color-gray-800)}.text-red-400{color:var(--color-red-400)}.text-white{color:var(--color-white)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}@media(hover:hover){.hover\:bg-gray-600:hover{background-color:var(--color-gray-600)}}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>MulmoViewer Preview</title>
|
|
7
|
+
<script type="module" crossorigin src="./assets/index-CLnVMYbH.js"></script>
|
|
8
|
+
<link rel="stylesheet" crossorigin href="./assets/index-aXYemk-W.css">
|
|
9
|
+
</head>
|
|
10
|
+
<body>
|
|
11
|
+
<div id="app"></div>
|
|
12
|
+
</body>
|
|
13
|
+
</html>
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../src/vue/main.ts"],"names":[],"mappings":"AAEA,OAAO,aAAa,CAAC"}
|
package/lib/vue/main.js
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const vue_1 = require("vue");
|
|
7
|
+
const App_vue_1 = __importDefault(require("./App.vue"));
|
|
8
|
+
require("./style.css");
|
|
9
|
+
(0, vue_1.createApp)(App_vue_1.default).mount("#app");
|
|
10
|
+
//# sourceMappingURL=main.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/vue/main.ts"],"names":[],"mappings":";;;;;AAAA,6BAAgC;AAChC,wDAA4B;AAC5B,uBAAqB;AAErB,IAAA,eAAS,EAAC,iBAAG,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mulmocast/slide",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.5",
|
|
4
4
|
"description": "Convert presentations (Keynote, PowerPoint, PDF, Marp) to MulmoScript format",
|
|
5
5
|
"homepage": "https://github.com/receptron/MulmoCast-Slides#readme",
|
|
6
6
|
"bugs": {
|
|
@@ -23,6 +23,10 @@
|
|
|
23
23
|
],
|
|
24
24
|
"scripts": {
|
|
25
25
|
"build": "tsc",
|
|
26
|
+
"build:vue": "vite build",
|
|
27
|
+
"build:all": "tsc && vite build",
|
|
28
|
+
"dev": "vite",
|
|
29
|
+
"preview": "tsx src/cli.ts preview",
|
|
26
30
|
"test": "tsx --test ./tests/test_*.ts",
|
|
27
31
|
"lint": "eslint src/",
|
|
28
32
|
"lint:fix": "eslint src/ --fix",
|
|
@@ -45,23 +49,29 @@
|
|
|
45
49
|
"dotenv": "^17.2.3",
|
|
46
50
|
"franc": "^6.2.0",
|
|
47
51
|
"mulmocast": "^2.1.16",
|
|
52
|
+
"mulmocast-viewer": "^0.1.11",
|
|
48
53
|
"node-pptx-parser": "^1.0.1",
|
|
49
54
|
"openai": "^6.15.0",
|
|
50
55
|
"pdf-parse": "^2.4.5",
|
|
51
56
|
"ppt-png": "^2.2.0",
|
|
52
57
|
"tsx": "^4.7.0",
|
|
58
|
+
"vue": "^3.5.26",
|
|
53
59
|
"yargs": "^18.0.0"
|
|
54
60
|
},
|
|
55
61
|
"devDependencies": {
|
|
62
|
+
"@tailwindcss/vite": "^4.1.18",
|
|
56
63
|
"@types/node": "^25.0.3",
|
|
57
64
|
"@types/yargs": "^17.0.35",
|
|
58
65
|
"@typescript-eslint/eslint-plugin": "^8.51.0",
|
|
59
66
|
"@typescript-eslint/parser": "^8.51.0",
|
|
67
|
+
"@vitejs/plugin-vue": "^6.0.3",
|
|
60
68
|
"eslint": "^9.39.2",
|
|
61
69
|
"eslint-config-prettier": "^10.1.8",
|
|
62
70
|
"eslint-plugin-prettier": "^5.5.4",
|
|
63
71
|
"prettier": "^3.7.4",
|
|
64
|
-
"
|
|
72
|
+
"tailwindcss": "^4.1.18",
|
|
73
|
+
"typescript": "^5.9.3",
|
|
74
|
+
"vite": "^7.3.1"
|
|
65
75
|
},
|
|
66
76
|
"resolutions": {
|
|
67
77
|
"unicorn-magic": "0.2.0"
|