markdown-flow-ui 0.2.3-dev.2 → 0.2.3

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.
Files changed (32) hide show
  1. package/dist/components/ContentRender/SandboxApp.cjs.js +2 -2
  2. package/dist/components/ContentRender/SandboxApp.cjs.js.map +1 -1
  3. package/dist/components/ContentRender/SandboxApp.es.js +106 -95
  4. package/dist/components/ContentRender/SandboxApp.es.js.map +1 -1
  5. package/dist/components/ContentRender/utils/link-targets.cjs.js +2 -0
  6. package/dist/components/ContentRender/utils/link-targets.cjs.js.map +1 -0
  7. package/dist/components/ContentRender/utils/link-targets.d.ts +6 -0
  8. package/dist/components/ContentRender/utils/link-targets.es.js +26 -0
  9. package/dist/components/ContentRender/utils/link-targets.es.js.map +1 -0
  10. package/dist/components/ContentRender/utils/link-targets.test.d.ts +1 -0
  11. package/dist/components/Slide/Slide.cjs.js +1 -1
  12. package/dist/components/Slide/Slide.cjs.js.map +1 -1
  13. package/dist/components/Slide/Slide.es.js +798 -712
  14. package/dist/components/Slide/Slide.es.js.map +1 -1
  15. package/dist/components/Slide/Slide.stories.d.ts +4 -4
  16. package/dist/components/Slide/constants.cjs.js +2 -0
  17. package/dist/components/Slide/constants.cjs.js.map +1 -0
  18. package/dist/components/Slide/constants.d.ts +1 -0
  19. package/dist/components/Slide/constants.es.js +5 -0
  20. package/dist/components/Slide/constants.es.js.map +1 -0
  21. package/dist/components/Slide/utils/imageOnlyStepVisualReady.cjs.js +2 -0
  22. package/dist/components/Slide/utils/imageOnlyStepVisualReady.cjs.js.map +1 -0
  23. package/dist/components/Slide/utils/imageOnlyStepVisualReady.d.ts +13 -0
  24. package/dist/components/Slide/utils/imageOnlyStepVisualReady.es.js +12 -0
  25. package/dist/components/Slide/utils/imageOnlyStepVisualReady.es.js.map +1 -0
  26. package/dist/components/Slide/utils/silentStepAutoAdvance.cjs.js +2 -0
  27. package/dist/components/Slide/utils/silentStepAutoAdvance.cjs.js.map +1 -0
  28. package/dist/components/Slide/utils/silentStepAutoAdvance.d.ts +14 -0
  29. package/dist/components/Slide/utils/silentStepAutoAdvance.es.js +37 -0
  30. package/dist/components/Slide/utils/silentStepAutoAdvance.es.js.map +1 -0
  31. package/dist/components/Slide/utils/silentStepAutoAdvance.test.d.ts +1 -0
  32. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.cjs.js","sources":["../../../src/components/Slide/constants.ts"],"sourcesContent":["export const DEFAULT_FULLSCREEN_HINT_DURATION_MS = 3000;\n\nexport const DEFAULT_IMAGE_ONLY_AUTO_ADVANCE_DELAY_MS = 5000;\n"],"names":["DEFAULT_IMAGE_ONLY_AUTO_ADVANCE_DELAY_MS"],"mappings":"gFAEO,MAAMA,EAA2C"}
@@ -1 +1,2 @@
1
1
  export declare const DEFAULT_FULLSCREEN_HINT_DURATION_MS = 3000;
2
+ export declare const DEFAULT_IMAGE_ONLY_AUTO_ADVANCE_DELAY_MS = 5000;
@@ -0,0 +1,5 @@
1
+ const A = 5e3;
2
+ export {
3
+ A as DEFAULT_IMAGE_ONLY_AUTO_ADVANCE_DELAY_MS
4
+ };
5
+ //# sourceMappingURL=constants.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.es.js","sources":["../../../src/components/Slide/constants.ts"],"sourcesContent":["export const DEFAULT_FULLSCREEN_HINT_DURATION_MS = 3000;\n\nexport const DEFAULT_IMAGE_ONLY_AUTO_ADVANCE_DELAY_MS = 5000;\n"],"names":["DEFAULT_IMAGE_ONLY_AUTO_ADVANCE_DELAY_MS"],"mappings":"AAEO,MAAMA,IAA2C;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const m=15e3,t=e=>{const a=e.contentDocument;return!a||a.readyState!=="complete"?!1:Array.from(a.images??[]).every(r=>r.complete)},n=e=>e.every(t);exports.DEFAULT_IMAGE_ONLY_VISUAL_READY_TIMEOUT_MS=m;exports.areImageOnlyStepIframeVisualsReady=n;exports.isImageOnlyStepIframeVisualReady=t;
2
+ //# sourceMappingURL=imageOnlyStepVisualReady.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageOnlyStepVisualReady.cjs.js","sources":["../../../../src/components/Slide/utils/imageOnlyStepVisualReady.ts"],"sourcesContent":["export const DEFAULT_IMAGE_ONLY_VISUAL_READY_TIMEOUT_MS = 15000;\n\nexport interface ImageOnlyStepVisualReadyImageLike {\n complete: boolean;\n}\n\nexport interface ImageOnlyStepVisualReadyDocumentLike {\n readyState?: string;\n images?: ArrayLike<ImageOnlyStepVisualReadyImageLike>;\n}\n\nexport interface ImageOnlyStepVisualReadyIframeLike {\n contentDocument?: ImageOnlyStepVisualReadyDocumentLike | null;\n}\n\nexport const isImageOnlyStepIframeVisualReady = (\n iframe: ImageOnlyStepVisualReadyIframeLike\n) => {\n const iframeDocument = iframe.contentDocument;\n\n if (!iframeDocument || iframeDocument.readyState !== \"complete\") {\n return false;\n }\n\n return Array.from(iframeDocument.images ?? []).every(\n (image) => image.complete\n );\n};\n\nexport const areImageOnlyStepIframeVisualsReady = (\n iframes: ImageOnlyStepVisualReadyIframeLike[]\n) => iframes.every(isImageOnlyStepIframeVisualReady);\n"],"names":["DEFAULT_IMAGE_ONLY_VISUAL_READY_TIMEOUT_MS","isImageOnlyStepIframeVisualReady","iframe","iframeDocument","image","areImageOnlyStepIframeVisualsReady","iframes"],"mappings":"gFAAO,MAAMA,EAA6C,KAe7CC,EACXC,GACG,CACH,MAAMC,EAAiBD,EAAO,gBAE9B,MAAI,CAACC,GAAkBA,EAAe,aAAe,WAC5C,GAGF,MAAM,KAAKA,EAAe,QAAU,CAAA,CAAE,EAAE,MAC5CC,GAAUA,EAAM,QAAA,CAErB,EAEaC,EACXC,GACGA,EAAQ,MAAML,CAAgC"}
@@ -0,0 +1,13 @@
1
+ export declare const DEFAULT_IMAGE_ONLY_VISUAL_READY_TIMEOUT_MS = 15000;
2
+ export interface ImageOnlyStepVisualReadyImageLike {
3
+ complete: boolean;
4
+ }
5
+ export interface ImageOnlyStepVisualReadyDocumentLike {
6
+ readyState?: string;
7
+ images?: ArrayLike<ImageOnlyStepVisualReadyImageLike>;
8
+ }
9
+ export interface ImageOnlyStepVisualReadyIframeLike {
10
+ contentDocument?: ImageOnlyStepVisualReadyDocumentLike | null;
11
+ }
12
+ export declare const isImageOnlyStepIframeVisualReady: (iframe: ImageOnlyStepVisualReadyIframeLike) => boolean;
13
+ export declare const areImageOnlyStepIframeVisualsReady: (iframes: ImageOnlyStepVisualReadyIframeLike[]) => boolean;
@@ -0,0 +1,12 @@
1
+ const n = 15e3, r = (e) => {
2
+ const t = e.contentDocument;
3
+ return !t || t.readyState !== "complete" ? !1 : Array.from(t.images ?? []).every(
4
+ (a) => a.complete
5
+ );
6
+ }, m = (e) => e.every(r);
7
+ export {
8
+ n as DEFAULT_IMAGE_ONLY_VISUAL_READY_TIMEOUT_MS,
9
+ m as areImageOnlyStepIframeVisualsReady,
10
+ r as isImageOnlyStepIframeVisualReady
11
+ };
12
+ //# sourceMappingURL=imageOnlyStepVisualReady.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"imageOnlyStepVisualReady.es.js","sources":["../../../../src/components/Slide/utils/imageOnlyStepVisualReady.ts"],"sourcesContent":["export const DEFAULT_IMAGE_ONLY_VISUAL_READY_TIMEOUT_MS = 15000;\n\nexport interface ImageOnlyStepVisualReadyImageLike {\n complete: boolean;\n}\n\nexport interface ImageOnlyStepVisualReadyDocumentLike {\n readyState?: string;\n images?: ArrayLike<ImageOnlyStepVisualReadyImageLike>;\n}\n\nexport interface ImageOnlyStepVisualReadyIframeLike {\n contentDocument?: ImageOnlyStepVisualReadyDocumentLike | null;\n}\n\nexport const isImageOnlyStepIframeVisualReady = (\n iframe: ImageOnlyStepVisualReadyIframeLike\n) => {\n const iframeDocument = iframe.contentDocument;\n\n if (!iframeDocument || iframeDocument.readyState !== \"complete\") {\n return false;\n }\n\n return Array.from(iframeDocument.images ?? []).every(\n (image) => image.complete\n );\n};\n\nexport const areImageOnlyStepIframeVisualsReady = (\n iframes: ImageOnlyStepVisualReadyIframeLike[]\n) => iframes.every(isImageOnlyStepIframeVisualReady);\n"],"names":["DEFAULT_IMAGE_ONLY_VISUAL_READY_TIMEOUT_MS","isImageOnlyStepIframeVisualReady","iframe","iframeDocument","image","areImageOnlyStepIframeVisualsReady","iframes"],"mappings":"AAAO,MAAMA,IAA6C,MAe7CC,IAAmC,CAC9CC,MACG;AACH,QAAMC,IAAiBD,EAAO;AAE9B,SAAI,CAACC,KAAkBA,EAAe,eAAe,aAC5C,KAGF,MAAM,KAAKA,EAAe,UAAU,CAAA,CAAE,EAAE;AAAA,IAC7C,CAACC,MAAUA,EAAM;AAAA,EAAA;AAErB,GAEaC,IAAqC,CAChDC,MACGA,EAAQ,MAAML,CAAgC;"}
@@ -0,0 +1,2 @@
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const l=require("../constants.cjs.js"),a=new Set(["img","md_img","svg"]),c=/<(img|svg)\b[^>]*>/i,i=/<!--[\s\S]*?-->/g,_=/<script\b[^>]*>[\s\S]*?<\/script>/gi,E=/<style\b[^>]*>[\s\S]*?<\/style>/gi,p=/<\/?\s*[a-zA-Z][a-zA-Z0-9:_-]*\b[^>]*>/g,A=/&(?:nbsp|ensp|emsp|thinsp|zwnj|zwj);/gi,T=/[\p{L}\p{N}]/u,S=e=>!!e&&!e?.is_marker&&e?.is_renderable!==!1,g=e=>T.test(e.replace(i," ").replace(_," ").replace(E," ").replace(p," ").replace(A," ").trim()),u=e=>e.type!=="html"||typeof e.content!="string"?!1:c.test(e.content)&&!g(e.content),r=({currentElementList:e,currentStepHasSpeakableElement:n,currentInteractionElement:o})=>{if(n||o)return!1;const s=e.filter(S);return s.length===0?!1:s.every(t=>a.has(t.type)||u(t))},M=({currentElementList:e,currentStepHasSpeakableElement:n,currentInteractionElement:o,markerAutoAdvanceDelay:s})=>{const t=r({currentElementList:e,currentStepHasSpeakableElement:n,currentInteractionElement:o});return{delayMs:t?l.DEFAULT_IMAGE_ONLY_AUTO_ADVANCE_DELAY_MS:s,usesImageOnlyDelay:t}};exports.resolveSilentStepAutoAdvanceBehavior=M;exports.shouldUseImageOnlySilentStepAutoAdvanceDelay=r;
2
+ //# sourceMappingURL=silentStepAutoAdvance.cjs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"silentStepAutoAdvance.cjs.js","sources":["../../../../src/components/Slide/utils/silentStepAutoAdvance.ts"],"sourcesContent":["import type { Element } from \"../types\";\n\nimport { DEFAULT_IMAGE_ONLY_AUTO_ADVANCE_DELAY_MS } from \"../constants\";\n\nconst IMAGE_ONLY_ELEMENT_TYPES = new Set([\"img\", \"md_img\", \"svg\"]);\nconst COMPLETE_IMAGE_TAG_PATTERN = /<(img|svg)\\b[^>]*>/i;\nconst HTML_COMMENT_RE = /<!--[\\s\\S]*?-->/g;\nconst HTML_SCRIPT_RE = /<script\\b[^>]*>[\\s\\S]*?<\\/script>/gi;\nconst HTML_STYLE_RE = /<style\\b[^>]*>[\\s\\S]*?<\\/style>/gi;\nconst HTML_TAG_RE = /<\\/?\\s*[a-zA-Z][a-zA-Z0-9:_-]*\\b[^>]*>/g;\nconst HTML_SPACE_ENTITY_RE = /&(?:nbsp|ensp|emsp|thinsp|zwnj|zwj);/gi;\nconst MEANINGFUL_TEXT_RE = /[\\p{L}\\p{N}]/u;\n\nexport interface SilentStepAutoAdvanceDelayParams {\n currentElementList: Element[];\n currentStepHasSpeakableElement: boolean;\n currentInteractionElement?: Element;\n markerAutoAdvanceDelay: number;\n}\n\nexport interface SilentStepAutoAdvanceBehavior {\n delayMs: number;\n usesImageOnlyDelay: boolean;\n}\n\nconst isRenderableStepContentElement = (element?: Element) =>\n Boolean(element) && !element?.is_marker && element?.is_renderable !== false;\n\nconst hasMeaningfulHtmlText = (content: string) =>\n MEANINGFUL_TEXT_RE.test(\n content\n .replace(HTML_COMMENT_RE, \" \")\n .replace(HTML_SCRIPT_RE, \" \")\n .replace(HTML_STYLE_RE, \" \")\n .replace(HTML_TAG_RE, \" \")\n .replace(HTML_SPACE_ENTITY_RE, \" \")\n .trim()\n );\n\nconst isImageOnlyHtmlElement = (element: Element) => {\n if (element.type !== \"html\" || typeof element.content !== \"string\") {\n return false;\n }\n\n return (\n COMPLETE_IMAGE_TAG_PATTERN.test(element.content) &&\n !hasMeaningfulHtmlText(element.content)\n );\n};\n\nexport const shouldUseImageOnlySilentStepAutoAdvanceDelay = ({\n currentElementList,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n}: Omit<SilentStepAutoAdvanceDelayParams, \"markerAutoAdvanceDelay\">) => {\n if (currentStepHasSpeakableElement || currentInteractionElement) {\n return false;\n }\n\n const stepContentElements = currentElementList.filter(\n isRenderableStepContentElement\n );\n\n if (stepContentElements.length === 0) {\n return false;\n }\n\n return stepContentElements.every(\n (element) =>\n IMAGE_ONLY_ELEMENT_TYPES.has(element.type) ||\n isImageOnlyHtmlElement(element)\n );\n};\n\nexport const resolveSilentStepAutoAdvanceDelay = ({\n currentElementList,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n markerAutoAdvanceDelay,\n}: SilentStepAutoAdvanceDelayParams) =>\n resolveSilentStepAutoAdvanceBehavior({\n currentElementList,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n markerAutoAdvanceDelay,\n }).delayMs;\n\nexport const resolveSilentStepAutoAdvanceBehavior = ({\n currentElementList,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n markerAutoAdvanceDelay,\n}: SilentStepAutoAdvanceDelayParams): SilentStepAutoAdvanceBehavior => {\n const usesImageOnlyDelay = shouldUseImageOnlySilentStepAutoAdvanceDelay({\n currentElementList,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n });\n\n return {\n delayMs: usesImageOnlyDelay\n ? DEFAULT_IMAGE_ONLY_AUTO_ADVANCE_DELAY_MS\n : markerAutoAdvanceDelay,\n usesImageOnlyDelay,\n };\n};\n"],"names":["IMAGE_ONLY_ELEMENT_TYPES","COMPLETE_IMAGE_TAG_PATTERN","HTML_COMMENT_RE","HTML_SCRIPT_RE","HTML_STYLE_RE","HTML_TAG_RE","HTML_SPACE_ENTITY_RE","MEANINGFUL_TEXT_RE","isRenderableStepContentElement","element","hasMeaningfulHtmlText","content","isImageOnlyHtmlElement","shouldUseImageOnlySilentStepAutoAdvanceDelay","currentElementList","currentStepHasSpeakableElement","currentInteractionElement","stepContentElements","resolveSilentStepAutoAdvanceBehavior","markerAutoAdvanceDelay","usesImageOnlyDelay","DEFAULT_IMAGE_ONLY_AUTO_ADVANCE_DELAY_MS"],"mappings":"uHAIMA,EAA2B,IAAI,IAAI,CAAC,MAAO,SAAU,KAAK,CAAC,EAC3DC,EAA6B,sBAC7BC,EAAkB,mBAClBC,EAAiB,sCACjBC,EAAgB,oCAChBC,EAAc,0CACdC,EAAuB,yCACvBC,EAAqB,gBAcrBC,EAAkCC,GACtC,EAAQA,GAAY,CAACA,GAAS,WAAaA,GAAS,gBAAkB,GAElEC,EAAyBC,GAC7BJ,EAAmB,KACjBI,EACG,QAAQT,EAAiB,GAAG,EAC5B,QAAQC,EAAgB,GAAG,EAC3B,QAAQC,EAAe,GAAG,EAC1B,QAAQC,EAAa,GAAG,EACxB,QAAQC,EAAsB,GAAG,EACjC,KAAA,CACL,EAEIM,EAA0BH,GAC1BA,EAAQ,OAAS,QAAU,OAAOA,EAAQ,SAAY,SACjD,GAIPR,EAA2B,KAAKQ,EAAQ,OAAO,GAC/C,CAACC,EAAsBD,EAAQ,OAAO,EAI7BI,EAA+C,CAAC,CAC3D,mBAAAC,EACA,+BAAAC,EACA,0BAAAC,CACF,IAAwE,CACtE,GAAID,GAAkCC,EACpC,MAAO,GAGT,MAAMC,EAAsBH,EAAmB,OAC7CN,CAAA,EAGF,OAAIS,EAAoB,SAAW,EAC1B,GAGFA,EAAoB,MACxBR,GACCT,EAAyB,IAAIS,EAAQ,IAAI,GACzCG,EAAuBH,CAAO,CAAA,CAEpC,EAeaS,EAAuC,CAAC,CACnD,mBAAAJ,EACA,+BAAAC,EACA,0BAAAC,EACA,uBAAAG,CACF,IAAuE,CACrE,MAAMC,EAAqBP,EAA6C,CACtE,mBAAAC,EACA,+BAAAC,EACA,0BAAAC,CAAA,CACD,EAED,MAAO,CACL,QAASI,EACLC,EAAAA,yCACAF,EACJ,mBAAAC,CAAA,CAEJ"}
@@ -0,0 +1,14 @@
1
+ import { Element } from '../types';
2
+ export interface SilentStepAutoAdvanceDelayParams {
3
+ currentElementList: Element[];
4
+ currentStepHasSpeakableElement: boolean;
5
+ currentInteractionElement?: Element;
6
+ markerAutoAdvanceDelay: number;
7
+ }
8
+ export interface SilentStepAutoAdvanceBehavior {
9
+ delayMs: number;
10
+ usesImageOnlyDelay: boolean;
11
+ }
12
+ export declare const shouldUseImageOnlySilentStepAutoAdvanceDelay: ({ currentElementList, currentStepHasSpeakableElement, currentInteractionElement, }: Omit<SilentStepAutoAdvanceDelayParams, "markerAutoAdvanceDelay">) => boolean;
13
+ export declare const resolveSilentStepAutoAdvanceDelay: ({ currentElementList, currentStepHasSpeakableElement, currentInteractionElement, markerAutoAdvanceDelay, }: SilentStepAutoAdvanceDelayParams) => number;
14
+ export declare const resolveSilentStepAutoAdvanceBehavior: ({ currentElementList, currentStepHasSpeakableElement, currentInteractionElement, markerAutoAdvanceDelay, }: SilentStepAutoAdvanceDelayParams) => SilentStepAutoAdvanceBehavior;
@@ -0,0 +1,37 @@
1
+ import { DEFAULT_IMAGE_ONLY_AUTO_ADVANCE_DELAY_MS as o } from "../constants.es.js";
2
+ const _ = /* @__PURE__ */ new Set(["img", "md_img", "svg"]), E = /<(img|svg)\b[^>]*>/i, a = /<!--[\s\S]*?-->/g, c = /<script\b[^>]*>[\s\S]*?<\/script>/gi, l = /<style\b[^>]*>[\s\S]*?<\/style>/gi, i = /<\/?\s*[a-zA-Z][a-zA-Z0-9:_-]*\b[^>]*>/g, p = /&(?:nbsp|ensp|emsp|thinsp|zwnj|zwj);/gi, T = /[\p{L}\p{N}]/u, A = (t) => !!t && !t?.is_marker && t?.is_renderable !== !1, g = (t) => T.test(
3
+ t.replace(a, " ").replace(c, " ").replace(l, " ").replace(i, " ").replace(p, " ").trim()
4
+ ), M = (t) => t.type !== "html" || typeof t.content != "string" ? !1 : E.test(t.content) && !g(t.content), L = ({
5
+ currentElementList: t,
6
+ currentStepHasSpeakableElement: n,
7
+ currentInteractionElement: r
8
+ }) => {
9
+ if (n || r)
10
+ return !1;
11
+ const s = t.filter(
12
+ A
13
+ );
14
+ return s.length === 0 ? !1 : s.every(
15
+ (e) => _.has(e.type) || M(e)
16
+ );
17
+ }, m = ({
18
+ currentElementList: t,
19
+ currentStepHasSpeakableElement: n,
20
+ currentInteractionElement: r,
21
+ markerAutoAdvanceDelay: s
22
+ }) => {
23
+ const e = L({
24
+ currentElementList: t,
25
+ currentStepHasSpeakableElement: n,
26
+ currentInteractionElement: r
27
+ });
28
+ return {
29
+ delayMs: e ? o : s,
30
+ usesImageOnlyDelay: e
31
+ };
32
+ };
33
+ export {
34
+ m as resolveSilentStepAutoAdvanceBehavior,
35
+ L as shouldUseImageOnlySilentStepAutoAdvanceDelay
36
+ };
37
+ //# sourceMappingURL=silentStepAutoAdvance.es.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"silentStepAutoAdvance.es.js","sources":["../../../../src/components/Slide/utils/silentStepAutoAdvance.ts"],"sourcesContent":["import type { Element } from \"../types\";\n\nimport { DEFAULT_IMAGE_ONLY_AUTO_ADVANCE_DELAY_MS } from \"../constants\";\n\nconst IMAGE_ONLY_ELEMENT_TYPES = new Set([\"img\", \"md_img\", \"svg\"]);\nconst COMPLETE_IMAGE_TAG_PATTERN = /<(img|svg)\\b[^>]*>/i;\nconst HTML_COMMENT_RE = /<!--[\\s\\S]*?-->/g;\nconst HTML_SCRIPT_RE = /<script\\b[^>]*>[\\s\\S]*?<\\/script>/gi;\nconst HTML_STYLE_RE = /<style\\b[^>]*>[\\s\\S]*?<\\/style>/gi;\nconst HTML_TAG_RE = /<\\/?\\s*[a-zA-Z][a-zA-Z0-9:_-]*\\b[^>]*>/g;\nconst HTML_SPACE_ENTITY_RE = /&(?:nbsp|ensp|emsp|thinsp|zwnj|zwj);/gi;\nconst MEANINGFUL_TEXT_RE = /[\\p{L}\\p{N}]/u;\n\nexport interface SilentStepAutoAdvanceDelayParams {\n currentElementList: Element[];\n currentStepHasSpeakableElement: boolean;\n currentInteractionElement?: Element;\n markerAutoAdvanceDelay: number;\n}\n\nexport interface SilentStepAutoAdvanceBehavior {\n delayMs: number;\n usesImageOnlyDelay: boolean;\n}\n\nconst isRenderableStepContentElement = (element?: Element) =>\n Boolean(element) && !element?.is_marker && element?.is_renderable !== false;\n\nconst hasMeaningfulHtmlText = (content: string) =>\n MEANINGFUL_TEXT_RE.test(\n content\n .replace(HTML_COMMENT_RE, \" \")\n .replace(HTML_SCRIPT_RE, \" \")\n .replace(HTML_STYLE_RE, \" \")\n .replace(HTML_TAG_RE, \" \")\n .replace(HTML_SPACE_ENTITY_RE, \" \")\n .trim()\n );\n\nconst isImageOnlyHtmlElement = (element: Element) => {\n if (element.type !== \"html\" || typeof element.content !== \"string\") {\n return false;\n }\n\n return (\n COMPLETE_IMAGE_TAG_PATTERN.test(element.content) &&\n !hasMeaningfulHtmlText(element.content)\n );\n};\n\nexport const shouldUseImageOnlySilentStepAutoAdvanceDelay = ({\n currentElementList,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n}: Omit<SilentStepAutoAdvanceDelayParams, \"markerAutoAdvanceDelay\">) => {\n if (currentStepHasSpeakableElement || currentInteractionElement) {\n return false;\n }\n\n const stepContentElements = currentElementList.filter(\n isRenderableStepContentElement\n );\n\n if (stepContentElements.length === 0) {\n return false;\n }\n\n return stepContentElements.every(\n (element) =>\n IMAGE_ONLY_ELEMENT_TYPES.has(element.type) ||\n isImageOnlyHtmlElement(element)\n );\n};\n\nexport const resolveSilentStepAutoAdvanceDelay = ({\n currentElementList,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n markerAutoAdvanceDelay,\n}: SilentStepAutoAdvanceDelayParams) =>\n resolveSilentStepAutoAdvanceBehavior({\n currentElementList,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n markerAutoAdvanceDelay,\n }).delayMs;\n\nexport const resolveSilentStepAutoAdvanceBehavior = ({\n currentElementList,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n markerAutoAdvanceDelay,\n}: SilentStepAutoAdvanceDelayParams): SilentStepAutoAdvanceBehavior => {\n const usesImageOnlyDelay = shouldUseImageOnlySilentStepAutoAdvanceDelay({\n currentElementList,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n });\n\n return {\n delayMs: usesImageOnlyDelay\n ? DEFAULT_IMAGE_ONLY_AUTO_ADVANCE_DELAY_MS\n : markerAutoAdvanceDelay,\n usesImageOnlyDelay,\n };\n};\n"],"names":["IMAGE_ONLY_ELEMENT_TYPES","COMPLETE_IMAGE_TAG_PATTERN","HTML_COMMENT_RE","HTML_SCRIPT_RE","HTML_STYLE_RE","HTML_TAG_RE","HTML_SPACE_ENTITY_RE","MEANINGFUL_TEXT_RE","isRenderableStepContentElement","element","hasMeaningfulHtmlText","content","isImageOnlyHtmlElement","shouldUseImageOnlySilentStepAutoAdvanceDelay","currentElementList","currentStepHasSpeakableElement","currentInteractionElement","stepContentElements","resolveSilentStepAutoAdvanceBehavior","markerAutoAdvanceDelay","usesImageOnlyDelay","DEFAULT_IMAGE_ONLY_AUTO_ADVANCE_DELAY_MS"],"mappings":";AAIA,MAAMA,IAA2B,oBAAI,IAAI,CAAC,OAAO,UAAU,KAAK,CAAC,GAC3DC,IAA6B,uBAC7BC,IAAkB,oBAClBC,IAAiB,uCACjBC,IAAgB,qCAChBC,IAAc,2CACdC,IAAuB,0CACvBC,IAAqB,iBAcrBC,IAAiC,CAACC,MACtC,EAAQA,KAAY,CAACA,GAAS,aAAaA,GAAS,kBAAkB,IAElEC,IAAwB,CAACC,MAC7BJ,EAAmB;AAAA,EACjBI,EACG,QAAQT,GAAiB,GAAG,EAC5B,QAAQC,GAAgB,GAAG,EAC3B,QAAQC,GAAe,GAAG,EAC1B,QAAQC,GAAa,GAAG,EACxB,QAAQC,GAAsB,GAAG,EACjC,KAAA;AACL,GAEIM,IAAyB,CAACH,MAC1BA,EAAQ,SAAS,UAAU,OAAOA,EAAQ,WAAY,WACjD,KAIPR,EAA2B,KAAKQ,EAAQ,OAAO,KAC/C,CAACC,EAAsBD,EAAQ,OAAO,GAI7BI,IAA+C,CAAC;AAAA,EAC3D,oBAAAC;AAAA,EACA,gCAAAC;AAAA,EACA,2BAAAC;AACF,MAAwE;AACtE,MAAID,KAAkCC;AACpC,WAAO;AAGT,QAAMC,IAAsBH,EAAmB;AAAA,IAC7CN;AAAA,EAAA;AAGF,SAAIS,EAAoB,WAAW,IAC1B,KAGFA,EAAoB;AAAA,IACzB,CAACR,MACCT,EAAyB,IAAIS,EAAQ,IAAI,KACzCG,EAAuBH,CAAO;AAAA,EAAA;AAEpC,GAeaS,IAAuC,CAAC;AAAA,EACnD,oBAAAJ;AAAA,EACA,gCAAAC;AAAA,EACA,2BAAAC;AAAA,EACA,wBAAAG;AACF,MAAuE;AACrE,QAAMC,IAAqBP,EAA6C;AAAA,IACtE,oBAAAC;AAAA,IACA,gCAAAC;AAAA,IACA,2BAAAC;AAAA,EAAA,CACD;AAED,SAAO;AAAA,IACL,SAASI,IACLC,IACAF;AAAA,IACJ,oBAAAC;AAAA,EAAA;AAEJ;"}
package/package.json CHANGED
@@ -174,7 +174,7 @@
174
174
  ]
175
175
  }
176
176
  },
177
- "version": "0.2.3-dev.2",
177
+ "version": "0.2.3",
178
178
  "type": "module",
179
179
  "exports": {
180
180
  ".": {