@open-file-viewer/core 0.1.23 → 0.1.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -0
- package/dist/cpp-EDJNJWGR.js +4 -0
- package/dist/cpp-EDJNJWGR.js.map +1 -0
- package/dist/index.cjs +254 -97
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +195 -97
- package/dist/index.js.map +1 -1
- package/dist/json5-EAGAEIPM.js +4 -0
- package/dist/json5-EAGAEIPM.js.map +1 -0
- package/dist/php-TTFBGZ5Q.js +4 -0
- package/dist/php-TTFBGZ5Q.js.map +1 -0
- package/dist/scala-V5QQ35QA.js +4 -0
- package/dist/scala-V5QQ35QA.js.map +1 -0
- package/dist/tsx-A26VGWUK.js +5 -0
- package/dist/tsx-A26VGWUK.js.map +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4238,6 +4238,7 @@ var mimeLangMap = {
|
|
|
4238
4238
|
};
|
|
4239
4239
|
var MAX_HIGHLIGHT_CHARS = 18e4;
|
|
4240
4240
|
var MAX_RENDER_CHARS = 6e5;
|
|
4241
|
+
var prismLanguageLoads = /* @__PURE__ */ new Map();
|
|
4241
4242
|
function textPlugin() {
|
|
4242
4243
|
return {
|
|
4243
4244
|
name: "text",
|
|
@@ -4269,10 +4270,10 @@ function textPlugin() {
|
|
|
4269
4270
|
]);
|
|
4270
4271
|
const parseMarkdown = markedModule.marked?.parse || markedModule.parse || markedModule.default?.parse;
|
|
4271
4272
|
const Prism2 = PrismModule2.default || PrismModule2;
|
|
4272
|
-
const
|
|
4273
|
+
const DOMPurify3 = DOMPurifyModule.default || DOMPurifyModule;
|
|
4273
4274
|
const container = document.createElement("div");
|
|
4274
4275
|
container.className = "ofv-markdown-body";
|
|
4275
|
-
container.innerHTML =
|
|
4276
|
+
container.innerHTML = DOMPurify3.sanitize(parseMarkdown(text), {
|
|
4276
4277
|
USE_PROFILES: { html: true },
|
|
4277
4278
|
ADD_ATTR: ["target"]
|
|
4278
4279
|
});
|
|
@@ -4281,6 +4282,14 @@ function textPlugin() {
|
|
|
4281
4282
|
try {
|
|
4282
4283
|
const codeBlocks = container.querySelectorAll("pre code");
|
|
4283
4284
|
if (codeBlocks.length > 0) {
|
|
4285
|
+
const languages = /* @__PURE__ */ new Set();
|
|
4286
|
+
codeBlocks.forEach((block) => {
|
|
4287
|
+
const language = getPrismLanguageFromElement(block) || getPrismLanguageFromElement(block.parentElement);
|
|
4288
|
+
if (language) {
|
|
4289
|
+
languages.add(language);
|
|
4290
|
+
}
|
|
4291
|
+
});
|
|
4292
|
+
await Promise.all([...languages].map((language) => loadPrismLanguage(language)));
|
|
4284
4293
|
codeBlocks.forEach((block) => {
|
|
4285
4294
|
const parent = block.parentElement;
|
|
4286
4295
|
if (parent && !parent.className.includes("language-")) {
|
|
@@ -4309,97 +4318,7 @@ function textPlugin() {
|
|
|
4309
4318
|
const Prism = PrismModule.default || PrismModule;
|
|
4310
4319
|
if (lang !== "none") {
|
|
4311
4320
|
try {
|
|
4312
|
-
|
|
4313
|
-
await import("prismjs/components/prism-typescript");
|
|
4314
|
-
} else if (lang === "python") {
|
|
4315
|
-
await import("prismjs/components/prism-python");
|
|
4316
|
-
} else if (lang === "json") {
|
|
4317
|
-
await import("prismjs/components/prism-json");
|
|
4318
|
-
} else if (lang === "json5") {
|
|
4319
|
-
await import("prismjs/components/prism-json5");
|
|
4320
|
-
} else if (lang === "yaml") {
|
|
4321
|
-
await import("prismjs/components/prism-yaml");
|
|
4322
|
-
} else if (lang === "toml") {
|
|
4323
|
-
await import("prismjs/components/prism-toml");
|
|
4324
|
-
} else if (lang === "ini") {
|
|
4325
|
-
await import("prismjs/components/prism-ini");
|
|
4326
|
-
} else if (lang === "properties") {
|
|
4327
|
-
await import("prismjs/components/prism-properties");
|
|
4328
|
-
} else if (lang === "editorconfig") {
|
|
4329
|
-
await import("prismjs/components/prism-editorconfig");
|
|
4330
|
-
} else if (lang === "ignore") {
|
|
4331
|
-
await import("prismjs/components/prism-ignore");
|
|
4332
|
-
} else if (lang === "protobuf") {
|
|
4333
|
-
await import("prismjs/components/prism-protobuf");
|
|
4334
|
-
} else if (lang === "hcl") {
|
|
4335
|
-
await import("prismjs/components/prism-hcl");
|
|
4336
|
-
} else if (lang === "latex") {
|
|
4337
|
-
await import("prismjs/components/prism-latex");
|
|
4338
|
-
} else if (lang === "dot") {
|
|
4339
|
-
await import("prismjs/components/prism-dot");
|
|
4340
|
-
} else if (lang === "http") {
|
|
4341
|
-
await import("prismjs/components/prism-http");
|
|
4342
|
-
} else if (lang === "bash") {
|
|
4343
|
-
await import("prismjs/components/prism-bash");
|
|
4344
|
-
} else if (lang === "powershell") {
|
|
4345
|
-
await import("prismjs/components/prism-powershell");
|
|
4346
|
-
} else if (lang === "batch") {
|
|
4347
|
-
await import("prismjs/components/prism-batch");
|
|
4348
|
-
} else if (lang === "docker") {
|
|
4349
|
-
await import("prismjs/components/prism-docker");
|
|
4350
|
-
} else if (lang === "makefile") {
|
|
4351
|
-
await import("prismjs/components/prism-makefile");
|
|
4352
|
-
} else if (lang === "ruby") {
|
|
4353
|
-
await import("prismjs/components/prism-ruby");
|
|
4354
|
-
} else if (lang === "nginx") {
|
|
4355
|
-
await import("prismjs/components/prism-nginx");
|
|
4356
|
-
} else if (lang === "groovy") {
|
|
4357
|
-
await import("prismjs/components/prism-groovy");
|
|
4358
|
-
} else if (lang === "graphql") {
|
|
4359
|
-
await import("prismjs/components/prism-graphql");
|
|
4360
|
-
} else if (lang === "csharp") {
|
|
4361
|
-
await import("prismjs/components/prism-csharp");
|
|
4362
|
-
} else if (lang === "rust") {
|
|
4363
|
-
await import("prismjs/components/prism-rust");
|
|
4364
|
-
} else if (lang === "go") {
|
|
4365
|
-
await import("prismjs/components/prism-go");
|
|
4366
|
-
} else if (lang === "ruby") {
|
|
4367
|
-
await import("prismjs/components/prism-ruby");
|
|
4368
|
-
} else if (lang === "swift") {
|
|
4369
|
-
await import("prismjs/components/prism-swift");
|
|
4370
|
-
} else if (lang === "kotlin") {
|
|
4371
|
-
await import("prismjs/components/prism-kotlin");
|
|
4372
|
-
} else if (lang === "scala") {
|
|
4373
|
-
await import("prismjs/components/prism-scala");
|
|
4374
|
-
} else if (lang === "lua") {
|
|
4375
|
-
await import("prismjs/components/prism-lua");
|
|
4376
|
-
} else if (lang === "r") {
|
|
4377
|
-
await import("prismjs/components/prism-r");
|
|
4378
|
-
} else if (lang === "dart") {
|
|
4379
|
-
await import("prismjs/components/prism-dart");
|
|
4380
|
-
} else if (lang === "elm") {
|
|
4381
|
-
await import("prismjs/components/prism-elm");
|
|
4382
|
-
} else if (lang === "elixir") {
|
|
4383
|
-
await import("prismjs/components/prism-elixir");
|
|
4384
|
-
} else if (lang === "clojure") {
|
|
4385
|
-
await import("prismjs/components/prism-clojure");
|
|
4386
|
-
} else if (lang === "erlang") {
|
|
4387
|
-
await import("prismjs/components/prism-erlang");
|
|
4388
|
-
} else if (lang === "fsharp") {
|
|
4389
|
-
await import("prismjs/components/prism-fsharp");
|
|
4390
|
-
} else if (lang === "haskell") {
|
|
4391
|
-
await import("prismjs/components/prism-haskell");
|
|
4392
|
-
} else if (lang === "sql") {
|
|
4393
|
-
await import("prismjs/components/prism-sql");
|
|
4394
|
-
} else if (lang === "cpp") {
|
|
4395
|
-
await import("prismjs/components/prism-c");
|
|
4396
|
-
await import("prismjs/components/prism-cpp");
|
|
4397
|
-
} else if (lang === "java") {
|
|
4398
|
-
await import("prismjs/components/prism-java");
|
|
4399
|
-
} else if (lang === "php") {
|
|
4400
|
-
await import("prismjs/components/prism-markup-templating");
|
|
4401
|
-
await import("prismjs/components/prism-php");
|
|
4402
|
-
}
|
|
4321
|
+
await loadPrismLanguage(lang);
|
|
4403
4322
|
} catch (e) {
|
|
4404
4323
|
console.warn(`Prism failed to load language component for: ${lang}`, e);
|
|
4405
4324
|
}
|
|
@@ -4524,6 +4443,183 @@ function textPlugin() {
|
|
|
4524
4443
|
}
|
|
4525
4444
|
};
|
|
4526
4445
|
}
|
|
4446
|
+
function getPrismLanguageFromElement(element) {
|
|
4447
|
+
if (!element) {
|
|
4448
|
+
return void 0;
|
|
4449
|
+
}
|
|
4450
|
+
for (const className of element.classList) {
|
|
4451
|
+
if (className.startsWith("language-") && className.length > 9) {
|
|
4452
|
+
return className.slice(9).toLowerCase();
|
|
4453
|
+
}
|
|
4454
|
+
}
|
|
4455
|
+
return void 0;
|
|
4456
|
+
}
|
|
4457
|
+
async function loadPrismLanguage(language) {
|
|
4458
|
+
if (["none", "plain", "plaintext", "text", "markup", "css", "clike", "javascript"].includes(language)) {
|
|
4459
|
+
return;
|
|
4460
|
+
}
|
|
4461
|
+
const existing = prismLanguageLoads.get(language);
|
|
4462
|
+
if (existing) {
|
|
4463
|
+
return existing;
|
|
4464
|
+
}
|
|
4465
|
+
const loading = loadPrismLanguageComponent(language).catch((error) => {
|
|
4466
|
+
prismLanguageLoads.delete(language);
|
|
4467
|
+
throw error;
|
|
4468
|
+
});
|
|
4469
|
+
prismLanguageLoads.set(language, loading);
|
|
4470
|
+
return loading;
|
|
4471
|
+
}
|
|
4472
|
+
async function loadPrismLanguageComponent(language) {
|
|
4473
|
+
switch (language) {
|
|
4474
|
+
case "typescript":
|
|
4475
|
+
await import("prismjs/components/prism-typescript");
|
|
4476
|
+
break;
|
|
4477
|
+
case "jsx":
|
|
4478
|
+
await import("prismjs/components/prism-jsx");
|
|
4479
|
+
break;
|
|
4480
|
+
case "tsx":
|
|
4481
|
+
await import("./tsx-A26VGWUK.js");
|
|
4482
|
+
break;
|
|
4483
|
+
case "python":
|
|
4484
|
+
await import("prismjs/components/prism-python");
|
|
4485
|
+
break;
|
|
4486
|
+
case "json":
|
|
4487
|
+
await import("prismjs/components/prism-json");
|
|
4488
|
+
break;
|
|
4489
|
+
case "json5":
|
|
4490
|
+
await import("./json5-EAGAEIPM.js");
|
|
4491
|
+
break;
|
|
4492
|
+
case "yaml":
|
|
4493
|
+
await import("prismjs/components/prism-yaml");
|
|
4494
|
+
break;
|
|
4495
|
+
case "toml":
|
|
4496
|
+
await import("prismjs/components/prism-toml");
|
|
4497
|
+
break;
|
|
4498
|
+
case "ini":
|
|
4499
|
+
await import("prismjs/components/prism-ini");
|
|
4500
|
+
break;
|
|
4501
|
+
case "properties":
|
|
4502
|
+
await import("prismjs/components/prism-properties");
|
|
4503
|
+
break;
|
|
4504
|
+
case "editorconfig":
|
|
4505
|
+
await import("prismjs/components/prism-editorconfig");
|
|
4506
|
+
break;
|
|
4507
|
+
case "ignore":
|
|
4508
|
+
await import("prismjs/components/prism-ignore");
|
|
4509
|
+
break;
|
|
4510
|
+
case "protobuf":
|
|
4511
|
+
await import("prismjs/components/prism-protobuf");
|
|
4512
|
+
break;
|
|
4513
|
+
case "hcl":
|
|
4514
|
+
await import("prismjs/components/prism-hcl");
|
|
4515
|
+
break;
|
|
4516
|
+
case "latex":
|
|
4517
|
+
await import("prismjs/components/prism-latex");
|
|
4518
|
+
break;
|
|
4519
|
+
case "dot":
|
|
4520
|
+
await import("prismjs/components/prism-dot");
|
|
4521
|
+
break;
|
|
4522
|
+
case "http":
|
|
4523
|
+
await import("prismjs/components/prism-http");
|
|
4524
|
+
break;
|
|
4525
|
+
case "bash":
|
|
4526
|
+
await import("prismjs/components/prism-bash");
|
|
4527
|
+
break;
|
|
4528
|
+
case "powershell":
|
|
4529
|
+
await import("prismjs/components/prism-powershell");
|
|
4530
|
+
break;
|
|
4531
|
+
case "batch":
|
|
4532
|
+
await import("prismjs/components/prism-batch");
|
|
4533
|
+
break;
|
|
4534
|
+
case "docker":
|
|
4535
|
+
await import("prismjs/components/prism-docker");
|
|
4536
|
+
break;
|
|
4537
|
+
case "makefile":
|
|
4538
|
+
await import("prismjs/components/prism-makefile");
|
|
4539
|
+
break;
|
|
4540
|
+
case "ruby":
|
|
4541
|
+
await import("prismjs/components/prism-ruby");
|
|
4542
|
+
break;
|
|
4543
|
+
case "nginx":
|
|
4544
|
+
await import("prismjs/components/prism-nginx");
|
|
4545
|
+
break;
|
|
4546
|
+
case "groovy":
|
|
4547
|
+
await import("prismjs/components/prism-groovy");
|
|
4548
|
+
break;
|
|
4549
|
+
case "graphql":
|
|
4550
|
+
await import("prismjs/components/prism-graphql");
|
|
4551
|
+
break;
|
|
4552
|
+
case "csharp":
|
|
4553
|
+
await import("prismjs/components/prism-csharp");
|
|
4554
|
+
break;
|
|
4555
|
+
case "rust":
|
|
4556
|
+
await import("prismjs/components/prism-rust");
|
|
4557
|
+
break;
|
|
4558
|
+
case "go":
|
|
4559
|
+
await import("prismjs/components/prism-go");
|
|
4560
|
+
break;
|
|
4561
|
+
case "swift":
|
|
4562
|
+
await import("prismjs/components/prism-swift");
|
|
4563
|
+
break;
|
|
4564
|
+
case "kotlin":
|
|
4565
|
+
await import("prismjs/components/prism-kotlin");
|
|
4566
|
+
break;
|
|
4567
|
+
case "java":
|
|
4568
|
+
await import("prismjs/components/prism-java");
|
|
4569
|
+
break;
|
|
4570
|
+
case "scala":
|
|
4571
|
+
await import("./scala-V5QQ35QA.js");
|
|
4572
|
+
break;
|
|
4573
|
+
case "lua":
|
|
4574
|
+
await import("prismjs/components/prism-lua");
|
|
4575
|
+
break;
|
|
4576
|
+
case "r":
|
|
4577
|
+
await import("prismjs/components/prism-r");
|
|
4578
|
+
break;
|
|
4579
|
+
case "dart":
|
|
4580
|
+
await import("prismjs/components/prism-dart");
|
|
4581
|
+
break;
|
|
4582
|
+
case "elm":
|
|
4583
|
+
await import("prismjs/components/prism-elm");
|
|
4584
|
+
break;
|
|
4585
|
+
case "elixir":
|
|
4586
|
+
await import("prismjs/components/prism-elixir");
|
|
4587
|
+
break;
|
|
4588
|
+
case "clojure":
|
|
4589
|
+
await import("prismjs/components/prism-clojure");
|
|
4590
|
+
break;
|
|
4591
|
+
case "erlang":
|
|
4592
|
+
await import("prismjs/components/prism-erlang");
|
|
4593
|
+
break;
|
|
4594
|
+
case "fsharp":
|
|
4595
|
+
await import("prismjs/components/prism-fsharp");
|
|
4596
|
+
break;
|
|
4597
|
+
case "haskell":
|
|
4598
|
+
await import("prismjs/components/prism-haskell");
|
|
4599
|
+
break;
|
|
4600
|
+
case "sql":
|
|
4601
|
+
await import("prismjs/components/prism-sql");
|
|
4602
|
+
break;
|
|
4603
|
+
case "c":
|
|
4604
|
+
await import("prismjs/components/prism-c");
|
|
4605
|
+
break;
|
|
4606
|
+
case "cpp":
|
|
4607
|
+
await import("./cpp-EDJNJWGR.js");
|
|
4608
|
+
break;
|
|
4609
|
+
case "scss":
|
|
4610
|
+
await import("prismjs/components/prism-scss");
|
|
4611
|
+
break;
|
|
4612
|
+
case "less":
|
|
4613
|
+
await import("prismjs/components/prism-less");
|
|
4614
|
+
break;
|
|
4615
|
+
case "markup-templating":
|
|
4616
|
+
await import("prismjs/components/prism-markup-templating");
|
|
4617
|
+
break;
|
|
4618
|
+
case "php":
|
|
4619
|
+
await import("./php-TTFBGZ5Q.js");
|
|
4620
|
+
break;
|
|
4621
|
+
}
|
|
4622
|
+
}
|
|
4527
4623
|
function createTextZoomController(target, cssVariable, ctx) {
|
|
4528
4624
|
let zoom = getInitialZoom(ctx, 0.5, 3);
|
|
4529
4625
|
const apply = () => {
|
|
@@ -12935,9 +13031,9 @@ function getIcon(name, dir) {
|
|
|
12935
13031
|
}
|
|
12936
13032
|
|
|
12937
13033
|
// src/plugins/email.ts
|
|
12938
|
-
import DOMPurify3 from "dompurify";
|
|
12939
13034
|
var emailExtensions = /* @__PURE__ */ new Set(["eml", "msg", "mbox"]);
|
|
12940
13035
|
var emailMimeTypes = /* @__PURE__ */ new Set(["message/rfc822", "application/vnd.ms-outlook", "application/mbox"]);
|
|
13036
|
+
var domPurifyLoader;
|
|
12941
13037
|
var emailMimeFormatMap = {
|
|
12942
13038
|
"message/rfc822": "eml",
|
|
12943
13039
|
"application/vnd.ms-outlook": "msg",
|
|
@@ -12950,6 +13046,8 @@ function emailPlugin() {
|
|
|
12950
13046
|
return emailExtensions.has(file.extension) || emailMimeTypes.has(file.mimeType);
|
|
12951
13047
|
},
|
|
12952
13048
|
async render(ctx) {
|
|
13049
|
+
const DOMPurifyModule = await (domPurifyLoader ||= import("dompurify"));
|
|
13050
|
+
const DOMPurify3 = DOMPurifyModule.default;
|
|
12953
13051
|
const panel = createPanel("ofv-email");
|
|
12954
13052
|
ctx.viewport.append(panel);
|
|
12955
13053
|
const url = createObjectUrl(ctx.file);
|
|
@@ -13083,7 +13181,7 @@ function emailPlugin() {
|
|
|
13083
13181
|
}
|
|
13084
13182
|
});
|
|
13085
13183
|
html = nextHtml;
|
|
13086
|
-
const sanitizedHtml = sanitizeEmailHtml(html);
|
|
13184
|
+
const sanitizedHtml = sanitizeEmailHtml(html, DOMPurify3);
|
|
13087
13185
|
const iframe = document.createElement("iframe");
|
|
13088
13186
|
iframe.className = "ofv-email-body-iframe";
|
|
13089
13187
|
iframe.setAttribute("sandbox", "allow-same-origin allow-popups allow-popups-to-escape-sandbox");
|
|
@@ -13376,8 +13474,8 @@ function getMimeType(name) {
|
|
|
13376
13474
|
};
|
|
13377
13475
|
return ext ? map[ext] || "application/octet-stream" : "application/octet-stream";
|
|
13378
13476
|
}
|
|
13379
|
-
function sanitizeEmailHtml(html) {
|
|
13380
|
-
return
|
|
13477
|
+
function sanitizeEmailHtml(html, purifier) {
|
|
13478
|
+
return purifier.sanitize(html, {
|
|
13381
13479
|
USE_PROFILES: { html: true },
|
|
13382
13480
|
ADD_ATTR: ["target"],
|
|
13383
13481
|
ALLOWED_URI_REGEXP: /^(?:(?:https?|mailto|tel|blob|cid):|[^a-z]|[a-z+.-]+(?:[^a-z+.-:]|$))/i
|