markdown-flow-ui 0.1.109 → 0.1.111
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/dist/_virtual/index.cjs4.js +1 -1
- package/dist/_virtual/index.cjs5.js +1 -1
- package/dist/_virtual/index.cjs6.js +1 -1
- package/dist/_virtual/index.cjs7.js +1 -1
- package/dist/_virtual/index.es4.js +4 -4
- package/dist/_virtual/index.es5.js +4 -4
- package/dist/_virtual/index.es6.js +5 -2
- package/dist/_virtual/index.es6.js.map +1 -1
- package/dist/_virtual/index.es7.js +2 -5
- package/dist/_virtual/index.es7.js.map +1 -1
- package/dist/components/Slide/Slide.cjs.js +1 -1
- package/dist/components/Slide/Slide.cjs.js.map +1 -1
- package/dist/components/Slide/Slide.es.js +522 -483
- package/dist/components/Slide/Slide.es.js.map +1 -1
- package/dist/components/Slide/useSlide.cjs.js +1 -1
- package/dist/components/Slide/useSlide.cjs.js.map +1 -1
- package/dist/components/Slide/useSlide.es.js +106 -97
- package/dist/components/Slide/useSlide.es.js.map +1 -1
- package/dist/components/Slide/utils/appendedMarkerAdvance.cjs.js +2 -0
- package/dist/components/Slide/utils/appendedMarkerAdvance.cjs.js.map +1 -0
- package/dist/components/Slide/utils/appendedMarkerAdvance.d.ts +17 -0
- package/dist/components/Slide/utils/appendedMarkerAdvance.es.js +21 -0
- package/dist/components/Slide/utils/appendedMarkerAdvance.es.js.map +1 -0
- package/dist/components/Slide/utils/appendedMarkerAdvance.test.d.ts +1 -0
- package/dist/components/Slide/utils/streamingNavigation.cjs.js +2 -0
- package/dist/components/Slide/utils/streamingNavigation.cjs.js.map +1 -0
- package/dist/components/Slide/utils/streamingNavigation.d.ts +8 -0
- package/dist/components/Slide/utils/streamingNavigation.es.js +16 -0
- package/dist/components/Slide/utils/streamingNavigation.es.js.map +1 -0
- package/dist/components/Slide/utils/streamingNavigation.test.d.ts +1 -0
- package/dist/components/ui/inputGroup/textarea.cjs.js +1 -1
- package/dist/components/ui/inputGroup/textarea.es.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/hast-util-to-jsx-runtime@2.3.6/node_modules/hast-util-to-jsx-runtime/lib/index.cjs.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/hast-util-to-jsx-runtime@2.3.6/node_modules/hast-util-to-jsx-runtime/lib/index.es.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/rc-input@1.8.0_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-input/es/BaseInput.cjs.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/rc-input@1.8.0_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-input/es/BaseInput.es.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/ResizableTextArea.cjs.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/ResizableTextArea.es.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/TextArea.cjs.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/TextArea.es.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/index.cjs.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/index.es.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/style-to-object@1.0.11/node_modules/style-to-object/cjs/index.cjs.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/style-to-object@1.0.11/node_modules/style-to-object/cjs/index.es.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.cjs.js +1 -1
- package/dist/markdown-flow-ui/node_modules/.pnpm/unified@11.0.5/node_modules/unified/lib/index.es.js +1 -1
- package/package.json +1 -1
|
@@ -1,145 +1,154 @@
|
|
|
1
|
-
import { useRef as
|
|
2
|
-
import { applyDiffElement as
|
|
3
|
-
|
|
1
|
+
import { useRef as p, useMemo as c, useState as w, useEffect as P, useCallback as x } from "react";
|
|
2
|
+
import { applyDiffElement as B } from "./diff-utils.es.js";
|
|
3
|
+
import { resolveNextSlideIndexAfterMarkerAppend as G } from "./utils/streamingNavigation.es.js";
|
|
4
|
+
const H = (e) => e.filter((n) => n.is_marker), K = (e) => e.reduce((n, t, s) => (t.is_marker && n.push(s), n), []), S = (e) => !!(e?.is_speakable && (e.audio_url || (e.audio_segments?.length ?? 0) > 0)), $ = (e = []) => e.length > 0 && !e.some((n) => n.is_final), z = (e, n) => {
|
|
4
5
|
const t = e;
|
|
5
6
|
return t.element_bid || t.blockBid || t.generated_block_bid || `${e.type}:${String(e.sequence_number ?? n)}`;
|
|
6
|
-
},
|
|
7
|
-
if (
|
|
8
|
-
const
|
|
7
|
+
}, D = (e) => e.reduce((n, t, s) => {
|
|
8
|
+
if (S(t)) {
|
|
9
|
+
const r = t.audio_segments ?? [], u = r.length > 0;
|
|
9
10
|
n.push({
|
|
10
|
-
audioKey:
|
|
11
|
+
audioKey: z(t, s),
|
|
11
12
|
sequenceNumber: t.sequence_number,
|
|
12
13
|
// Keep one canonical source to avoid duplicated playback resets.
|
|
13
14
|
// When streaming segments exist, keep playback on the segment source.
|
|
14
|
-
audioUrl:
|
|
15
|
-
audioSegments:
|
|
16
|
-
isAudioStreaming:
|
|
15
|
+
audioUrl: u ? "" : t.audio_url,
|
|
16
|
+
audioSegments: r,
|
|
17
|
+
isAudioStreaming: $(r),
|
|
17
18
|
element: t
|
|
18
19
|
});
|
|
19
20
|
}
|
|
20
21
|
return n;
|
|
21
|
-
}, []),
|
|
22
|
+
}, []), L = (e) => {
|
|
22
23
|
const n = /* @__PURE__ */ new Map();
|
|
23
24
|
let t = 0;
|
|
24
|
-
return e.forEach((
|
|
25
|
-
|
|
25
|
+
return e.forEach((s, r) => {
|
|
26
|
+
S(s) && (n.set(r, t), t += 1);
|
|
26
27
|
}), n;
|
|
27
|
-
},
|
|
28
|
-
(
|
|
29
|
-
const
|
|
30
|
-
for (let a =
|
|
31
|
-
const
|
|
32
|
-
if (!
|
|
28
|
+
}, U = (e, n, t) => n.reduce(
|
|
29
|
+
(s, r, u) => {
|
|
30
|
+
const d = n[u + 1] ?? e.length, l = [];
|
|
31
|
+
for (let a = r; a < d; a += 1) {
|
|
32
|
+
const f = e[a];
|
|
33
|
+
if (!S(f))
|
|
33
34
|
continue;
|
|
34
|
-
const
|
|
35
|
-
|
|
35
|
+
const o = t.get(a);
|
|
36
|
+
o != null && l.push(o);
|
|
36
37
|
}
|
|
37
|
-
return
|
|
38
|
+
return s.set(u, l), s;
|
|
38
39
|
},
|
|
39
40
|
/* @__PURE__ */ new Map()
|
|
40
|
-
),
|
|
41
|
+
), b = (e) => {
|
|
41
42
|
const n = e.findIndex(
|
|
42
43
|
(t) => t.is_renderable === !0
|
|
43
44
|
);
|
|
44
45
|
return n >= 0 ? n : e.findIndex(
|
|
45
46
|
(t) => t.is_renderable !== !1
|
|
46
47
|
);
|
|
47
|
-
},
|
|
48
|
+
}, E = (e) => ({
|
|
48
49
|
...e,
|
|
49
50
|
is_renderable: !0
|
|
50
|
-
}), _ = (e, n) => n < 0 ? [] : e.slice(0, n + 1).reduce((t,
|
|
51
|
-
if (
|
|
51
|
+
}), _ = (e, n) => n < 0 ? [] : e.slice(0, n + 1).reduce((t, s) => {
|
|
52
|
+
if (s.type === "interaction")
|
|
52
53
|
return t;
|
|
53
|
-
const
|
|
54
|
-
return
|
|
55
|
-
}, []),
|
|
54
|
+
const r = E(s);
|
|
55
|
+
return r.type === "diff" ? B(t, r) ?? [...t, r] : s.is_new ? [r] : t.length === 0 ? [r] : [...t, r];
|
|
56
|
+
}, []), j = (e) => e.map(
|
|
56
57
|
(n, t) => _(e, t)
|
|
57
|
-
),
|
|
58
|
+
), F = (e, n, t) => {
|
|
58
59
|
if (t < 0)
|
|
59
60
|
return !1;
|
|
60
|
-
const
|
|
61
|
-
if (typeof
|
|
61
|
+
const s = n[t];
|
|
62
|
+
if (typeof s != "number")
|
|
62
63
|
return !1;
|
|
63
|
-
const
|
|
64
|
-
for (let
|
|
65
|
-
if (e[
|
|
64
|
+
const r = n[t + 1] ?? e.length;
|
|
65
|
+
for (let u = s; u < r; u += 1)
|
|
66
|
+
if (e[u]?.is_speakable)
|
|
66
67
|
return !0;
|
|
67
68
|
return !1;
|
|
68
|
-
},
|
|
69
|
-
const n =
|
|
70
|
-
() =>
|
|
71
|
-
[
|
|
72
|
-
),
|
|
73
|
-
() =>
|
|
74
|
-
[
|
|
75
|
-
), f = c(
|
|
76
|
-
() => K(r),
|
|
77
|
-
[r]
|
|
69
|
+
}, J = (e, n) => e.length === n.length && e.every((t, s) => t === n[s]), O = (e, n) => e.length === n.length && e.every((t, s) => t === n[s]), W = (e = []) => {
|
|
70
|
+
const n = p(e), t = p([]), s = c(() => J(n.current, e) ? n.current : (n.current = e, e), [e]), r = c(
|
|
71
|
+
() => H(s),
|
|
72
|
+
[s]
|
|
73
|
+
), u = p(r), d = c(
|
|
74
|
+
() => K(s),
|
|
75
|
+
[s]
|
|
78
76
|
), l = c(
|
|
79
|
-
() =>
|
|
80
|
-
[
|
|
77
|
+
() => D(s),
|
|
78
|
+
[s]
|
|
81
79
|
), a = c(
|
|
82
|
-
() =>
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
80
|
+
() => L(s),
|
|
81
|
+
[s]
|
|
82
|
+
), f = c(
|
|
83
|
+
() => U(
|
|
84
|
+
s,
|
|
85
|
+
d,
|
|
86
|
+
a
|
|
86
87
|
),
|
|
87
|
-
[
|
|
88
|
-
), [
|
|
89
|
-
() =>
|
|
88
|
+
[a, d, s]
|
|
89
|
+
), [o, g] = w(
|
|
90
|
+
() => b(r)
|
|
90
91
|
);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
92
|
+
P(() => {
|
|
93
|
+
const i = u.current;
|
|
94
|
+
g((C) => {
|
|
95
|
+
const h = G({
|
|
96
|
+
previousIndex: C,
|
|
97
|
+
previousSlideElementList: i,
|
|
98
|
+
nextSlideElementList: r
|
|
99
|
+
});
|
|
100
|
+
return h >= 0 ? h : b(r);
|
|
101
|
+
}), u.current = r;
|
|
102
|
+
}, [r]);
|
|
103
|
+
const A = x(() => {
|
|
104
|
+
g((i) => i <= 0 ? Math.max(i, 0) : Math.max(i - 1, 0));
|
|
105
|
+
}, []), I = x(() => {
|
|
106
|
+
g((i) => i < 0 ? i : Math.min(i + 1, r.length - 1));
|
|
107
|
+
}, [r.length]), M = o > 0, k = o >= 0 && o < r.length - 1, m = c(() => {
|
|
108
|
+
if (o < 0)
|
|
100
109
|
return;
|
|
101
|
-
const
|
|
102
|
-
if (
|
|
103
|
-
return
|
|
104
|
-
}, [
|
|
105
|
-
() => _(
|
|
106
|
-
[
|
|
107
|
-
),
|
|
108
|
-
() =>
|
|
109
|
-
[
|
|
110
|
-
),
|
|
111
|
-
const
|
|
112
|
-
return
|
|
110
|
+
const i = r[o];
|
|
111
|
+
if (i)
|
|
112
|
+
return E(i);
|
|
113
|
+
}, [o, r]), y = c(
|
|
114
|
+
() => _(r, o),
|
|
115
|
+
[o, r]
|
|
116
|
+
), q = c(
|
|
117
|
+
() => j(r),
|
|
118
|
+
[r]
|
|
119
|
+
), v = c(() => {
|
|
120
|
+
const i = f.get(o) ?? [];
|
|
121
|
+
return O(
|
|
113
122
|
t.current,
|
|
123
|
+
i
|
|
124
|
+
) ? t.current : (t.current = i, i);
|
|
125
|
+
}, [o, f]), N = c(
|
|
126
|
+
() => F(
|
|
127
|
+
s,
|
|
128
|
+
d,
|
|
114
129
|
o
|
|
115
|
-
) ? t.current : (t.current = o, o);
|
|
116
|
-
}, [u, a]), q = c(
|
|
117
|
-
() => D(
|
|
118
|
-
r,
|
|
119
|
-
i,
|
|
120
|
-
u
|
|
121
130
|
),
|
|
122
|
-
[
|
|
123
|
-
),
|
|
124
|
-
() =>
|
|
125
|
-
[
|
|
131
|
+
[o, d, s]
|
|
132
|
+
), R = c(
|
|
133
|
+
() => m?.type === "interaction" ? m : void 0,
|
|
134
|
+
[m]
|
|
126
135
|
);
|
|
127
136
|
return {
|
|
128
|
-
currentElementList:
|
|
129
|
-
stepElementLists:
|
|
130
|
-
slideElementList:
|
|
131
|
-
currentIndex:
|
|
132
|
-
audioList:
|
|
133
|
-
currentAudioSequenceIndexes:
|
|
134
|
-
currentStepHasSpeakableElement:
|
|
135
|
-
currentInteractionElement:
|
|
137
|
+
currentElementList: y,
|
|
138
|
+
stepElementLists: q,
|
|
139
|
+
slideElementList: r,
|
|
140
|
+
currentIndex: o,
|
|
141
|
+
audioList: l,
|
|
142
|
+
currentAudioSequenceIndexes: v,
|
|
143
|
+
currentStepHasSpeakableElement: N,
|
|
144
|
+
currentInteractionElement: R,
|
|
136
145
|
canGoPrev: M,
|
|
137
|
-
canGoNext:
|
|
138
|
-
handlePrev:
|
|
139
|
-
handleNext:
|
|
146
|
+
canGoNext: k,
|
|
147
|
+
handlePrev: A,
|
|
148
|
+
handleNext: I
|
|
140
149
|
};
|
|
141
150
|
};
|
|
142
151
|
export {
|
|
143
|
-
|
|
152
|
+
W as default
|
|
144
153
|
};
|
|
145
154
|
//# sourceMappingURL=useSlide.es.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useSlide.es.js","sources":["../../../src/components/Slide/useSlide.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { applyDiffElement } from \"./diff-utils\";\nimport type { Element, ElementAudioSegment } from \"./types\";\n\nexport interface SlideAudioItem {\n audioKey?: string;\n sequenceNumber?: number;\n audioUrl?: string;\n audioSegments?: ElementAudioSegment[];\n isAudioStreaming?: boolean;\n element?: Element;\n}\n\nexport interface UseSlideResult {\n currentElementList: Element[];\n stepElementLists: Element[][];\n slideElementList: Element[];\n currentIndex: number;\n audioList: SlideAudioItem[];\n currentAudioSequenceIndexes: number[];\n currentStepHasSpeakableElement: boolean;\n currentInteractionElement?: Element;\n canGoPrev: boolean;\n canGoNext: boolean;\n handlePrev: () => void;\n handleNext: () => void;\n}\n\nconst getMarkerElementList = (elementList: Element[]) =>\n elementList.filter((element) => element.is_marker);\n\nconst getMarkerElementIndexes = (elementList: Element[]) =>\n elementList.reduce<number[]>((indexes, element, index) => {\n if (element.is_marker) {\n indexes.push(index);\n }\n\n return indexes;\n }, []);\n\nconst hasPlayableAudio = (element?: Element) =>\n Boolean(\n element?.is_speakable &&\n (element.audio_url || (element.audio_segments?.length ?? 0) > 0)\n );\n\nconst isStreamingAudio = (segments: ElementAudioSegment[] = []) =>\n segments.length > 0 && !segments.some((segment) => segment.is_final);\n\nconst getElementAudioKey = (element: Element, index: number) => {\n const candidateElement = element as Element & {\n element_bid?: string;\n blockBid?: string;\n generated_block_bid?: string;\n };\n\n return (\n candidateElement.element_bid ||\n candidateElement.blockBid ||\n candidateElement.generated_block_bid ||\n `${element.type}:${String(element.sequence_number ?? index)}`\n );\n};\n\nconst getAudioList = (elementList: Element[]) =>\n elementList.reduce<SlideAudioItem[]>((list, element, elementIndex) => {\n if (hasPlayableAudio(element)) {\n const normalizedAudioSegments = element.audio_segments ?? [];\n const hasAudioSegments = normalizedAudioSegments.length > 0;\n\n list.push({\n audioKey: getElementAudioKey(element, elementIndex),\n sequenceNumber: element.sequence_number,\n // Keep one canonical source to avoid duplicated playback resets.\n // When streaming segments exist, keep playback on the segment source.\n audioUrl: hasAudioSegments ? \"\" : element.audio_url,\n audioSegments: normalizedAudioSegments,\n isAudioStreaming: isStreamingAudio(normalizedAudioSegments),\n element,\n });\n }\n\n return list;\n }, []);\n\nconst getAudioIndexMap = (elementList: Element[]) => {\n const audioIndexMap = new Map<number, number>();\n let audioIndex = 0;\n\n elementList.forEach((element, index) => {\n if (hasPlayableAudio(element)) {\n audioIndexMap.set(index, audioIndex);\n audioIndex += 1;\n }\n });\n\n return audioIndexMap;\n};\n\nconst getSlideAudioSequenceMap = (\n elementList: Element[],\n markerElementIndexes: number[],\n audioIndexMap: Map<number, number>\n) =>\n markerElementIndexes.reduce<Map<number, number[]>>(\n (sequenceMap, startIndex, slideIndex) => {\n const nextMarkerIndex =\n markerElementIndexes[slideIndex + 1] ?? elementList.length;\n const sequenceIndexes: number[] = [];\n\n for (let index = startIndex; index < nextMarkerIndex; index += 1) {\n const element = elementList[index];\n\n if (!hasPlayableAudio(element)) {\n continue;\n }\n\n const audioIndex = audioIndexMap.get(index);\n\n if (audioIndex == null) {\n continue;\n }\n\n sequenceIndexes.push(audioIndex);\n }\n\n sequenceMap.set(slideIndex, sequenceIndexes);\n return sequenceMap;\n },\n new Map<number, number[]>()\n );\n\nconst getInitialSlideIndex = (slideElementList: Element[]) => {\n const visibleIndex = slideElementList.findIndex(\n (element) => element.is_renderable === true\n );\n\n if (visibleIndex >= 0) {\n return visibleIndex;\n }\n\n return slideElementList.findIndex(\n (element) => element.is_renderable !== false\n );\n};\n\nconst getVisibleElement = (element: Element): Element => ({\n ...element,\n is_renderable: true,\n});\n\nconst getCurrentElementList = (\n slideElementList: Element[],\n currentIndex: number\n) => {\n if (currentIndex < 0) {\n return [];\n }\n\n return slideElementList\n .slice(0, currentIndex + 1)\n .reduce<Element[]>((currentList, element) => {\n if (element.type === \"interaction\") {\n return currentList;\n }\n\n const visibleElement = getVisibleElement(element);\n\n if (visibleElement.type === \"diff\") {\n const nextList = applyDiffElement(currentList, visibleElement);\n\n return nextList ?? [...currentList, visibleElement];\n }\n\n if (element.is_new) {\n return [visibleElement];\n }\n\n if (currentList.length === 0) {\n return [visibleElement];\n }\n\n return [...currentList, visibleElement];\n }, []);\n};\n\nconst getStepElementLists = (slideElementList: Element[]) =>\n slideElementList.map((_, index) =>\n getCurrentElementList(slideElementList, index)\n );\n\nconst getStepHasSpeakableElement = (\n elementList: Element[],\n markerElementIndexes: number[],\n currentIndex: number\n) => {\n if (currentIndex < 0) {\n return false;\n }\n\n const startIndex = markerElementIndexes[currentIndex];\n\n if (typeof startIndex !== \"number\") {\n return false;\n }\n\n const nextMarkerIndex =\n markerElementIndexes[currentIndex + 1] ?? elementList.length;\n\n for (let index = startIndex; index < nextMarkerIndex; index += 1) {\n if (elementList[index]?.is_speakable) {\n return true;\n }\n }\n\n return false;\n};\n\nconst hasSameElementReferences = (\n prevElementList: Element[],\n nextElementList: Element[]\n) =>\n prevElementList.length === nextElementList.length &&\n prevElementList.every((element, index) => element === nextElementList[index]);\n\nconst hasSameNumberValues = (prevValues: number[], nextValues: number[]) =>\n prevValues.length === nextValues.length &&\n prevValues.every((value, index) => value === nextValues[index]);\n\nconst useSlide = (elementList: Element[] = []): UseSlideResult => {\n const stableElementListRef = useRef(elementList);\n const stableCurrentAudioSequenceIndexesRef = useRef<number[]>([]);\n const stableElementList = useMemo(() => {\n if (hasSameElementReferences(stableElementListRef.current, elementList)) {\n return stableElementListRef.current;\n }\n\n // Reuse the previous wrapper array when the element references are unchanged.\n stableElementListRef.current = elementList;\n return elementList;\n }, [elementList]);\n const slideElementList = useMemo(\n () => getMarkerElementList(stableElementList),\n [stableElementList]\n );\n const markerElementIndexes = useMemo(\n () => getMarkerElementIndexes(stableElementList),\n [stableElementList]\n );\n const audioList = useMemo(\n () => getAudioList(stableElementList),\n [stableElementList]\n );\n const audioIndexMap = useMemo(\n () => getAudioIndexMap(stableElementList),\n [stableElementList]\n );\n const slideAudioSequenceMap = useMemo(\n () =>\n getSlideAudioSequenceMap(\n stableElementList,\n markerElementIndexes,\n audioIndexMap\n ),\n [audioIndexMap, markerElementIndexes, stableElementList]\n );\n const [currentIndex, setCurrentIndex] = useState(() =>\n getInitialSlideIndex(slideElementList)\n );\n\n useEffect(() => {\n setCurrentIndex((prevIndex) => {\n if (slideElementList.length === 0) {\n return -1;\n }\n\n if (prevIndex >= 0 && prevIndex < slideElementList.length) {\n return prevIndex;\n }\n\n return getInitialSlideIndex(slideElementList);\n });\n }, [slideElementList]);\n\n const handlePrev = useCallback(() => {\n setCurrentIndex((prevIndex) => {\n if (prevIndex <= 0) {\n return Math.max(prevIndex, 0);\n }\n\n return Math.max(prevIndex - 1, 0);\n });\n }, []);\n\n const handleNext = useCallback(() => {\n setCurrentIndex((prevIndex) => {\n if (prevIndex < 0) {\n return prevIndex;\n }\n\n return Math.min(prevIndex + 1, slideElementList.length - 1);\n });\n }, [slideElementList.length]);\n\n const canGoPrev = currentIndex > 0;\n const canGoNext =\n currentIndex >= 0 && currentIndex < slideElementList.length - 1;\n const currentStepElement = useMemo(() => {\n if (currentIndex < 0) {\n return undefined;\n }\n\n const element = slideElementList[currentIndex];\n\n if (!element) {\n return undefined;\n }\n\n return getVisibleElement(element);\n }, [currentIndex, slideElementList]);\n const currentElementList = useMemo(\n () => getCurrentElementList(slideElementList, currentIndex),\n [currentIndex, slideElementList]\n );\n const stepElementLists = useMemo(\n () => getStepElementLists(slideElementList),\n [slideElementList]\n );\n const currentAudioSequenceIndexes = useMemo(() => {\n const nextAudioSequenceIndexes =\n slideAudioSequenceMap.get(currentIndex) ?? [];\n\n if (\n hasSameNumberValues(\n stableCurrentAudioSequenceIndexesRef.current,\n nextAudioSequenceIndexes\n )\n ) {\n return stableCurrentAudioSequenceIndexesRef.current;\n }\n\n stableCurrentAudioSequenceIndexesRef.current = nextAudioSequenceIndexes;\n\n return nextAudioSequenceIndexes;\n }, [currentIndex, slideAudioSequenceMap]);\n const currentStepHasSpeakableElement = useMemo(\n () =>\n getStepHasSpeakableElement(\n stableElementList,\n markerElementIndexes,\n currentIndex\n ),\n [currentIndex, markerElementIndexes, stableElementList]\n );\n const currentInteractionElement = useMemo(\n () =>\n currentStepElement?.type === \"interaction\"\n ? currentStepElement\n : undefined,\n [currentStepElement]\n );\n\n return {\n currentElementList,\n stepElementLists,\n slideElementList,\n currentIndex,\n audioList,\n currentAudioSequenceIndexes,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n canGoPrev,\n canGoNext,\n handlePrev,\n handleNext,\n };\n};\n\nexport default useSlide;\n"],"names":["getMarkerElementList","elementList","element","getMarkerElementIndexes","indexes","index","hasPlayableAudio","isStreamingAudio","segments","segment","getElementAudioKey","candidateElement","getAudioList","list","elementIndex","normalizedAudioSegments","hasAudioSegments","getAudioIndexMap","audioIndexMap","audioIndex","getSlideAudioSequenceMap","markerElementIndexes","sequenceMap","startIndex","slideIndex","nextMarkerIndex","sequenceIndexes","getInitialSlideIndex","slideElementList","visibleIndex","getVisibleElement","getCurrentElementList","currentIndex","currentList","visibleElement","applyDiffElement","getStepElementLists","_","getStepHasSpeakableElement","hasSameElementReferences","prevElementList","nextElementList","hasSameNumberValues","prevValues","nextValues","value","useSlide","stableElementListRef","useRef","stableCurrentAudioSequenceIndexesRef","stableElementList","useMemo","audioList","slideAudioSequenceMap","setCurrentIndex","useState","useEffect","prevIndex","handlePrev","useCallback","handleNext","canGoPrev","canGoNext","currentStepElement","currentElementList","stepElementLists","currentAudioSequenceIndexes","nextAudioSequenceIndexes","currentStepHasSpeakableElement","currentInteractionElement"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"useSlide.es.js","sources":["../../../src/components/Slide/useSlide.ts"],"sourcesContent":["import { useCallback, useEffect, useMemo, useRef, useState } from \"react\";\n\nimport { applyDiffElement } from \"./diff-utils\";\nimport type { Element, ElementAudioSegment } from \"./types\";\nimport { resolveNextSlideIndexAfterMarkerAppend } from \"./utils/streamingNavigation\";\n\nexport interface SlideAudioItem {\n audioKey?: string;\n sequenceNumber?: number;\n audioUrl?: string;\n audioSegments?: ElementAudioSegment[];\n isAudioStreaming?: boolean;\n element?: Element;\n}\n\nexport interface UseSlideResult {\n currentElementList: Element[];\n stepElementLists: Element[][];\n slideElementList: Element[];\n currentIndex: number;\n audioList: SlideAudioItem[];\n currentAudioSequenceIndexes: number[];\n currentStepHasSpeakableElement: boolean;\n currentInteractionElement?: Element;\n canGoPrev: boolean;\n canGoNext: boolean;\n handlePrev: () => void;\n handleNext: () => void;\n}\n\nconst getMarkerElementList = (elementList: Element[]) =>\n elementList.filter((element) => element.is_marker);\n\nconst getMarkerElementIndexes = (elementList: Element[]) =>\n elementList.reduce<number[]>((indexes, element, index) => {\n if (element.is_marker) {\n indexes.push(index);\n }\n\n return indexes;\n }, []);\n\nconst hasPlayableAudio = (element?: Element) =>\n Boolean(\n element?.is_speakable &&\n (element.audio_url || (element.audio_segments?.length ?? 0) > 0)\n );\n\nconst isStreamingAudio = (segments: ElementAudioSegment[] = []) =>\n segments.length > 0 && !segments.some((segment) => segment.is_final);\n\nconst getElementAudioKey = (element: Element, index: number) => {\n const candidateElement = element as Element & {\n element_bid?: string;\n blockBid?: string;\n generated_block_bid?: string;\n };\n\n return (\n candidateElement.element_bid ||\n candidateElement.blockBid ||\n candidateElement.generated_block_bid ||\n `${element.type}:${String(element.sequence_number ?? index)}`\n );\n};\n\nconst getAudioList = (elementList: Element[]) =>\n elementList.reduce<SlideAudioItem[]>((list, element, elementIndex) => {\n if (hasPlayableAudio(element)) {\n const normalizedAudioSegments = element.audio_segments ?? [];\n const hasAudioSegments = normalizedAudioSegments.length > 0;\n\n list.push({\n audioKey: getElementAudioKey(element, elementIndex),\n sequenceNumber: element.sequence_number,\n // Keep one canonical source to avoid duplicated playback resets.\n // When streaming segments exist, keep playback on the segment source.\n audioUrl: hasAudioSegments ? \"\" : element.audio_url,\n audioSegments: normalizedAudioSegments,\n isAudioStreaming: isStreamingAudio(normalizedAudioSegments),\n element,\n });\n }\n\n return list;\n }, []);\n\nconst getAudioIndexMap = (elementList: Element[]) => {\n const audioIndexMap = new Map<number, number>();\n let audioIndex = 0;\n\n elementList.forEach((element, index) => {\n if (hasPlayableAudio(element)) {\n audioIndexMap.set(index, audioIndex);\n audioIndex += 1;\n }\n });\n\n return audioIndexMap;\n};\n\nconst getSlideAudioSequenceMap = (\n elementList: Element[],\n markerElementIndexes: number[],\n audioIndexMap: Map<number, number>\n) =>\n markerElementIndexes.reduce<Map<number, number[]>>(\n (sequenceMap, startIndex, slideIndex) => {\n const nextMarkerIndex =\n markerElementIndexes[slideIndex + 1] ?? elementList.length;\n const sequenceIndexes: number[] = [];\n\n for (let index = startIndex; index < nextMarkerIndex; index += 1) {\n const element = elementList[index];\n\n if (!hasPlayableAudio(element)) {\n continue;\n }\n\n const audioIndex = audioIndexMap.get(index);\n\n if (audioIndex == null) {\n continue;\n }\n\n sequenceIndexes.push(audioIndex);\n }\n\n sequenceMap.set(slideIndex, sequenceIndexes);\n return sequenceMap;\n },\n new Map<number, number[]>()\n );\n\nconst getInitialSlideIndex = (slideElementList: Element[]) => {\n const visibleIndex = slideElementList.findIndex(\n (element) => element.is_renderable === true\n );\n\n if (visibleIndex >= 0) {\n return visibleIndex;\n }\n\n return slideElementList.findIndex(\n (element) => element.is_renderable !== false\n );\n};\n\nconst getVisibleElement = (element: Element): Element => ({\n ...element,\n is_renderable: true,\n});\n\nconst getCurrentElementList = (\n slideElementList: Element[],\n currentIndex: number\n) => {\n if (currentIndex < 0) {\n return [];\n }\n\n return slideElementList\n .slice(0, currentIndex + 1)\n .reduce<Element[]>((currentList, element) => {\n if (element.type === \"interaction\") {\n return currentList;\n }\n\n const visibleElement = getVisibleElement(element);\n\n if (visibleElement.type === \"diff\") {\n const nextList = applyDiffElement(currentList, visibleElement);\n\n return nextList ?? [...currentList, visibleElement];\n }\n\n if (element.is_new) {\n return [visibleElement];\n }\n\n if (currentList.length === 0) {\n return [visibleElement];\n }\n\n return [...currentList, visibleElement];\n }, []);\n};\n\nconst getStepElementLists = (slideElementList: Element[]) =>\n slideElementList.map((_, index) =>\n getCurrentElementList(slideElementList, index)\n );\n\nconst getStepHasSpeakableElement = (\n elementList: Element[],\n markerElementIndexes: number[],\n currentIndex: number\n) => {\n if (currentIndex < 0) {\n return false;\n }\n\n const startIndex = markerElementIndexes[currentIndex];\n\n if (typeof startIndex !== \"number\") {\n return false;\n }\n\n const nextMarkerIndex =\n markerElementIndexes[currentIndex + 1] ?? elementList.length;\n\n for (let index = startIndex; index < nextMarkerIndex; index += 1) {\n if (elementList[index]?.is_speakable) {\n return true;\n }\n }\n\n return false;\n};\n\nconst hasSameElementReferences = (\n prevElementList: Element[],\n nextElementList: Element[]\n) =>\n prevElementList.length === nextElementList.length &&\n prevElementList.every((element, index) => element === nextElementList[index]);\n\nconst hasSameNumberValues = (prevValues: number[], nextValues: number[]) =>\n prevValues.length === nextValues.length &&\n prevValues.every((value, index) => value === nextValues[index]);\n\nconst useSlide = (elementList: Element[] = []): UseSlideResult => {\n const stableElementListRef = useRef(elementList);\n const stableCurrentAudioSequenceIndexesRef = useRef<number[]>([]);\n const stableElementList = useMemo(() => {\n if (hasSameElementReferences(stableElementListRef.current, elementList)) {\n return stableElementListRef.current;\n }\n\n // Reuse the previous wrapper array when the element references are unchanged.\n stableElementListRef.current = elementList;\n return elementList;\n }, [elementList]);\n const slideElementList = useMemo(\n () => getMarkerElementList(stableElementList),\n [stableElementList]\n );\n const previousSlideElementListRef = useRef(slideElementList);\n const markerElementIndexes = useMemo(\n () => getMarkerElementIndexes(stableElementList),\n [stableElementList]\n );\n const audioList = useMemo(\n () => getAudioList(stableElementList),\n [stableElementList]\n );\n const audioIndexMap = useMemo(\n () => getAudioIndexMap(stableElementList),\n [stableElementList]\n );\n const slideAudioSequenceMap = useMemo(\n () =>\n getSlideAudioSequenceMap(\n stableElementList,\n markerElementIndexes,\n audioIndexMap\n ),\n [audioIndexMap, markerElementIndexes, stableElementList]\n );\n const [currentIndex, setCurrentIndex] = useState(() =>\n getInitialSlideIndex(slideElementList)\n );\n\n useEffect(() => {\n const previousSlideElementList = previousSlideElementListRef.current;\n\n setCurrentIndex((prevIndex) => {\n const resolvedNextIndex = resolveNextSlideIndexAfterMarkerAppend({\n previousIndex: prevIndex,\n previousSlideElementList,\n nextSlideElementList: slideElementList,\n });\n\n if (resolvedNextIndex >= 0) {\n return resolvedNextIndex;\n }\n\n return getInitialSlideIndex(slideElementList);\n });\n\n previousSlideElementListRef.current = slideElementList;\n }, [slideElementList]);\n\n const handlePrev = useCallback(() => {\n setCurrentIndex((prevIndex) => {\n if (prevIndex <= 0) {\n return Math.max(prevIndex, 0);\n }\n\n return Math.max(prevIndex - 1, 0);\n });\n }, []);\n\n const handleNext = useCallback(() => {\n setCurrentIndex((prevIndex) => {\n if (prevIndex < 0) {\n return prevIndex;\n }\n\n return Math.min(prevIndex + 1, slideElementList.length - 1);\n });\n }, [slideElementList.length]);\n\n const canGoPrev = currentIndex > 0;\n const canGoNext =\n currentIndex >= 0 && currentIndex < slideElementList.length - 1;\n const currentStepElement = useMemo(() => {\n if (currentIndex < 0) {\n return undefined;\n }\n\n const element = slideElementList[currentIndex];\n\n if (!element) {\n return undefined;\n }\n\n return getVisibleElement(element);\n }, [currentIndex, slideElementList]);\n const currentElementList = useMemo(\n () => getCurrentElementList(slideElementList, currentIndex),\n [currentIndex, slideElementList]\n );\n const stepElementLists = useMemo(\n () => getStepElementLists(slideElementList),\n [slideElementList]\n );\n const currentAudioSequenceIndexes = useMemo(() => {\n const nextAudioSequenceIndexes =\n slideAudioSequenceMap.get(currentIndex) ?? [];\n\n if (\n hasSameNumberValues(\n stableCurrentAudioSequenceIndexesRef.current,\n nextAudioSequenceIndexes\n )\n ) {\n return stableCurrentAudioSequenceIndexesRef.current;\n }\n\n stableCurrentAudioSequenceIndexesRef.current = nextAudioSequenceIndexes;\n\n return nextAudioSequenceIndexes;\n }, [currentIndex, slideAudioSequenceMap]);\n const currentStepHasSpeakableElement = useMemo(\n () =>\n getStepHasSpeakableElement(\n stableElementList,\n markerElementIndexes,\n currentIndex\n ),\n [currentIndex, markerElementIndexes, stableElementList]\n );\n const currentInteractionElement = useMemo(\n () =>\n currentStepElement?.type === \"interaction\"\n ? currentStepElement\n : undefined,\n [currentStepElement]\n );\n\n return {\n currentElementList,\n stepElementLists,\n slideElementList,\n currentIndex,\n audioList,\n currentAudioSequenceIndexes,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n canGoPrev,\n canGoNext,\n handlePrev,\n handleNext,\n };\n};\n\nexport default useSlide;\n"],"names":["getMarkerElementList","elementList","element","getMarkerElementIndexes","indexes","index","hasPlayableAudio","isStreamingAudio","segments","segment","getElementAudioKey","candidateElement","getAudioList","list","elementIndex","normalizedAudioSegments","hasAudioSegments","getAudioIndexMap","audioIndexMap","audioIndex","getSlideAudioSequenceMap","markerElementIndexes","sequenceMap","startIndex","slideIndex","nextMarkerIndex","sequenceIndexes","getInitialSlideIndex","slideElementList","visibleIndex","getVisibleElement","getCurrentElementList","currentIndex","currentList","visibleElement","applyDiffElement","getStepElementLists","_","getStepHasSpeakableElement","hasSameElementReferences","prevElementList","nextElementList","hasSameNumberValues","prevValues","nextValues","value","useSlide","stableElementListRef","useRef","stableCurrentAudioSequenceIndexesRef","stableElementList","useMemo","previousSlideElementListRef","audioList","slideAudioSequenceMap","setCurrentIndex","useState","useEffect","previousSlideElementList","prevIndex","resolvedNextIndex","resolveNextSlideIndexAfterMarkerAppend","handlePrev","useCallback","handleNext","canGoPrev","canGoNext","currentStepElement","currentElementList","stepElementLists","currentAudioSequenceIndexes","nextAudioSequenceIndexes","currentStepHasSpeakableElement","currentInteractionElement"],"mappings":"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"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const k=({previousMarkerCount:e,nextMarkerCount:o,previousIndex:n,previousCanGoNext:d,nextCanGoNext:a,currentAudioKey:c,hasCompletedCurrentStepAudio:l,hasResolvedCurrentInteraction:i,currentStepHasSpeakableElement:t,currentInteractionElement:s,isAutoAdvanceEnabled:p,shouldUseSilentStepAutoAdvanceToggle:S})=>{const r=o>e,u=e>0&&n===e-1,A=!d&&a,f=!!s&&i,h=t&&l,v=!t&&!s&&(!S||p);return!r||!u||!A||c?!1:f||h||v};exports.shouldAutoAdvanceIntoAppendedMarker=k;
|
|
2
|
+
//# sourceMappingURL=appendedMarkerAdvance.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appendedMarkerAdvance.cjs.js","sources":["../../../../src/components/Slide/utils/appendedMarkerAdvance.ts"],"sourcesContent":["import type { Element } from \"../types\";\n\ninterface ShouldAutoAdvanceIntoAppendedMarkerParams {\n previousMarkerCount: number;\n nextMarkerCount: number;\n previousIndex: number;\n previousCanGoNext: boolean;\n nextCanGoNext: boolean;\n currentAudioKey: string | null;\n hasCompletedCurrentStepAudio: boolean;\n hasResolvedCurrentInteraction: boolean;\n currentStepHasSpeakableElement: boolean;\n currentInteractionElement?: Element;\n isAutoAdvanceEnabled: boolean;\n shouldUseSilentStepAutoAdvanceToggle: boolean;\n}\n\nexport const shouldAutoAdvanceIntoAppendedMarker = ({\n previousMarkerCount,\n nextMarkerCount,\n previousIndex,\n previousCanGoNext,\n nextCanGoNext,\n currentAudioKey,\n hasCompletedCurrentStepAudio,\n hasResolvedCurrentInteraction,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n isAutoAdvanceEnabled,\n shouldUseSilentStepAutoAdvanceToggle,\n}: ShouldAutoAdvanceIntoAppendedMarkerParams) => {\n const hasAppendedMarker = nextMarkerCount > previousMarkerCount;\n const wasFocusedOnPreviousLastMarker =\n previousMarkerCount > 0 && previousIndex === previousMarkerCount - 1;\n const hasJustUnlockedNextStep = !previousCanGoNext && nextCanGoNext;\n const isResolvedInteractionStep =\n Boolean(currentInteractionElement) && hasResolvedCurrentInteraction;\n const isCompletedSpeakableStep =\n currentStepHasSpeakableElement && hasCompletedCurrentStepAudio;\n const isSilentStep =\n !currentStepHasSpeakableElement && !currentInteractionElement;\n const shouldAutoAdvanceSilentStep =\n isSilentStep &&\n (!shouldUseSilentStepAutoAdvanceToggle || isAutoAdvanceEnabled);\n\n if (!hasAppendedMarker || !wasFocusedOnPreviousLastMarker) {\n return false;\n }\n\n if (!hasJustUnlockedNextStep || currentAudioKey) {\n return false;\n }\n\n return (\n isResolvedInteractionStep ||\n isCompletedSpeakableStep ||\n shouldAutoAdvanceSilentStep\n );\n};\n"],"names":["shouldAutoAdvanceIntoAppendedMarker","previousMarkerCount","nextMarkerCount","previousIndex","previousCanGoNext","nextCanGoNext","currentAudioKey","hasCompletedCurrentStepAudio","hasResolvedCurrentInteraction","currentStepHasSpeakableElement","currentInteractionElement","isAutoAdvanceEnabled","shouldUseSilentStepAutoAdvanceToggle","hasAppendedMarker","wasFocusedOnPreviousLastMarker","hasJustUnlockedNextStep","isResolvedInteractionStep","isCompletedSpeakableStep","shouldAutoAdvanceSilentStep"],"mappings":"gFAiBO,MAAMA,EAAsC,CAAC,CAClD,oBAAAC,EACA,gBAAAC,EACA,cAAAC,EACA,kBAAAC,EACA,cAAAC,EACA,gBAAAC,EACA,6BAAAC,EACA,8BAAAC,EACA,+BAAAC,EACA,0BAAAC,EACA,qBAAAC,EACA,qCAAAC,CACF,IAAiD,CAC/C,MAAMC,EAAoBX,EAAkBD,EACtCa,EACJb,EAAsB,GAAKE,IAAkBF,EAAsB,EAC/Dc,EAA0B,CAACX,GAAqBC,EAChDW,EACJ,EAAQN,GAA8BF,EAClCS,EACJR,GAAkCF,EAG9BW,EADJ,CAACT,GAAkC,CAACC,IAGnC,CAACE,GAAwCD,GAM5C,MAJI,CAACE,GAAqB,CAACC,GAIvB,CAACC,GAA2BT,EACvB,GAIPU,GACAC,GACAC,CAEJ"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Element } from '../types';
|
|
2
|
+
interface ShouldAutoAdvanceIntoAppendedMarkerParams {
|
|
3
|
+
previousMarkerCount: number;
|
|
4
|
+
nextMarkerCount: number;
|
|
5
|
+
previousIndex: number;
|
|
6
|
+
previousCanGoNext: boolean;
|
|
7
|
+
nextCanGoNext: boolean;
|
|
8
|
+
currentAudioKey: string | null;
|
|
9
|
+
hasCompletedCurrentStepAudio: boolean;
|
|
10
|
+
hasResolvedCurrentInteraction: boolean;
|
|
11
|
+
currentStepHasSpeakableElement: boolean;
|
|
12
|
+
currentInteractionElement?: Element;
|
|
13
|
+
isAutoAdvanceEnabled: boolean;
|
|
14
|
+
shouldUseSilentStepAutoAdvanceToggle: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare const shouldAutoAdvanceIntoAppendedMarker: ({ previousMarkerCount, nextMarkerCount, previousIndex, previousCanGoNext, nextCanGoNext, currentAudioKey, hasCompletedCurrentStepAudio, hasResolvedCurrentInteraction, currentStepHasSpeakableElement, currentInteractionElement, isAutoAdvanceEnabled, shouldUseSilentStepAutoAdvanceToggle, }: ShouldAutoAdvanceIntoAppendedMarkerParams) => boolean;
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
const x = ({
|
|
2
|
+
previousMarkerCount: e,
|
|
3
|
+
nextMarkerCount: o,
|
|
4
|
+
previousIndex: n,
|
|
5
|
+
previousCanGoNext: d,
|
|
6
|
+
nextCanGoNext: c,
|
|
7
|
+
currentAudioKey: a,
|
|
8
|
+
hasCompletedCurrentStepAudio: l,
|
|
9
|
+
hasResolvedCurrentInteraction: p,
|
|
10
|
+
currentStepHasSpeakableElement: s,
|
|
11
|
+
currentInteractionElement: t,
|
|
12
|
+
isAutoAdvanceEnabled: i,
|
|
13
|
+
shouldUseSilentStepAutoAdvanceToggle: S
|
|
14
|
+
}) => {
|
|
15
|
+
const A = o > e, f = e > 0 && n === e - 1, h = !d && c, r = !!t && p, u = s && l, k = !s && !t && (!S || i);
|
|
16
|
+
return !A || !f || !h || a ? !1 : r || u || k;
|
|
17
|
+
};
|
|
18
|
+
export {
|
|
19
|
+
x as shouldAutoAdvanceIntoAppendedMarker
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=appendedMarkerAdvance.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appendedMarkerAdvance.es.js","sources":["../../../../src/components/Slide/utils/appendedMarkerAdvance.ts"],"sourcesContent":["import type { Element } from \"../types\";\n\ninterface ShouldAutoAdvanceIntoAppendedMarkerParams {\n previousMarkerCount: number;\n nextMarkerCount: number;\n previousIndex: number;\n previousCanGoNext: boolean;\n nextCanGoNext: boolean;\n currentAudioKey: string | null;\n hasCompletedCurrentStepAudio: boolean;\n hasResolvedCurrentInteraction: boolean;\n currentStepHasSpeakableElement: boolean;\n currentInteractionElement?: Element;\n isAutoAdvanceEnabled: boolean;\n shouldUseSilentStepAutoAdvanceToggle: boolean;\n}\n\nexport const shouldAutoAdvanceIntoAppendedMarker = ({\n previousMarkerCount,\n nextMarkerCount,\n previousIndex,\n previousCanGoNext,\n nextCanGoNext,\n currentAudioKey,\n hasCompletedCurrentStepAudio,\n hasResolvedCurrentInteraction,\n currentStepHasSpeakableElement,\n currentInteractionElement,\n isAutoAdvanceEnabled,\n shouldUseSilentStepAutoAdvanceToggle,\n}: ShouldAutoAdvanceIntoAppendedMarkerParams) => {\n const hasAppendedMarker = nextMarkerCount > previousMarkerCount;\n const wasFocusedOnPreviousLastMarker =\n previousMarkerCount > 0 && previousIndex === previousMarkerCount - 1;\n const hasJustUnlockedNextStep = !previousCanGoNext && nextCanGoNext;\n const isResolvedInteractionStep =\n Boolean(currentInteractionElement) && hasResolvedCurrentInteraction;\n const isCompletedSpeakableStep =\n currentStepHasSpeakableElement && hasCompletedCurrentStepAudio;\n const isSilentStep =\n !currentStepHasSpeakableElement && !currentInteractionElement;\n const shouldAutoAdvanceSilentStep =\n isSilentStep &&\n (!shouldUseSilentStepAutoAdvanceToggle || isAutoAdvanceEnabled);\n\n if (!hasAppendedMarker || !wasFocusedOnPreviousLastMarker) {\n return false;\n }\n\n if (!hasJustUnlockedNextStep || currentAudioKey) {\n return false;\n }\n\n return (\n isResolvedInteractionStep ||\n isCompletedSpeakableStep ||\n shouldAutoAdvanceSilentStep\n );\n};\n"],"names":["shouldAutoAdvanceIntoAppendedMarker","previousMarkerCount","nextMarkerCount","previousIndex","previousCanGoNext","nextCanGoNext","currentAudioKey","hasCompletedCurrentStepAudio","hasResolvedCurrentInteraction","currentStepHasSpeakableElement","currentInteractionElement","isAutoAdvanceEnabled","shouldUseSilentStepAutoAdvanceToggle","hasAppendedMarker","wasFocusedOnPreviousLastMarker","hasJustUnlockedNextStep","isResolvedInteractionStep","isCompletedSpeakableStep","shouldAutoAdvanceSilentStep"],"mappings":"AAiBO,MAAMA,IAAsC,CAAC;AAAA,EAClD,qBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,8BAAAC;AAAA,EACA,+BAAAC;AAAA,EACA,gCAAAC;AAAA,EACA,2BAAAC;AAAA,EACA,sBAAAC;AAAA,EACA,sCAAAC;AACF,MAAiD;AAC/C,QAAMC,IAAoBX,IAAkBD,GACtCa,IACJb,IAAsB,KAAKE,MAAkBF,IAAsB,GAC/Dc,IAA0B,CAACX,KAAqBC,GAChDW,IACJ,EAAQN,KAA8BF,GAClCS,IACJR,KAAkCF,GAG9BW,IADJ,CAACT,KAAkC,CAACC,MAGnC,CAACE,KAAwCD;AAM5C,SAJI,CAACE,KAAqB,CAACC,KAIvB,CAACC,KAA2BT,IACvB,KAIPU,KACAC,KACAC;AAEJ;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const g=r=>!!(r?.type==="interaction"&&(r.readonly||r.user_input?.trim())),h=(r,a)=>r.length<=a.length&&r.every((n,t)=>n===a[t]),f=({previousIndex:r,previousSlideElementList:a,nextSlideElementList:n})=>{if(n.length===0)return-1;const t=n.length>a.length&&h(a,n),o=a.length-1,c=r===o,e=r>=0?a[r]:void 0;return t&&c&&g(e)?a.length:r>=0&&r<n.length?r:-1};exports.resolveNextSlideIndexAfterMarkerAppend=f;
|
|
2
|
+
//# sourceMappingURL=streamingNavigation.cjs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamingNavigation.cjs.js","sources":["../../../../src/components/Slide/utils/streamingNavigation.ts"],"sourcesContent":["import type { Element } from \"../types\";\n\ninterface ResolveNextSlideIndexParams {\n previousIndex: number;\n previousSlideElementList: Element[];\n nextSlideElementList: Element[];\n}\n\nconst isResolvedInteractionElement = (element?: Element) =>\n Boolean(\n element?.type === \"interaction\" &&\n (element.readonly || element.user_input?.trim())\n );\n\nconst hasStableMarkerPrefix = (\n previousSlideElementList: Element[],\n nextSlideElementList: Element[]\n) =>\n previousSlideElementList.length <= nextSlideElementList.length &&\n previousSlideElementList.every(\n (element, index) => element === nextSlideElementList[index]\n );\n\nexport const resolveNextSlideIndexAfterMarkerAppend = ({\n previousIndex,\n previousSlideElementList,\n nextSlideElementList,\n}: ResolveNextSlideIndexParams) => {\n if (nextSlideElementList.length === 0) {\n return -1;\n }\n\n const hasAppendedMarkers =\n nextSlideElementList.length > previousSlideElementList.length &&\n hasStableMarkerPrefix(previousSlideElementList, nextSlideElementList);\n const previousLastMarkerIndex = previousSlideElementList.length - 1;\n const wasFocusedOnPreviousLastMarker =\n previousIndex === previousLastMarkerIndex;\n const previousCurrentElement =\n previousIndex >= 0 ? previousSlideElementList[previousIndex] : undefined;\n\n // When a resolved interaction is already the terminal step and SSE appends\n // the first follow-up marker, jump into that new marker immediately instead\n // of waiting for the interaction auto-close and silent-step delay.\n if (\n hasAppendedMarkers &&\n wasFocusedOnPreviousLastMarker &&\n isResolvedInteractionElement(previousCurrentElement)\n ) {\n return previousSlideElementList.length;\n }\n\n if (previousIndex >= 0 && previousIndex < nextSlideElementList.length) {\n return previousIndex;\n }\n\n return -1;\n};\n"],"names":["isResolvedInteractionElement","element","hasStableMarkerPrefix","previousSlideElementList","nextSlideElementList","index","resolveNextSlideIndexAfterMarkerAppend","previousIndex","hasAppendedMarkers","previousLastMarkerIndex","wasFocusedOnPreviousLastMarker","previousCurrentElement"],"mappings":"gFAQA,MAAMA,EAAgCC,GACpC,GACEA,GAAS,OAAS,gBACfA,EAAQ,UAAYA,EAAQ,YAAY,KAAA,IAGzCC,EAAwB,CAC5BC,EACAC,IAEAD,EAAyB,QAAUC,EAAqB,QACxDD,EAAyB,MACvB,CAACF,EAASI,IAAUJ,IAAYG,EAAqBC,CAAK,CAC5D,EAEWC,EAAyC,CAAC,CACrD,cAAAC,EACA,yBAAAJ,EACA,qBAAAC,CACF,IAAmC,CACjC,GAAIA,EAAqB,SAAW,EAClC,MAAO,GAGT,MAAMI,EACJJ,EAAqB,OAASD,EAAyB,QACvDD,EAAsBC,EAA0BC,CAAoB,EAChEK,EAA0BN,EAAyB,OAAS,EAC5DO,EACJH,IAAkBE,EACdE,EACJJ,GAAiB,EAAIJ,EAAyBI,CAAa,EAAI,OAKjE,OACEC,GACAE,GACAV,EAA6BW,CAAsB,EAE5CR,EAAyB,OAG9BI,GAAiB,GAAKA,EAAgBH,EAAqB,OACtDG,EAGF,EACT"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Element } from '../types';
|
|
2
|
+
interface ResolveNextSlideIndexParams {
|
|
3
|
+
previousIndex: number;
|
|
4
|
+
previousSlideElementList: Element[];
|
|
5
|
+
nextSlideElementList: Element[];
|
|
6
|
+
}
|
|
7
|
+
export declare const resolveNextSlideIndexAfterMarkerAppend: ({ previousIndex, previousSlideElementList, nextSlideElementList, }: ResolveNextSlideIndexParams) => number;
|
|
8
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
const g = (r) => !!(r?.type === "interaction" && (r.readonly || r.user_input?.trim())), f = (r, a) => r.length <= a.length && r.every(
|
|
2
|
+
(n, t) => n === a[t]
|
|
3
|
+
), k = ({
|
|
4
|
+
previousIndex: r,
|
|
5
|
+
previousSlideElementList: a,
|
|
6
|
+
nextSlideElementList: n
|
|
7
|
+
}) => {
|
|
8
|
+
if (n.length === 0)
|
|
9
|
+
return -1;
|
|
10
|
+
const t = n.length > a.length && f(a, n), c = a.length - 1, h = r === c, o = r >= 0 ? a[r] : void 0;
|
|
11
|
+
return t && h && g(o) ? a.length : r >= 0 && r < n.length ? r : -1;
|
|
12
|
+
};
|
|
13
|
+
export {
|
|
14
|
+
k as resolveNextSlideIndexAfterMarkerAppend
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=streamingNavigation.es.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamingNavigation.es.js","sources":["../../../../src/components/Slide/utils/streamingNavigation.ts"],"sourcesContent":["import type { Element } from \"../types\";\n\ninterface ResolveNextSlideIndexParams {\n previousIndex: number;\n previousSlideElementList: Element[];\n nextSlideElementList: Element[];\n}\n\nconst isResolvedInteractionElement = (element?: Element) =>\n Boolean(\n element?.type === \"interaction\" &&\n (element.readonly || element.user_input?.trim())\n );\n\nconst hasStableMarkerPrefix = (\n previousSlideElementList: Element[],\n nextSlideElementList: Element[]\n) =>\n previousSlideElementList.length <= nextSlideElementList.length &&\n previousSlideElementList.every(\n (element, index) => element === nextSlideElementList[index]\n );\n\nexport const resolveNextSlideIndexAfterMarkerAppend = ({\n previousIndex,\n previousSlideElementList,\n nextSlideElementList,\n}: ResolveNextSlideIndexParams) => {\n if (nextSlideElementList.length === 0) {\n return -1;\n }\n\n const hasAppendedMarkers =\n nextSlideElementList.length > previousSlideElementList.length &&\n hasStableMarkerPrefix(previousSlideElementList, nextSlideElementList);\n const previousLastMarkerIndex = previousSlideElementList.length - 1;\n const wasFocusedOnPreviousLastMarker =\n previousIndex === previousLastMarkerIndex;\n const previousCurrentElement =\n previousIndex >= 0 ? previousSlideElementList[previousIndex] : undefined;\n\n // When a resolved interaction is already the terminal step and SSE appends\n // the first follow-up marker, jump into that new marker immediately instead\n // of waiting for the interaction auto-close and silent-step delay.\n if (\n hasAppendedMarkers &&\n wasFocusedOnPreviousLastMarker &&\n isResolvedInteractionElement(previousCurrentElement)\n ) {\n return previousSlideElementList.length;\n }\n\n if (previousIndex >= 0 && previousIndex < nextSlideElementList.length) {\n return previousIndex;\n }\n\n return -1;\n};\n"],"names":["isResolvedInteractionElement","element","hasStableMarkerPrefix","previousSlideElementList","nextSlideElementList","index","resolveNextSlideIndexAfterMarkerAppend","previousIndex","hasAppendedMarkers","previousLastMarkerIndex","wasFocusedOnPreviousLastMarker","previousCurrentElement"],"mappings":"AAQA,MAAMA,IAA+B,CAACC,MACpC,GACEA,GAAS,SAAS,kBACfA,EAAQ,YAAYA,EAAQ,YAAY,KAAA,KAGzCC,IAAwB,CAC5BC,GACAC,MAEAD,EAAyB,UAAUC,EAAqB,UACxDD,EAAyB;AAAA,EACvB,CAACF,GAASI,MAAUJ,MAAYG,EAAqBC,CAAK;AAC5D,GAEWC,IAAyC,CAAC;AAAA,EACrD,eAAAC;AAAA,EACA,0BAAAJ;AAAA,EACA,sBAAAC;AACF,MAAmC;AACjC,MAAIA,EAAqB,WAAW;AAClC,WAAO;AAGT,QAAMI,IACJJ,EAAqB,SAASD,EAAyB,UACvDD,EAAsBC,GAA0BC,CAAoB,GAChEK,IAA0BN,EAAyB,SAAS,GAC5DO,IACJH,MAAkBE,GACdE,IACJJ,KAAiB,IAAIJ,EAAyBI,CAAa,IAAI;AAKjE,SACEC,KACAE,KACAV,EAA6BW,CAAsB,IAE5CR,EAAyB,SAG9BI,KAAiB,KAAKA,IAAgBH,EAAqB,SACtDG,IAGF;AACT;"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../../_virtual/jsx-runtime.cjs.js"),s=require("react"),u=require("../../../markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/TextArea.cjs.js");require("../../../_virtual/index.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const o=require("../../../_virtual/jsx-runtime.cjs.js"),s=require("react"),u=require("../../../markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/TextArea.cjs.js");require("../../../_virtual/index.cjs4.js");require("../../../markdown-flow-ui/node_modules/.pnpm/rc-resize-observer@1.4.3_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-resize-observer/es/index.cjs.js");require("../../../markdown-flow-ui/node_modules/.pnpm/rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useLayoutEffect.cjs.js");require("../../../markdown-flow-ui/node_modules/.pnpm/rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/raf.cjs.js");const d=require("../../../lib/utils.cjs.js");function c(e){const t=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(e){for(const r in e)if(r!=="default"){const a=Object.getOwnPropertyDescriptor(e,r);Object.defineProperty(t,r,a.get?a:{enumerable:!0,get:()=>e[r]})}}return t.default=e,Object.freeze(t)}const l=c(s),i=l.forwardRef(({className:e,autoSize:t={minRows:1},style:r,...a},n)=>o.jsxRuntimeExports.jsx(u.default,{ref:n,autoSize:t,className:d.cn("border-input placeholder:text-muted-foreground aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 w-full rounded-md border bg-transparent pl-3 py-1.5 text-base shadow-xs transition-[color,box-shadow] outline-none disabled:cursor-not-allowed disabled:opacity-50","resize-none",e),style:{whiteSpace:"pre-wrap",wordBreak:"break-word",...r},...a}));i.displayName="Textarea";exports.Textarea=i;
|
|
2
2
|
//# sourceMappingURL=textarea.cjs.js.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { j as i } from "../../../_virtual/jsx-runtime.es.js";
|
|
2
2
|
import * as d from "react";
|
|
3
3
|
import n from "../../../markdown-flow-ui/node_modules/.pnpm/rc-textarea@1.10.2_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-textarea/es/TextArea.es.js";
|
|
4
|
-
import "../../../_virtual/index.
|
|
4
|
+
import "../../../_virtual/index.es4.js";
|
|
5
5
|
import "../../../markdown-flow-ui/node_modules/.pnpm/rc-resize-observer@1.4.3_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-resize-observer/es/index.es.js";
|
|
6
6
|
import "../../../markdown-flow-ui/node_modules/.pnpm/rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useLayoutEffect.es.js";
|
|
7
7
|
import "../../../markdown-flow-ui/node_modules/.pnpm/rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/raf.es.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("../../../../comma-separated-tokens@2.0.3/node_modules/comma-separated-tokens/index.cjs.js"),u=require("../../../../devlop@1.1.0/node_modules/devlop/lib/default.cjs.js"),f=require("../../../../property-information@7.1.0/node_modules/property-information/index.cjs.js"),C=require("../../../../space-separated-tokens@2.0.2/node_modules/space-separated-tokens/index.cjs.js"),S=require("../../../../../../../_virtual/index.
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("../../../../comma-separated-tokens@2.0.3/node_modules/comma-separated-tokens/index.cjs.js"),u=require("../../../../devlop@1.1.0/node_modules/devlop/lib/default.cjs.js"),f=require("../../../../property-information@7.1.0/node_modules/property-information/index.cjs.js"),C=require("../../../../space-separated-tokens@2.0.2/node_modules/space-separated-tokens/index.cjs.js"),S=require("../../../../../../../_virtual/index.cjs5.js"),N=require("../../../../hast-util-whitespace@3.0.0/node_modules/hast-util-whitespace/lib/index.cjs.js"),x=require("../../../../estree-util-is-identifier-name@3.0.0/node_modules/estree-util-is-identifier-name/lib/index.cjs.js"),h=require("../../../../vfile-message@4.0.3/node_modules/vfile-message/lib/index.cjs.js"),j=require("../../../../property-information@7.1.0/node_modules/property-information/lib/find.cjs.js"),A=require("../../../../property-information@7.1.0/node_modules/property-information/lib/hast-to-react.cjs.js"),T=require("../../../../unist-util-position@5.0.0/node_modules/unist-util-position/lib/index.cjs.js"),m={}.hasOwnProperty,F=new Map,P=/[A-Z]/g,q=new Set(["table","tbody","thead","tfoot","tr"]),J=new Set(["td","th"]),g="https://github.com/syntax-tree/hast-util-to-jsx-runtime";function M(t,e){if(!e||e.Fragment===void 0)throw new TypeError("Expected `Fragment` in options");const r=e.filePath||void 0;let n;if(e.development){if(typeof e.jsxDEV!="function")throw new TypeError("Expected `jsxDEV` in options when `development: true`");n=K(r,e.jsxDEV)}else{if(typeof e.jsx!="function")throw new TypeError("Expected `jsx` in production options");if(typeof e.jsxs!="function")throw new TypeError("Expected `jsxs` in production options");n=k(r,e.jsx,e.jsxs)}const s={Fragment:e.Fragment,ancestors:[],components:e.components||{},create:n,elementAttributeNameCase:e.elementAttributeNameCase||"react",evaluater:e.createEvaluater?e.createEvaluater():void 0,filePath:r,ignoreInvalidStyle:e.ignoreInvalidStyle||!1,passKeys:e.passKeys!==!1,passNode:e.passNode||!1,schema:e.space==="svg"?f.svg:f.html,stylePropertyNameCase:e.stylePropertyNameCase||"dom",tableCellAlignToStyle:e.tableCellAlignToStyle!==!1},i=E(s,t,void 0);return i&&typeof i!="string"?i:s.create(t,s.Fragment,{children:i||void 0},void 0)}function E(t,e,r){if(e.type==="element")return I(t,e,r);if(e.type==="mdxFlowExpression"||e.type==="mdxTextExpression")return L(t,e);if(e.type==="mdxJsxFlowElement"||e.type==="mdxJsxTextElement")return V(t,e,r);if(e.type==="mdxjsEsm")return $(t,e);if(e.type==="root")return D(t,e,r);if(e.type==="text")return O(t,e)}function I(t,e,r){const n=t.schema;let s=n;e.tagName.toLowerCase()==="svg"&&n.space==="html"&&(s=f.svg,t.schema=s),t.ancestors.push(e);const i=b(t,e.tagName,!1),a=R(t,e);let o=d(t,e);return q.has(e.tagName)&&(o=o.filter(function(l){return typeof l=="string"?!N.whitespace(l):!0})),v(t,a,i,e),y(a,o),t.ancestors.pop(),t.schema=n,t.create(e,i,a,r)}function L(t,e){if(e.data&&e.data.estree&&t.evaluater){const n=e.data.estree.body[0];return u.ok(n.type==="ExpressionStatement"),t.evaluater.evaluateExpression(n.expression)}p(t,e.position)}function $(t,e){if(e.data&&e.data.estree&&t.evaluater)return t.evaluater.evaluateProgram(e.data.estree);p(t,e.position)}function V(t,e,r){const n=t.schema;let s=n;e.name==="svg"&&n.space==="html"&&(s=f.svg,t.schema=s),t.ancestors.push(e);const i=e.name===null?t.Fragment:b(t,e.name,!0),a=_(t,e),o=d(t,e);return v(t,a,i,e),y(a,o),t.ancestors.pop(),t.schema=n,t.create(e,i,a,r)}function D(t,e,r){const n={};return y(n,d(t,e)),t.create(e,t.Fragment,n,r)}function O(t,e){return e.value}function v(t,e,r,n){typeof r!="string"&&r!==t.Fragment&&t.passNode&&(e.node=n)}function y(t,e){if(e.length>0){const r=e.length>1?e:e[0];r&&(t.children=r)}}function k(t,e,r){return n;function n(s,i,a,o){const c=Array.isArray(a.children)?r:e;return o?c(i,a,o):c(i,a)}}function K(t,e){return r;function r(n,s,i,a){const o=Array.isArray(i.children),l=T.pointStart(n);return e(s,i,a,o,{columnNumber:l?l.column-1:void 0,fileName:t,lineNumber:l?l.line:void 0},void 0)}}function R(t,e){const r={};let n,s;for(s in e.properties)if(s!=="children"&&m.call(e.properties,s)){const i=B(t,s,e.properties[s]);if(i){const[a,o]=i;t.tableCellAlignToStyle&&a==="align"&&typeof o=="string"&&J.has(e.tagName)?n=o:r[a]=o}}if(n){const i=r.style||(r.style={});i[t.stylePropertyNameCase==="css"?"text-align":"textAlign"]=n}return r}function _(t,e){const r={};for(const n of e.attributes)if(n.type==="mdxJsxExpressionAttribute")if(n.data&&n.data.estree&&t.evaluater){const i=n.data.estree.body[0];u.ok(i.type==="ExpressionStatement");const a=i.expression;u.ok(a.type==="ObjectExpression");const o=a.properties[0];u.ok(o.type==="SpreadElement"),Object.assign(r,t.evaluater.evaluateExpression(o.argument))}else p(t,e.position);else{const s=n.name;let i;if(n.value&&typeof n.value=="object")if(n.value.data&&n.value.data.estree&&t.evaluater){const o=n.value.data.estree.body[0];u.ok(o.type==="ExpressionStatement"),i=t.evaluater.evaluateExpression(o.expression)}else p(t,e.position);else i=n.value===null?!0:n.value;r[s]=i}return r}function d(t,e){const r=[];let n=-1;const s=t.passKeys?new Map:F;for(;++n<e.children.length;){const i=e.children[n];let a;if(t.passKeys){const l=i.type==="element"?i.tagName:i.type==="mdxJsxFlowElement"||i.type==="mdxJsxTextElement"?i.name:void 0;if(l){const c=s.get(l)||0;a=l+"-"+c,s.set(l,c+1)}}const o=E(t,i,a);o!==void 0&&r.push(o)}return r}function B(t,e,r){const n=j.find(t.schema,e);if(!(r==null||typeof r=="number"&&Number.isNaN(r))){if(Array.isArray(r)&&(r=n.commaSeparated?w.stringify(r):C.stringify(r)),n.property==="style"){let s=typeof r=="object"?r:z(t,String(r));return t.stylePropertyNameCase==="css"&&(s=X(s)),["style",s]}return[t.elementAttributeNameCase==="react"&&n.space?A.hastToReact[n.property]||n.property:n.attribute,r]}}function z(t,e){try{return S.default(e,{reactCompat:!0})}catch(r){if(t.ignoreInvalidStyle)return{};const n=r,s=new h.VFileMessage("Cannot parse `style` attribute",{ancestors:t.ancestors,cause:n,ruleId:"style",source:"hast-util-to-jsx-runtime"});throw s.file=t.filePath||void 0,s.url=g+"#cannot-parse-style-attribute",s}}function b(t,e,r){let n;if(!r)n={type:"Literal",value:e};else if(e.includes(".")){const s=e.split(".");let i=-1,a;for(;++i<s.length;){const o=x.name(s[i])?{type:"Identifier",name:s[i]}:{type:"Literal",value:s[i]};a=a?{type:"MemberExpression",object:a,property:o,computed:!!(i&&o.type==="Literal"),optional:!1}:o}n=a}else n=x.name(e)&&!/^[a-z]/.test(e)?{type:"Identifier",name:e}:{type:"Literal",value:e};if(n.type==="Literal"){const s=n.value;return m.call(t.components,s)?t.components[s]:s}if(t.evaluater)return t.evaluater.evaluateExpression(n);p(t)}function p(t,e){const r=new h.VFileMessage("Cannot handle MDX estrees without `createEvaluater`",{ancestors:t.ancestors,place:e,ruleId:"mdx-estree",source:"hast-util-to-jsx-runtime"});throw r.file=t.filePath||void 0,r.url=g+"#cannot-handle-mdx-estrees-without-createevaluater",r}function X(t){const e={};let r;for(r in t)m.call(t,r)&&(e[Z(r)]=t[r]);return e}function Z(t){let e=t.replace(P,G);return e.slice(0,3)==="ms-"&&(e="-"+e),e}function G(t){return"-"+t.toLowerCase()}exports.toJsxRuntime=M;
|
|
2
2
|
//# sourceMappingURL=index.cjs.js.map
|
|
@@ -2,7 +2,7 @@ import { stringify as w } from "../../../../comma-separated-tokens@2.0.3/node_mo
|
|
|
2
2
|
import { ok as u } from "../../../../devlop@1.1.0/node_modules/devlop/lib/default.es.js";
|
|
3
3
|
import { svg as m, html as C } from "../../../../property-information@7.1.0/node_modules/property-information/index.es.js";
|
|
4
4
|
import { stringify as N } from "../../../../space-separated-tokens@2.0.2/node_modules/space-separated-tokens/index.es.js";
|
|
5
|
-
import S from "../../../../../../../_virtual/index.
|
|
5
|
+
import S from "../../../../../../../_virtual/index.es5.js";
|
|
6
6
|
import { whitespace as j } from "../../../../hast-util-whitespace@3.0.0/node_modules/hast-util-whitespace/lib/index.es.js";
|
|
7
7
|
import { name as x } from "../../../../estree-util-is-identifier-name@3.0.0/node_modules/estree-util-is-identifier-name/lib/index.es.js";
|
|
8
8
|
import { VFileMessage as h } from "../../../../vfile-message@4.0.3/node_modules/vfile-message/lib/index.es.js";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const H=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectSpread2.cjs.js"),te=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.cjs.js"),i=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/defineProperty.cjs.js"),oe=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/typeof.cjs.js"),u=require("../../../../../../../_virtual/index.
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const H=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectSpread2.cjs.js"),te=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.cjs.js"),i=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/defineProperty.cjs.js"),oe=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/typeof.cjs.js"),u=require("../../../../../../../_virtual/index.cjs4.js"),n=require("react"),T=require("./utils/commonUtils.cjs.js");var de=n.forwardRef(function(e,U){var p,x,y,$=e.inputElement,N=e.children,r=e.prefixCls,k=e.prefix,f=e.suffix,C=e.addonBefore,W=e.addonAfter,z=e.className,J=e.style,m=e.disabled,I=e.readOnly,K=e.focused,E=e.triggerFocus,d=e.allowClear,b=e.value,h=e.handleReset,L=e.hidden,t=e.classes,a=e.classNames,g=e.dataAttrs,o=e.styles,l=e.components,w=e.onClear,M=N??$,Q=l?.affixWrapper||"span",V=l?.groupWrapper||"span",X=l?.wrapper||"span",S=l?.groupAddon||"span",A=n.useRef(null),Y=function(s){var q;(q=A.current)!==null&&q!==void 0&&q.contains(s.target)&&E?.()},j=T.hasPrefixSuffix(e),c=n.cloneElement(M,{value:b,className:u.default((p=M.props)===null||p===void 0?void 0:p.className,!j&&a?.variant)||null}),B=n.useRef(null);if(n.useImperativeHandle(U,function(){return{nativeElement:B.current||A.current}}),j){var D=null;if(d){var Z=!m&&!I&&b,R="".concat(r,"-clear-icon"),P=oe.default(d)==="object"&&d!==null&&d!==void 0&&d.clearIcon?d.clearIcon:"✖";D=n.createElement("button",{type:"button",tabIndex:-1,onClick:function(s){h?.(s),w?.()},onMouseDown:function(s){return s.preventDefault()},className:u.default(R,i.default(i.default({},"".concat(R,"-hidden"),!Z),"".concat(R,"-has-suffix"),!!f))},P)}var v="".concat(r,"-affix-wrapper"),ee=u.default(v,i.default(i.default(i.default(i.default(i.default({},"".concat(r,"-disabled"),m),"".concat(v,"-disabled"),m),"".concat(v,"-focused"),K),"".concat(v,"-readonly"),I),"".concat(v,"-input-with-clear-btn"),f&&d&&b),t?.affixWrapper,a?.affixWrapper,a?.variant),ae=(f||d)&&n.createElement("span",{className:u.default("".concat(r,"-suffix"),a?.suffix),style:o?.suffix},D,f);c=n.createElement(Q,te.default({className:ee,style:o?.affixWrapper,onClick:Y},g?.affixWrapper,{ref:A}),k&&n.createElement("span",{className:u.default("".concat(r,"-prefix"),a?.prefix),style:o?.prefix},k),c,ae)}if(T.hasAddon(e)){var _="".concat(r,"-group"),O="".concat(_,"-addon"),F="".concat(_,"-wrapper"),ne=u.default("".concat(r,"-wrapper"),_,t?.wrapper,a?.wrapper),le=u.default(F,i.default({},"".concat(F,"-disabled"),m),t?.group,a?.groupWrapper);c=n.createElement(V,{className:le,ref:B},n.createElement(X,{className:ne},C&&n.createElement(S,{className:O},C),c,W&&n.createElement(S,{className:O},W)))}return n.cloneElement(c,{className:u.default((x=c.props)===null||x===void 0?void 0:x.className,z)||null,style:H.default(H.default({},(y=c.props)===null||y===void 0?void 0:y.style),J),hidden:L})});exports.default=de;
|
|
2
2
|
//# sourceMappingURL=BaseInput.cjs.js.map
|
|
@@ -2,7 +2,7 @@ import $ from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/hel
|
|
|
2
2
|
import oe from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.es.js";
|
|
3
3
|
import r from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/defineProperty.es.js";
|
|
4
4
|
import te from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/typeof.es.js";
|
|
5
|
-
import d from "../../../../../../../_virtual/index.
|
|
5
|
+
import d from "../../../../../../../_virtual/index.es4.js";
|
|
6
6
|
import l, { useRef as q, cloneElement as ie } from "react";
|
|
7
7
|
import { hasPrefixSuffix as re, hasAddon as de } from "./utils/commonUtils.es.js";
|
|
8
8
|
var xe = /* @__PURE__ */ l.forwardRef(function(e, z) {
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const Y=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.cjs.js"),F=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/defineProperty.cjs.js"),N=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectSpread2.cjs.js"),J=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/typeof.cjs.js"),f=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/slicedToArray.cjs.js"),K=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.cjs.js"),Q=require("../../../../../../../_virtual/index.
|
|
1
|
+
"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const Y=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/extends.cjs.js"),F=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/defineProperty.cjs.js"),N=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectSpread2.cjs.js"),J=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/typeof.cjs.js"),f=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/slicedToArray.cjs.js"),K=require("../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.cjs.js"),Q=require("../../../../../../../_virtual/index.cjs4.js"),ee=require("../../../../rc-resize-observer@1.4.3_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-resize-observer/es/index.cjs.js"),j=require("../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useLayoutEffect.cjs.js"),te=require("../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useMergedState.cjs.js"),w=require("../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/raf.cjs.js"),ae=require("react"),re=require("./calculateNodeHeight.cjs.js");function ne(n){const o=Object.create(null,{[Symbol.toStringTag]:{value:"Module"}});if(n){for(const e in n)if(e!=="default"){const s=Object.getOwnPropertyDescriptor(n,e);Object.defineProperty(o,e,s.get?s:{enumerable:!0,get:()=>n[e]})}}return o.default=n,Object.freeze(o)}const t=ne(ae);var ue=["prefixCls","defaultValue","value","autoSize","onResize","className","style","disabled","onChange","onInternalAutoSize"],g=0,m=1,_=2,le=t.forwardRef(function(n,o){var e=n,s=e.prefixCls,O=e.defaultValue,p=e.value,a=e.autoSize,i=e.onResize,T=e.className,$=e.style,b=e.disabled,c=e.onChange,d=e.onInternalAutoSize,P=K.default(e,ue),V=te.default(O,{value:p,postState:function(r){return r??""}}),y=f.default(V,2),D=y[0],Z=y[1],H=function(r){Z(r.target.value),c?.(r)},S=t.useRef();t.useImperativeHandle(o,function(){return{textArea:S.current}});var L=t.useMemo(function(){return a&&J.default(a)==="object"?[a.minRows,a.maxRows]:[]},[a]),E=f.default(L,2),q=E[0],x=E[1],R=!!a,k=t.useState(_),A=f.default(k,2),u=A[0],v=A[1],B=t.useState(),I=f.default(B,2),G=I[0],U=I[1],M=function(){v(g),process.env.NODE_ENV==="test"&&d?.()};j.default(function(){R&&M()},[p,q,x,R]),j.default(function(){if(u===g)v(m);else if(u===m){var l=re.default(S.current,!1,q,x);v(_),U(l)}},[u]);var h=t.useRef(),C=function(){w.default.cancel(h.current)},W=function(r){u===_&&(i?.(r),a&&(C(),h.current=w.default(function(){M()})))};t.useEffect(function(){return C},[]);var X=R?G:null,z=N.default(N.default({},$),X);return(u===g||u===m)&&(z.overflowY="hidden",z.overflowX="hidden"),t.createElement(ee.default,{onResize:W,disabled:!(a||i)},t.createElement("textarea",Y.default({},P,{ref:S,style:z,className:Q.default(s,T,F.default({},"".concat(s,"-disabled"),b)),disabled:b,value:D,onChange:H})))});exports.default=le;
|
|
2
2
|
//# sourceMappingURL=ResizableTextArea.cjs.js.map
|
|
@@ -4,7 +4,7 @@ import w from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/hel
|
|
|
4
4
|
import J from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/typeof.es.js";
|
|
5
5
|
import s from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/slicedToArray.es.js";
|
|
6
6
|
import K from "../../../../@babel_runtime@7.28.4/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.es.js";
|
|
7
|
-
import Q from "../../../../../../../_virtual/index.
|
|
7
|
+
import Q from "../../../../../../../_virtual/index.es4.js";
|
|
8
8
|
import ee from "../../../../rc-resize-observer@1.4.3_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-resize-observer/es/index.es.js";
|
|
9
9
|
import M from "../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useLayoutEffect.es.js";
|
|
10
10
|
import te from "../../../../rc-util@5.44.4_react-dom@19.0.1_react@19.0.1__react@19.0.1/node_modules/rc-util/es/hooks/useMergedState.es.js";
|