@paroicms/quill-editor-plugin 1.33.1 → 1.34.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { isObj, strVal, strValOrUndef } from "@paroi/data-formatters-lib";
2
2
  import { isJsonFieldValue } from "@paroicms/public-anywhere-lib";
3
- import { escapeHtml, resolveModuleDirectory, } from "@paroicms/public-server-lib";
3
+ import { escapeHtml, makeStylesheetLinkAsyncTag, resolveModuleDirectory, } from "@paroicms/public-server-lib";
4
4
  import { readFileSync } from "node:fs";
5
5
  import { dirname, join } from "node:path";
6
6
  import { convertQuillDeltaToHtml, convertQuillDeltaToPlainText } from "./quill-delta.js";
@@ -22,28 +22,52 @@ const plugin = {
22
22
  const delta = value.j;
23
23
  if (options.outputType === "plainText")
24
24
  return convertQuillDeltaToPlainText(service, delta);
25
+ service.setRenderState("paQuillEditor:html", true);
25
26
  return convertQuillDeltaToHtml(service, delta, options);
26
27
  });
27
- service.addHeadTag(`<link rel="stylesheet" href="${escapeHtml(`${service.pluginAssetsUrl}/public-front-plugin.css`)}">`, `<script type="module" src="${escapeHtml(`${service.pluginAssetsUrl}/public-front-plugin.mjs`)}"></script>`);
28
+ service.registerHeadTags(({ state }) => {
29
+ if (!state.get("paQuillEditor:html"))
30
+ return;
31
+ const tags = [
32
+ makeStylesheetLinkAsyncTag(`${service.pluginAssetsUrl}/public-front-plugin.css`),
33
+ ];
34
+ if (state.get("paQuillEditor:zoomable")) {
35
+ tags.push(`<script type="module" src="${escapeHtml(`${service.pluginAssetsUrl}/public-front-plugin.mjs`)}" async></script>`);
36
+ }
37
+ return tags;
38
+ });
28
39
  if (service.configuration.backOffice?.code) {
29
- service.addHeadTag(`<link rel="stylesheet" href="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.10.0/build/styles/default.min.css">`, `<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.10.0/build/highlight.min.js"></script>`, `<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.10.0/build/languages/typescript.min.js"></script>`, `<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.10.0/build/languages/javascript.min.js"></script>`, `<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.10.0/build/languages/xml.min.js"></script>`, `<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.10.0/build/languages/json.min.js"></script>`, `<script>
30
- hljs.highlightAll();
40
+ service.registerHeadTags(({ state }) => {
41
+ if (!state.get("paQuillEditor:html"))
42
+ return;
43
+ return [
44
+ makeStylesheetLinkAsyncTag("https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.10.0/build/styles/default.min.css"),
45
+ `<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.10.0/build/highlight.min.js" defer></script>`,
46
+ `<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.10.0/build/languages/typescript.min.js" defer></script>`,
47
+ `<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.10.0/build/languages/javascript.min.js" defer></script>`,
48
+ `<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.10.0/build/languages/xml.min.js" defer></script>`,
49
+ `<script src="https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.10.0/build/languages/json.min.js" defer></script>`,
50
+ `<script>
31
51
  document.addEventListener("DOMContentLoaded", () => {
52
+ hljs.highlightAll();
32
53
  const list = document.querySelectorAll("pre[data-language]");
33
54
  for (const el of list) {
34
55
  el.classList.add(\`language-\${el.dataset.language}\`);
35
56
  hljs.highlightElement(el);
36
57
  }
37
58
  });
38
- </script>`);
59
+ </script>`,
60
+ ];
61
+ });
39
62
  }
40
63
  service.registerLiquidFilter("imageZoomUrl", (service) => {
41
64
  service.pluginService.logger.warn(`"imageZoomUrl" filter is deprecated, use instead: <img ... {{ media | zoomable }}>`);
42
65
  return "";
43
66
  });
44
- service.registerLiquidFilter("zoomable", async (_service, val) => {
67
+ service.registerLiquidFilter("zoomable", async (service, val) => {
45
68
  if (!val)
46
69
  return "";
70
+ service.setRenderState("paQuillEditor:zoomable", true);
47
71
  const mediaId = typeof val === "string"
48
72
  ? val
49
73
  : val && typeof val === "object" && "mediaId" in val && typeof val.mediaId === "string"
@@ -66,6 +66,7 @@ async function mediaBlotProcessing(service, obj, options) {
66
66
  const figureAttributes = [`class="Fig${value.align ? ` ${escapeHtml(value.align)}` : ""}"`];
67
67
  if (value.zoomable) {
68
68
  figureAttributes.push(`data-zoomable="${escapeHtml(media.mediaId)}"`);
69
+ service.setRenderState("paQuillEditor:zoomable", true);
69
70
  }
70
71
  const imgTagAttributes = [
71
72
  `class="Fig-media"`,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@paroicms/quill-editor-plugin",
3
- "version": "1.33.1",
3
+ "version": "1.34.0",
4
4
  "description": "Quill Editor plugin for ParoiCMS",
5
5
  "keywords": [
6
6
  "paroicms",
@@ -40,7 +40,7 @@
40
40
  "devDependencies": {
41
41
  "@paroicms/public-anywhere-lib": "0.23.1",
42
42
  "@paroicms/public-bo-lib": "0.24.1",
43
- "@paroicms/public-server-lib": "0.34.1",
43
+ "@paroicms/public-server-lib": "0.35.0",
44
44
  "@solid-primitives/i18n": "~2.2.1",
45
45
  "@types/node": "~24.0.1",
46
46
  "highlight.js": "~11.11.1",