@bendyline/squisq-react 1.1.2 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/dist/DocPlayer.d.ts +9 -2
  2. package/dist/DocPlayer.d.ts.map +1 -1
  3. package/dist/DocPlayer.js +27 -8
  4. package/dist/DocPlayer.js.map +1 -1
  5. package/dist/InlineAudioPlayer.d.ts +15 -0
  6. package/dist/InlineAudioPlayer.d.ts.map +1 -0
  7. package/dist/InlineAudioPlayer.js +22 -0
  8. package/dist/InlineAudioPlayer.js.map +1 -0
  9. package/dist/InlineVideoPlayer.d.ts +21 -0
  10. package/dist/InlineVideoPlayer.d.ts.map +1 -0
  11. package/dist/InlineVideoPlayer.js +29 -0
  12. package/dist/InlineVideoPlayer.js.map +1 -0
  13. package/dist/LinearDocView.d.ts +28 -2
  14. package/dist/LinearDocView.d.ts.map +1 -1
  15. package/dist/LinearDocView.js +159 -24
  16. package/dist/LinearDocView.js.map +1 -1
  17. package/dist/MarkdownRenderer.d.ts.map +1 -1
  18. package/dist/MarkdownRenderer.js +123 -4
  19. package/dist/MarkdownRenderer.js.map +1 -1
  20. package/dist/SocialCaptionOverlay.d.ts.map +1 -1
  21. package/dist/SocialCaptionOverlay.js +3 -2
  22. package/dist/SocialCaptionOverlay.js.map +1 -1
  23. package/dist/__tests__/JsonView.test.d.ts +2 -0
  24. package/dist/__tests__/JsonView.test.d.ts.map +1 -0
  25. package/dist/__tests__/JsonView.test.js +93 -0
  26. package/dist/__tests__/JsonView.test.js.map +1 -0
  27. package/dist/__tests__/LinearDocView.test.js +90 -0
  28. package/dist/__tests__/LinearDocView.test.js.map +1 -1
  29. package/dist/hooks/MediaContext.d.ts.map +1 -1
  30. package/dist/hooks/MediaContext.js +13 -7
  31. package/dist/hooks/MediaContext.js.map +1 -1
  32. package/dist/hooks/useAutoSurface.d.ts +11 -0
  33. package/dist/hooks/useAutoSurface.d.ts.map +1 -0
  34. package/dist/hooks/useAutoSurface.js +24 -0
  35. package/dist/hooks/useAutoSurface.js.map +1 -0
  36. package/dist/index.d.ts +8 -0
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +5 -0
  39. package/dist/index.js.map +1 -1
  40. package/dist/jsonView/JsonView.d.ts +26 -0
  41. package/dist/jsonView/JsonView.d.ts.map +1 -0
  42. package/dist/jsonView/JsonView.js +12 -0
  43. package/dist/jsonView/JsonView.js.map +1 -0
  44. package/dist/jsonView/RenderNode.d.ts +22 -0
  45. package/dist/jsonView/RenderNode.d.ts.map +1 -0
  46. package/dist/jsonView/RenderNode.js +30 -0
  47. package/dist/jsonView/RenderNode.js.map +1 -0
  48. package/dist/jsonView/index.d.ts +3 -0
  49. package/dist/jsonView/index.d.ts.map +1 -0
  50. package/dist/jsonView/index.js +2 -0
  51. package/dist/jsonView/index.js.map +1 -0
  52. package/dist/jsonView/useJsonViewTokens.d.ts +14 -0
  53. package/dist/jsonView/useJsonViewTokens.d.ts.map +1 -0
  54. package/dist/jsonView/useJsonViewTokens.js +34 -0
  55. package/dist/jsonView/useJsonViewTokens.js.map +1 -0
  56. package/dist/jsonView/viewers.d.ts +30 -0
  57. package/dist/jsonView/viewers.d.ts.map +1 -0
  58. package/dist/jsonView/viewers.js +226 -0
  59. package/dist/jsonView/viewers.js.map +1 -0
  60. package/dist/squisq-player.css +1 -1
  61. package/dist/squisq-player.css.map +1 -1
  62. package/dist/squisq-player.global.js +32 -8
  63. package/dist/squisq-player.global.js.map +1 -1
  64. package/dist/standalone-source.js +1 -1
  65. package/dist/types.d.ts +5 -1
  66. package/dist/types.d.ts.map +1 -1
  67. package/dist/types.js.map +1 -1
  68. package/package.json +8 -7
  69. package/src/DocPlayer.tsx +44 -8
  70. package/src/InlineAudioPlayer.tsx +46 -0
  71. package/src/InlineVideoPlayer.tsx +70 -0
  72. package/src/LinearDocView.tsx +198 -26
  73. package/src/MarkdownRenderer.tsx +189 -12
  74. package/src/SocialCaptionOverlay.tsx +3 -2
  75. package/src/__tests__/JsonView.test.tsx +111 -0
  76. package/src/__tests__/LinearDocView.test.tsx +101 -0
  77. package/src/hooks/MediaContext.tsx +15 -8
  78. package/src/hooks/useAutoSurface.ts +33 -0
  79. package/src/index.ts +10 -0
  80. package/src/jsonView/JsonView.tsx +51 -0
  81. package/src/jsonView/RenderNode.tsx +51 -0
  82. package/src/jsonView/index.ts +2 -0
  83. package/src/jsonView/json-view.css +206 -0
  84. package/src/jsonView/useJsonViewTokens.ts +57 -0
  85. package/src/jsonView/viewers.tsx +343 -0
  86. package/src/styles/doc-animations.css +36 -0
  87. package/src/styles/index.css +7 -0
  88. package/src/types.ts +5 -1
@@ -0,0 +1,30 @@
1
+ /**
2
+ * Read-only viewer renderers for `<JsonView>`. Each viewer is a small
3
+ * pure function that takes a value + schema slice and renders inline.
4
+ * Group / card-stack viewers recurse into `RenderNode`.
5
+ */
6
+ import { type ControlKind, type SquisqAnnotatedSchema } from '@bendyline/squisq/jsonForm';
7
+ export interface ViewerProps {
8
+ value: unknown;
9
+ schema: SquisqAnnotatedSchema;
10
+ rootSchema: SquisqAnnotatedSchema;
11
+ rootData: unknown;
12
+ pointer: string;
13
+ density: 'comfortable' | 'compact';
14
+ }
15
+ export declare function TextViewer({ value }: ViewerProps): import("react/jsx-runtime").JSX.Element;
16
+ export declare function MultilineViewer({ value }: ViewerProps): import("react/jsx-runtime").JSX.Element;
17
+ export declare function RichTextViewer({ value }: ViewerProps): import("react/jsx-runtime").JSX.Element;
18
+ export declare function NumberViewer({ value }: ViewerProps): import("react/jsx-runtime").JSX.Element;
19
+ export declare function BooleanViewer({ value }: ViewerProps): import("react/jsx-runtime").JSX.Element;
20
+ export declare function EnumViewer({ value, schema }: ViewerProps): import("react/jsx-runtime").JSX.Element;
21
+ export declare function ColorViewer({ value }: ViewerProps): import("react/jsx-runtime").JSX.Element;
22
+ export declare function DateViewer({ value, schema }: ViewerProps): import("react/jsx-runtime").JSX.Element;
23
+ export declare function ChipBinViewer({ value, schema }: ViewerProps): import("react/jsx-runtime").JSX.Element;
24
+ export declare function CardStackViewer(props: ViewerProps): import("react/jsx-runtime").JSX.Element;
25
+ export declare function GroupViewer(props: ViewerProps & {
26
+ suppressTitle?: boolean;
27
+ }): import("react/jsx-runtime").JSX.Element;
28
+ export declare function TabsViewer(props: ViewerProps): import("react/jsx-runtime").JSX.Element;
29
+ export declare const VIEWERS: Record<ControlKind, React.ComponentType<ViewerProps>>;
30
+ //# sourceMappingURL=viewers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewers.d.ts","sourceRoot":"","sources":["../../src/jsonView/viewers.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAEL,KAAK,WAAW,EAChB,KAAK,qBAAqB,EAC3B,MAAM,4BAA4B,CAAC;AAKpC,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,qBAAqB,CAAC;IAC9B,UAAU,EAAE,qBAAqB,CAAC;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,aAAa,GAAG,SAAS,CAAC;CACpC;AAID,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,2CAKhD;AAED,wBAAgB,eAAe,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,2CAKrD;AAED,wBAAgB,cAAc,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,2CAgBpD;AAED,wBAAgB,YAAY,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,2CAKlD;AAED,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,2CAOnD;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,2CAOxD;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,EAAE,WAAW,2CAUjD;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,2CAqBxD;AAID,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,WAAW,2CAmB3D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,WAAW,2CA4BjD;AAiBD,wBAAgB,WAAW,CAAC,KAAK,EAAE,WAAW,GAAG;IAAE,aAAa,CAAC,EAAE,OAAO,CAAA;CAAE,2CAgC3E;AA6CD,wBAAgB,UAAU,CAAC,KAAK,EAAE,WAAW,2CAuB5C;AAmCD,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAoBzE,CAAC"}
@@ -0,0 +1,226 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ /**
3
+ * Read-only viewer renderers for `<JsonView>`. Each viewer is a small
4
+ * pure function that takes a value + schema slice and renders inline.
5
+ * Group / card-stack viewers recurse into `RenderNode`.
6
+ */
7
+ import { Fragment, useMemo } from 'react';
8
+ import { arrayItemKind, } from '@bendyline/squisq/jsonForm';
9
+ import { parseMarkdown } from '@bendyline/squisq/markdown';
10
+ import { MarkdownRenderer } from '../MarkdownRenderer';
11
+ import { RenderNode } from './RenderNode';
12
+ // ── Primitive viewers ──────────────────────────────────────────────
13
+ export function TextViewer({ value }) {
14
+ if (value === undefined || value === null || value === '') {
15
+ return _jsx("span", { className: "squisq-jv-empty", children: "\u2014" });
16
+ }
17
+ return _jsx("span", { className: "squisq-jv-value", children: String(value) });
18
+ }
19
+ export function MultilineViewer({ value }) {
20
+ if (value === undefined || value === null || value === '') {
21
+ return _jsx("span", { className: "squisq-jv-empty", children: "\u2014" });
22
+ }
23
+ return _jsx("span", { className: "squisq-jv-value squisq-jv-value--multiline", children: String(value) });
24
+ }
25
+ export function RichTextViewer({ value }) {
26
+ const nodes = useMemo(() => {
27
+ if (typeof value !== 'string' || value === '')
28
+ return null;
29
+ try {
30
+ const doc = parseMarkdown(value);
31
+ return doc.children;
32
+ }
33
+ catch {
34
+ return null;
35
+ }
36
+ }, [value]);
37
+ if (!nodes)
38
+ return _jsx("span", { className: "squisq-jv-empty", children: "\u2014" });
39
+ return (_jsx("div", { className: "squisq-jv-richtext", children: _jsx(MarkdownRenderer, { nodes: nodes }) }));
40
+ }
41
+ export function NumberViewer({ value }) {
42
+ if (value === undefined || value === null) {
43
+ return _jsx("span", { className: "squisq-jv-empty", children: "\u2014" });
44
+ }
45
+ return _jsx("span", { className: "squisq-jv-value", children: String(value) });
46
+ }
47
+ export function BooleanViewer({ value }) {
48
+ const on = Boolean(value);
49
+ return (_jsx("span", { className: `squisq-jv-toggle squisq-jv-toggle--${on ? 'on' : 'off'}`, children: on ? 'On' : 'Off' }));
50
+ }
51
+ export function EnumViewer({ value, schema }) {
52
+ if (value === undefined || value === null || value === '') {
53
+ return _jsx("span", { className: "squisq-jv-empty", children: "\u2014" });
54
+ }
55
+ const labels = schema.squisq?.enumLabels;
56
+ const display = labels && typeof value === 'string' ? (labels[value] ?? value) : String(value);
57
+ return _jsx("span", { className: "squisq-jv-value", children: display });
58
+ }
59
+ export function ColorViewer({ value }) {
60
+ if (typeof value !== 'string' || value === '') {
61
+ return _jsx("span", { className: "squisq-jv-empty", children: "\u2014" });
62
+ }
63
+ return (_jsxs("span", { className: "squisq-jv-color", children: [_jsx("span", { className: "squisq-jv-color__swatch", style: { background: value }, "aria-hidden": true }), _jsx("span", { className: "squisq-jv-color__hex", children: value })] }));
64
+ }
65
+ export function DateViewer({ value, schema }) {
66
+ if (typeof value !== 'string' || value === '') {
67
+ return _jsx("span", { className: "squisq-jv-empty", children: "\u2014" });
68
+ }
69
+ const fmt = schema.format;
70
+ let display = value;
71
+ try {
72
+ const date = new Date(value);
73
+ if (!Number.isNaN(date.getTime())) {
74
+ if (fmt === 'time') {
75
+ display = date.toLocaleTimeString();
76
+ }
77
+ else if (fmt === 'date') {
78
+ display = date.toLocaleDateString();
79
+ }
80
+ else {
81
+ display = date.toLocaleString();
82
+ }
83
+ }
84
+ }
85
+ catch {
86
+ /* fall through to raw value */
87
+ }
88
+ return _jsx("span", { className: "squisq-jv-value", children: display });
89
+ }
90
+ // ── Composite viewers ─────────────────────────────────────────────
91
+ export function ChipBinViewer({ value, schema }) {
92
+ if (!Array.isArray(value) || value.length === 0) {
93
+ return _jsx("span", { className: "squisq-jv-empty", children: "\u2014" });
94
+ }
95
+ const itemSchema = Array.isArray(schema.items) ? schema.items[0] : schema.items;
96
+ const labels = itemSchema?.squisq?.enumLabels;
97
+ return (_jsx("div", { className: "squisq-jv-chip-bin", children: value.map((item, i) => {
98
+ const label = labels && typeof item === 'string' ? (labels[item] ?? String(item)) : String(item);
99
+ return (_jsx("span", { className: "squisq-jv-chip", children: label }, i));
100
+ }) }));
101
+ }
102
+ export function CardStackViewer(props) {
103
+ const { value, schema, rootSchema, rootData, pointer, density } = props;
104
+ if (!Array.isArray(value) || value.length === 0) {
105
+ return _jsx("span", { className: "squisq-jv-empty", children: "No items" });
106
+ }
107
+ const itemSchema = (Array.isArray(schema.items) ? schema.items[0] : schema.items) ?? {};
108
+ const itemLabel = itemSchema.squisq?.itemLabel;
109
+ return (_jsx("div", { className: "squisq-jv-card-stack", children: value.map((item, i) => {
110
+ const title = resolveItemTitle(itemLabel, item, i);
111
+ return (_jsxs("div", { className: "squisq-jv-card", children: [title ? _jsx("h4", { className: "squisq-jv-card__title", children: title }) : null, _jsx(RenderNode, { value: item, schema: itemSchema, rootSchema: rootSchema, rootData: rootData, pointer: `${pointer}/${i}`, density: density, suppressTopGroupTitle: true })] }, i));
112
+ }) }));
113
+ }
114
+ function resolveItemTitle(spec, item, index) {
115
+ if (!spec)
116
+ return `Item ${index + 1}`;
117
+ if (typeof spec === 'string')
118
+ return spec;
119
+ if (item && typeof item === 'object') {
120
+ const v = item[spec.fromField];
121
+ if (typeof v === 'string' && v !== '')
122
+ return v;
123
+ if (typeof v === 'number')
124
+ return String(v);
125
+ }
126
+ return `Item ${index + 1}`;
127
+ }
128
+ export function GroupViewer(props) {
129
+ const { value, schema, rootSchema, rootData, pointer, density, suppressTitle } = props;
130
+ const title = !suppressTitle ? (schema.squisq?.label ?? schema.title) : undefined;
131
+ const help = schema.squisq?.help ?? schema.description;
132
+ const obj = (value && typeof value === 'object' ? value : {}) ?? {};
133
+ const propEntries = Object.entries(schema.properties ?? {});
134
+ return (_jsxs("section", { className: "squisq-jv-group", children: [title ? _jsx("h3", { className: "squisq-jv-group__title", children: title }) : null, help ? _jsx("p", { className: "squisq-jv-group__help", children: help }) : null, propEntries.map(([key, propSchema]) => (_jsx(Fragment, { children: _jsx(RowOrSection, { label: propSchema.squisq?.label ?? propSchema.title ?? key, help: propSchema.squisq?.help ?? propSchema.description, kindHint: propSchema, children: _jsx(RenderNode, { value: obj[key], schema: propSchema, rootSchema: rootSchema, rootData: rootData, pointer: `${pointer}/${key}`, density: density, suppressTopGroupTitle: true }) }) }, key)))] }));
135
+ }
136
+ /**
137
+ * Decide whether to use the inline label/value Row layout, or to drop
138
+ * the row chrome entirely (for nested groups, card-stacks, richtext —
139
+ * which present their own headings).
140
+ */
141
+ function RowOrSection({ label, help, kindHint, children, }) {
142
+ const composite = isCompositeKind(kindHint);
143
+ if (composite) {
144
+ return _jsx(_Fragment, { children: children });
145
+ }
146
+ return (_jsxs("div", { className: "squisq-jv-row", children: [_jsx("div", { className: "squisq-jv-label", title: help, children: label }), _jsx("div", { children: children })] }));
147
+ }
148
+ function isCompositeKind(schema) {
149
+ const t = schema.type;
150
+ const arrayLike = t === 'array' || (Array.isArray(t) && t.includes('array'));
151
+ if (arrayLike) {
152
+ return arrayItemKind(schema) === 'object';
153
+ }
154
+ const objectLike = t === 'object' || (Array.isArray(t) && t.includes('object'));
155
+ if (objectLike)
156
+ return true;
157
+ if (schema.oneOf || schema.anyOf)
158
+ return true;
159
+ if (schema.format === 'markdown' || schema.squisq?.control === 'richtext')
160
+ return true;
161
+ return false;
162
+ }
163
+ export function TabsViewer(props) {
164
+ const { value, schema, rootSchema, rootData, pointer, density } = props;
165
+ const branches = (schema.oneOf ?? schema.anyOf ?? []).slice();
166
+ const matchedIndex = pickMatchingBranch(branches, value);
167
+ const branch = branches[matchedIndex];
168
+ if (!branch) {
169
+ return _jsx(TextViewer, { ...props });
170
+ }
171
+ return (_jsxs("div", { className: "squisq-jv-tabs", children: [_jsx("span", { className: "squisq-jv-tabs__discriminator", children: branch.squisq?.label ?? branch.title ?? `Option ${matchedIndex + 1}` }), _jsx(RenderNode, { value: value, schema: branch, rootSchema: rootSchema, rootData: rootData, pointer: pointer, density: density })] }));
172
+ }
173
+ function pickMatchingBranch(branches, value) {
174
+ for (let i = 0; i < branches.length; i++) {
175
+ if (matchesShape(branches[i], value))
176
+ return i;
177
+ }
178
+ return 0;
179
+ }
180
+ function matchesShape(schema, value) {
181
+ const t = schema.type;
182
+ const target = Array.isArray(t) ? t.find((x) => x !== 'null') : t;
183
+ if (!target)
184
+ return true;
185
+ switch (target) {
186
+ case 'string':
187
+ return typeof value === 'string';
188
+ case 'number':
189
+ case 'integer':
190
+ return typeof value === 'number';
191
+ case 'boolean':
192
+ return typeof value === 'boolean';
193
+ case 'null':
194
+ return value === null;
195
+ case 'array':
196
+ return Array.isArray(value);
197
+ case 'object':
198
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
199
+ default:
200
+ return false;
201
+ }
202
+ }
203
+ // ── Registry ──────────────────────────────────────────────────────
204
+ // eslint-disable-next-line react-refresh/only-export-components
205
+ export const VIEWERS = {
206
+ text: TextViewer,
207
+ multiline: MultilineViewer,
208
+ richtext: RichTextViewer,
209
+ color: ColorViewer,
210
+ date: DateViewer,
211
+ time: DateViewer,
212
+ datetime: DateViewer,
213
+ slider: NumberViewer,
214
+ stepper: NumberViewer,
215
+ segmented: EnumViewer,
216
+ radio: EnumViewer,
217
+ combobox: EnumViewer,
218
+ toggle: BooleanViewer,
219
+ checkbox: BooleanViewer,
220
+ card: GroupViewer,
221
+ group: GroupViewer,
222
+ 'card-stack': CardStackViewer,
223
+ 'chip-bin': ChipBinViewer,
224
+ tabs: TabsViewer,
225
+ };
226
+ //# sourceMappingURL=viewers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"viewers.js","sourceRoot":"","sources":["../../src/jsonView/viewers.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- @keyframes slowZoomIn{0%{transform:scale(1)}to{transform:scale(1.15)}}@keyframes slowZoomOut{0%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes slowZoomPanLeft{0%{transform:translate(0) scale(1.1)}to{transform:translate(-8%) scale(1.1)}}@keyframes slowZoomPanRight{0%{transform:translate(-8%) scale(1.1)}to{transform:translate(0) scale(1.1)}}@keyframes slowZoomPanUp{0%{transform:translateY(0) scale(1.1)}to{transform:translateY(-8%) scale(1.1)}}@keyframes slowZoomPanDown{0%{transform:translateY(-8%) scale(1.1)}to{transform:translateY(0) scale(1.1)}}@keyframes slowZoomCombinedPanLeft{0%{transform:translate(0) scale(1)}to{transform:translate(-5%) scale(1.12)}}@keyframes slowZoomCombinedPanRight{0%{transform:translate(-5%) scale(1.12)}to{transform:translate(0) scale(1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes zoomIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}@keyframes zoomOut{0%{transform:scale(1);opacity:1}to{transform:scale(.9);opacity:0}}@keyframes panLeft{0%{transform:translate(0)}to{transform:translate(-10%)}}@keyframes panRight{0%{transform:translate(-10%)}to{transform:translate(0)}}@keyframes slideInLeft{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slideOutLeft{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes slideOutRight{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes typewriter{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}@keyframes typewriterFallback{0%{width:0;overflow:hidden}to{width:100%;overflow:hidden}}.transition-fade-enter{animation:fadeIn var(--transition-duration, 1.5s) ease-out forwards}.transition-fade-exit{animation:fadeOut var(--transition-duration, 1.5s) ease-out forwards}.transition-dissolve-enter{animation:fadeIn var(--transition-duration, 2s) ease-in-out forwards}.transition-dissolve-exit{animation:fadeOut var(--transition-duration, 2s) ease-in-out forwards}.transition-slideLeft-enter{animation:slideInRight var(--transition-duration, .8s) ease-out forwards}.transition-slideLeft-exit{animation:slideOutLeft var(--transition-duration, .8s) ease-out forwards}.transition-slideRight-enter{animation:slideInLeft var(--transition-duration, .8s) ease-out forwards}.transition-slideRight-exit{animation:slideOutRight var(--transition-duration, .8s) ease-out forwards}.anim-none{animation:none}.anim-fadeIn{animation:fadeIn var(--anim-duration, 1s) var(--anim-easing, ease-out) var(--anim-delay, 0s) forwards}.anim-fadeOut{animation:fadeOut var(--anim-duration, 1s) var(--anim-easing, ease-out) var(--anim-delay, 0s) forwards}.anim-fadeInUp{animation:fadeInUp var(--anim-duration, .6s) var(--anim-easing, ease-out) var(--anim-delay, 0s) forwards}.anim-slowZoom-in{animation:slowZoomIn var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards}.anim-slowZoom-out{animation:slowZoomOut var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards}.anim-slowZoom-panLeft{animation:slowZoomCombinedPanLeft var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards}.anim-slowZoom-panRight{animation:slowZoomCombinedPanRight var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards}.anim-zoomIn{animation:zoomIn var(--anim-duration, .5s) var(--anim-easing, ease-out) var(--anim-delay, 0s) forwards}.anim-zoomOut{animation:zoomOut var(--anim-duration, .5s) var(--anim-easing, ease-out) var(--anim-delay, 0s) forwards}.anim-panLeft{animation:panLeft var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards}.anim-panRight{animation:panRight var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards}.anim-typewriter{animation:typewriter var(--anim-duration, 2s) var(--anim-easing, steps(40, end)) var(--anim-delay, 0s) forwards}.doc-player{position:relative;overflow:hidden;clip-path:inset(0);background:#000;max-width:100%;max-height:100%}.doc-player__viewport,.doc-player__block{position:absolute;top:0;left:0;width:100%;height:100%}.doc-player__block--active{z-index:2}.doc-player__block--previous{z-index:1}.doc-player__tap-feedback{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:150;pointer-events:none;display:flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:50%;background:#00000073;animation:tap-feedback-fade .6s ease-out forwards}@keyframes tap-feedback-fade{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(1.3)}}.block-svg{width:100%;height:100%;display:block}.block-layer{overflow:hidden}.block-layer--image{overflow:visible}.text-shadow{text-shadow:0 2px 4px rgba(0,0,0,.8),0 4px 8px rgba(0,0,0,.4)}.text-shadow-light{text-shadow:0 1px 2px rgba(0,0,0,.6)}.text-box{background:#0009;padding:16px 24px;border-radius:4px}.text-box--light{background:#ffffffe6;color:#1a1a1a}
1
+ @keyframes slowZoomIn{0%{transform:scale(1)}to{transform:scale(1.15)}}@keyframes slowZoomOut{0%{transform:scale(1.15)}to{transform:scale(1)}}@keyframes slowZoomPanLeft{0%{transform:translate(0) scale(1.1)}to{transform:translate(-8%) scale(1.1)}}@keyframes slowZoomPanRight{0%{transform:translate(-8%) scale(1.1)}to{transform:translate(0) scale(1.1)}}@keyframes slowZoomPanUp{0%{transform:translateY(0) scale(1.1)}to{transform:translateY(-8%) scale(1.1)}}@keyframes slowZoomPanDown{0%{transform:translateY(-8%) scale(1.1)}to{transform:translateY(0) scale(1.1)}}@keyframes slowZoomCombinedPanLeft{0%{transform:translate(0) scale(1)}to{transform:translate(-5%) scale(1.12)}}@keyframes slowZoomCombinedPanRight{0%{transform:translate(-5%) scale(1.12)}to{transform:translate(0) scale(1)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}@keyframes zoomIn{0%{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}@keyframes zoomOut{0%{transform:scale(1);opacity:1}to{transform:scale(.9);opacity:0}}@keyframes panLeft{0%{transform:translate(0)}to{transform:translate(-10%)}}@keyframes panRight{0%{transform:translate(-10%)}to{transform:translate(0)}}@keyframes slideInLeft{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes slideOutLeft{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes slideOutRight{0%{transform:translate(0)}to{transform:translate(100%)}}@keyframes typewriter{0%{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}@keyframes typewriterFallback{0%{width:0;overflow:hidden}to{width:100%;overflow:hidden}}.transition-fade-enter{animation:fadeIn var(--transition-duration, 1.5s) ease-out forwards}.transition-fade-exit{animation:fadeOut var(--transition-duration, 1.5s) ease-out forwards}.transition-dissolve-enter{animation:fadeIn var(--transition-duration, 2s) ease-in-out forwards}.transition-dissolve-exit{animation:fadeOut var(--transition-duration, 2s) ease-in-out forwards}.transition-slideLeft-enter{animation:slideInRight var(--transition-duration, .8s) ease-out forwards}.transition-slideLeft-exit{animation:slideOutLeft var(--transition-duration, .8s) ease-out forwards}.transition-slideRight-enter{animation:slideInLeft var(--transition-duration, .8s) ease-out forwards}.transition-slideRight-exit{animation:slideOutRight var(--transition-duration, .8s) ease-out forwards}.anim-none{animation:none}.anim-fadeIn{animation:fadeIn var(--anim-duration, 1s) var(--anim-easing, ease-out) var(--anim-delay, 0s) forwards}.anim-fadeOut{animation:fadeOut var(--anim-duration, 1s) var(--anim-easing, ease-out) var(--anim-delay, 0s) forwards}.anim-fadeInUp{animation:fadeInUp var(--anim-duration, .6s) var(--anim-easing, ease-out) var(--anim-delay, 0s) forwards}.anim-slowZoom-in{animation:slowZoomIn var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards}.anim-slowZoom-out{animation:slowZoomOut var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards}.anim-slowZoom-panLeft{animation:slowZoomCombinedPanLeft var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards}.anim-slowZoom-panRight{animation:slowZoomCombinedPanRight var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards}.anim-zoomIn{animation:zoomIn var(--anim-duration, .5s) var(--anim-easing, ease-out) var(--anim-delay, 0s) forwards}.anim-zoomOut{animation:zoomOut var(--anim-duration, .5s) var(--anim-easing, ease-out) var(--anim-delay, 0s) forwards}.anim-panLeft{animation:panLeft var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards}.anim-panRight{animation:panRight var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s) forwards}.anim-typewriter{animation:typewriter var(--anim-duration, 2s) var(--anim-easing, steps(40, end)) var(--anim-delay, 0s) forwards}.doc-player{position:relative;overflow:hidden;clip-path:inset(0);background:#000;max-width:100%;max-height:100%}.doc-player__viewport,.doc-player__block{position:absolute;top:0;left:0;width:100%;height:100%}.doc-player__block--active{z-index:2}.doc-player__block--previous{z-index:1}.doc-player__tap-feedback{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:150;pointer-events:none;display:flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:50%;background:#00000073;animation:tap-feedback-fade .6s ease-out forwards}@keyframes tap-feedback-fade{0%{opacity:1;transform:translate(-50%,-50%) scale(1)}to{opacity:0;transform:translate(-50%,-50%) scale(1.3)}}.block-svg{width:100%;height:100%;display:block}.block-layer{overflow:hidden}.block-layer--image{overflow:visible}.text-shadow{text-shadow:0 2px 4px rgba(0,0,0,.8),0 4px 8px rgba(0,0,0,.4)}.text-shadow-light{text-shadow:0 1px 2px rgba(0,0,0,.6)}.text-box{background:#0009;padding:16px 24px;border-radius:4px}.text-box--light{background:#ffffffe6;color:#1a1a1a}.squisq-inline-video-player{display:inline-block;max-width:480px;width:100%;margin:.5em 0}.squisq-inline-video-player video{display:block;width:100%;max-width:100%;height:auto;border-radius:4px;background:#000}.squisq-inline-audio-player{display:inline-block;max-width:360px;width:100%;margin:.25em 0;vertical-align:middle}.squisq-inline-audio-player audio{display:block;width:100%}
2
2
  /*# sourceMappingURL=squisq-player.css.map */
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/styles/doc-animations.css"],"sourcesContent":["/**\n * Doc Animations\n *\n * CSS keyframe animations for the visual doc system.\n * Designed to be ES2015/Chrome 49 compatible for Coherent GT (MSFS).\n *\n * Animation classes are applied dynamically based on Doc.\n * Each animation has variants for common durations.\n */\n\n/* ============================================\n Slow Zoom Effect\n Slow zoom with optional pan for cinematic feel\n ============================================ */\n\n@keyframes slowZoomIn {\n from {\n transform: scale(1);\n }\n to {\n transform: scale(1.15);\n }\n}\n\n@keyframes slowZoomOut {\n from {\n transform: scale(1.15);\n }\n to {\n transform: scale(1);\n }\n}\n\n@keyframes slowZoomPanLeft {\n from {\n transform: translateX(0) scale(1.1);\n }\n to {\n transform: translateX(-8%) scale(1.1);\n }\n}\n\n@keyframes slowZoomPanRight {\n from {\n transform: translateX(-8%) scale(1.1);\n }\n to {\n transform: translateX(0) scale(1.1);\n }\n}\n\n@keyframes slowZoomPanUp {\n from {\n transform: translateY(0) scale(1.1);\n }\n to {\n transform: translateY(-8%) scale(1.1);\n }\n}\n\n@keyframes slowZoomPanDown {\n from {\n transform: translateY(-8%) scale(1.1);\n }\n to {\n transform: translateY(0) scale(1.1);\n }\n}\n\n/* Slow zoom combined zoom + pan */\n@keyframes slowZoomCombinedPanLeft {\n from {\n transform: translateX(0) scale(1);\n }\n to {\n transform: translateX(-5%) scale(1.12);\n }\n}\n\n@keyframes slowZoomCombinedPanRight {\n from {\n transform: translateX(-5%) scale(1.12);\n }\n to {\n transform: translateX(0) scale(1);\n }\n}\n\n/* ============================================\n Fade Animations\n ============================================ */\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n@keyframes fadeInUp {\n from {\n opacity: 0;\n transform: translateY(20px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes fadeInDown {\n from {\n opacity: 0;\n transform: translateY(-20px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* ============================================\n Zoom Animations\n ============================================ */\n\n@keyframes zoomIn {\n from {\n transform: scale(0.9);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n@keyframes zoomOut {\n from {\n transform: scale(1);\n opacity: 1;\n }\n to {\n transform: scale(0.9);\n opacity: 0;\n }\n}\n\n/* ============================================\n Pan/Slide Animations\n ============================================ */\n\n@keyframes panLeft {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(-10%);\n }\n}\n\n@keyframes panRight {\n from {\n transform: translateX(-10%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes slideInLeft {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes slideInRight {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes slideOutLeft {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(-100%);\n }\n}\n\n@keyframes slideOutRight {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(100%);\n }\n}\n\n/* ============================================\n Text Animations\n ============================================ */\n\n@keyframes typewriter {\n from {\n clip-path: inset(0 100% 0 0);\n }\n to {\n clip-path: inset(0 0 0 0);\n }\n}\n\n/* Fallback for browsers without clip-path */\n@keyframes typewriterFallback {\n from {\n width: 0;\n overflow: hidden;\n }\n to {\n width: 100%;\n overflow: hidden;\n }\n}\n\n/* ============================================\n Block Transitions\n Applied to entire block containers\n ============================================ */\n\n.transition-fade-enter {\n animation: fadeIn var(--transition-duration, 1.5s) ease-out forwards;\n}\n\n.transition-fade-exit {\n animation: fadeOut var(--transition-duration, 1.5s) ease-out forwards;\n}\n\n.transition-dissolve-enter {\n animation: fadeIn var(--transition-duration, 2s) ease-in-out forwards;\n}\n\n.transition-dissolve-exit {\n animation: fadeOut var(--transition-duration, 2s) ease-in-out forwards;\n}\n\n.transition-slideLeft-enter {\n animation: slideInRight var(--transition-duration, 0.8s) ease-out forwards;\n}\n\n.transition-slideLeft-exit {\n animation: slideOutLeft var(--transition-duration, 0.8s) ease-out forwards;\n}\n\n.transition-slideRight-enter {\n animation: slideInLeft var(--transition-duration, 0.8s) ease-out forwards;\n}\n\n.transition-slideRight-exit {\n animation: slideOutRight var(--transition-duration, 0.8s) ease-out forwards;\n}\n\n/* ============================================\n Animation Utility Classes\n Applied dynamically based on layer.animation\n ============================================ */\n\n.anim-none {\n animation: none;\n}\n\n.anim-fadeIn {\n animation: fadeIn var(--anim-duration, 1s) var(--anim-easing, ease-out) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-fadeOut {\n animation: fadeOut var(--anim-duration, 1s) var(--anim-easing, ease-out) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-fadeInUp {\n animation: fadeInUp var(--anim-duration, 0.6s) var(--anim-easing, ease-out) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-slowZoom-in {\n animation: slowZoomIn var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-slowZoom-out {\n animation: slowZoomOut var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-slowZoom-panLeft {\n animation: slowZoomCombinedPanLeft var(--anim-duration, 8s) var(--anim-easing, linear)\n var(--anim-delay, 0s) forwards;\n}\n\n.anim-slowZoom-panRight {\n animation: slowZoomCombinedPanRight var(--anim-duration, 8s) var(--anim-easing, linear)\n var(--anim-delay, 0s) forwards;\n}\n\n.anim-zoomIn {\n animation: zoomIn var(--anim-duration, 0.5s) var(--anim-easing, ease-out) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-zoomOut {\n animation: zoomOut var(--anim-duration, 0.5s) var(--anim-easing, ease-out) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-panLeft {\n animation: panLeft var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-panRight {\n animation: panRight var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-typewriter {\n animation: typewriter var(--anim-duration, 2s) var(--anim-easing, steps(40, end))\n var(--anim-delay, 0s) forwards;\n}\n\n/* ============================================\n Doc Player Container Styles\n ============================================ */\n\n.doc-player {\n position: relative;\n overflow: hidden;\n /* clip-path provides a hard pixel clip that catches SVG foreignObject bleed\n which can escape overflow:hidden in some browsers */\n clip-path: inset(0);\n background: #000;\n /* Ensure max dimensions work with aspect-ratio */\n max-width: 100%;\n max-height: 100%;\n}\n\n.doc-player__viewport {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.doc-player__block {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.doc-player__block--active {\n z-index: 2;\n}\n\n.doc-player__block--previous {\n z-index: 1;\n}\n\n/* Tap-to-toggle play/pause feedback */\n.doc-player__tap-feedback {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n z-index: 150;\n pointer-events: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 72px;\n height: 72px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.45);\n animation: tap-feedback-fade 0.6s ease-out forwards;\n}\n\n@keyframes tap-feedback-fade {\n 0% {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n 100% {\n opacity: 0;\n transform: translate(-50%, -50%) scale(1.3);\n }\n}\n\n/* SVG block container */\n.block-svg {\n width: 100%;\n height: 100%;\n display: block;\n}\n\n/* Layer containers within SVG */\n.block-layer {\n overflow: hidden;\n}\n\n.block-layer--image {\n /* Images need overflow visible for Ken Burns */\n overflow: visible;\n}\n\n/* ============================================\n Text Styling Helpers\n ============================================ */\n\n.text-shadow {\n text-shadow:\n 0 2px 4px rgba(0, 0, 0, 0.8),\n 0 4px 8px rgba(0, 0, 0, 0.4);\n}\n\n.text-shadow-light {\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n\n/* Text background box */\n.text-box {\n background: rgba(0, 0, 0, 0.6);\n padding: 16px 24px;\n border-radius: 4px;\n}\n\n.text-box--light {\n background: rgba(255, 255, 255, 0.9);\n color: #1a1a1a;\n}\n"],"mappings":"AAeA,WAAW,WACT,GACE,UAAW,MAAM,EACnB,CACA,GACE,UAAW,MAAM,KACnB,CACF,CAEA,WAAW,YACT,GACE,UAAW,MAAM,KACnB,CACA,GACE,UAAW,MAAM,EACnB,CACF,CAEA,WAAW,gBACT,GACE,UAAW,UAAW,GAAG,MAAM,IACjC,CACA,GACE,UAAW,UAAW,KAAK,MAAM,IACnC,CACF,CAEA,WAAW,iBACT,GACE,UAAW,UAAW,KAAK,MAAM,IACnC,CACA,GACE,UAAW,UAAW,GAAG,MAAM,IACjC,CACF,CAEA,WAAW,cACT,GACE,UAAW,WAAW,GAAG,MAAM,IACjC,CACA,GACE,UAAW,WAAW,KAAK,MAAM,IACnC,CACF,CAEA,WAAW,gBACT,GACE,UAAW,WAAW,KAAK,MAAM,IACnC,CACA,GACE,UAAW,WAAW,GAAG,MAAM,IACjC,CACF,CAGA,WAAW,wBACT,GACE,UAAW,UAAW,GAAG,MAAM,EACjC,CACA,GACE,UAAW,UAAW,KAAK,MAAM,KACnC,CACF,CAEA,WAAW,yBACT,GACE,UAAW,UAAW,KAAK,MAAM,KACnC,CACA,GACE,UAAW,UAAW,GAAG,MAAM,EACjC,CACF,CAMA,WAAW,OACT,GACE,QAAS,CACX,CACA,GACE,QAAS,CACX,CACF,CAEA,WAAW,QACT,GACE,QAAS,CACX,CACA,GACE,QAAS,CACX,CACF,CAEA,WAAW,SACT,GACE,QAAS,EACT,UAAW,WAAW,KACxB,CACA,GACE,QAAS,EACT,UAAW,WAAW,EACxB,CACF,CAEA,WAAW,WACT,GACE,QAAS,EACT,UAAW,WAAW,MACxB,CACA,GACE,QAAS,EACT,UAAW,WAAW,EACxB,CACF,CAMA,WAAW,OACT,GACE,UAAW,MAAM,IACjB,QAAS,CACX,CACA,GACE,UAAW,MAAM,GACjB,QAAS,CACX,CACF,CAEA,WAAW,QACT,GACE,UAAW,MAAM,GACjB,QAAS,CACX,CACA,GACE,UAAW,MAAM,IACjB,QAAS,CACX,CACF,CAMA,WAAW,QACT,GACE,UAAW,UAAW,EACxB,CACA,GACE,UAAW,UAAW,KACxB,CACF,CAEA,WAAW,SACT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","names":[]}
1
+ {"version":3,"sources":["../src/styles/doc-animations.css"],"sourcesContent":["/**\n * Doc Animations\n *\n * CSS keyframe animations for the visual doc system.\n * Designed to be ES2015/Chrome 49 compatible for Coherent GT (MSFS).\n *\n * Animation classes are applied dynamically based on Doc.\n * Each animation has variants for common durations.\n */\n\n/* ============================================\n Slow Zoom Effect\n Slow zoom with optional pan for cinematic feel\n ============================================ */\n\n@keyframes slowZoomIn {\n from {\n transform: scale(1);\n }\n to {\n transform: scale(1.15);\n }\n}\n\n@keyframes slowZoomOut {\n from {\n transform: scale(1.15);\n }\n to {\n transform: scale(1);\n }\n}\n\n@keyframes slowZoomPanLeft {\n from {\n transform: translateX(0) scale(1.1);\n }\n to {\n transform: translateX(-8%) scale(1.1);\n }\n}\n\n@keyframes slowZoomPanRight {\n from {\n transform: translateX(-8%) scale(1.1);\n }\n to {\n transform: translateX(0) scale(1.1);\n }\n}\n\n@keyframes slowZoomPanUp {\n from {\n transform: translateY(0) scale(1.1);\n }\n to {\n transform: translateY(-8%) scale(1.1);\n }\n}\n\n@keyframes slowZoomPanDown {\n from {\n transform: translateY(-8%) scale(1.1);\n }\n to {\n transform: translateY(0) scale(1.1);\n }\n}\n\n/* Slow zoom combined zoom + pan */\n@keyframes slowZoomCombinedPanLeft {\n from {\n transform: translateX(0) scale(1);\n }\n to {\n transform: translateX(-5%) scale(1.12);\n }\n}\n\n@keyframes slowZoomCombinedPanRight {\n from {\n transform: translateX(-5%) scale(1.12);\n }\n to {\n transform: translateX(0) scale(1);\n }\n}\n\n/* ============================================\n Fade Animations\n ============================================ */\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n@keyframes fadeInUp {\n from {\n opacity: 0;\n transform: translateY(20px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n@keyframes fadeInDown {\n from {\n opacity: 0;\n transform: translateY(-20px);\n }\n to {\n opacity: 1;\n transform: translateY(0);\n }\n}\n\n/* ============================================\n Zoom Animations\n ============================================ */\n\n@keyframes zoomIn {\n from {\n transform: scale(0.9);\n opacity: 0;\n }\n to {\n transform: scale(1);\n opacity: 1;\n }\n}\n\n@keyframes zoomOut {\n from {\n transform: scale(1);\n opacity: 1;\n }\n to {\n transform: scale(0.9);\n opacity: 0;\n }\n}\n\n/* ============================================\n Pan/Slide Animations\n ============================================ */\n\n@keyframes panLeft {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(-10%);\n }\n}\n\n@keyframes panRight {\n from {\n transform: translateX(-10%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes slideInLeft {\n from {\n transform: translateX(-100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes slideInRight {\n from {\n transform: translateX(100%);\n }\n to {\n transform: translateX(0);\n }\n}\n\n@keyframes slideOutLeft {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(-100%);\n }\n}\n\n@keyframes slideOutRight {\n from {\n transform: translateX(0);\n }\n to {\n transform: translateX(100%);\n }\n}\n\n/* ============================================\n Text Animations\n ============================================ */\n\n@keyframes typewriter {\n from {\n clip-path: inset(0 100% 0 0);\n }\n to {\n clip-path: inset(0 0 0 0);\n }\n}\n\n/* Fallback for browsers without clip-path */\n@keyframes typewriterFallback {\n from {\n width: 0;\n overflow: hidden;\n }\n to {\n width: 100%;\n overflow: hidden;\n }\n}\n\n/* ============================================\n Block Transitions\n Applied to entire block containers\n ============================================ */\n\n.transition-fade-enter {\n animation: fadeIn var(--transition-duration, 1.5s) ease-out forwards;\n}\n\n.transition-fade-exit {\n animation: fadeOut var(--transition-duration, 1.5s) ease-out forwards;\n}\n\n.transition-dissolve-enter {\n animation: fadeIn var(--transition-duration, 2s) ease-in-out forwards;\n}\n\n.transition-dissolve-exit {\n animation: fadeOut var(--transition-duration, 2s) ease-in-out forwards;\n}\n\n.transition-slideLeft-enter {\n animation: slideInRight var(--transition-duration, 0.8s) ease-out forwards;\n}\n\n.transition-slideLeft-exit {\n animation: slideOutLeft var(--transition-duration, 0.8s) ease-out forwards;\n}\n\n.transition-slideRight-enter {\n animation: slideInLeft var(--transition-duration, 0.8s) ease-out forwards;\n}\n\n.transition-slideRight-exit {\n animation: slideOutRight var(--transition-duration, 0.8s) ease-out forwards;\n}\n\n/* ============================================\n Animation Utility Classes\n Applied dynamically based on layer.animation\n ============================================ */\n\n.anim-none {\n animation: none;\n}\n\n.anim-fadeIn {\n animation: fadeIn var(--anim-duration, 1s) var(--anim-easing, ease-out) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-fadeOut {\n animation: fadeOut var(--anim-duration, 1s) var(--anim-easing, ease-out) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-fadeInUp {\n animation: fadeInUp var(--anim-duration, 0.6s) var(--anim-easing, ease-out) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-slowZoom-in {\n animation: slowZoomIn var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-slowZoom-out {\n animation: slowZoomOut var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-slowZoom-panLeft {\n animation: slowZoomCombinedPanLeft var(--anim-duration, 8s) var(--anim-easing, linear)\n var(--anim-delay, 0s) forwards;\n}\n\n.anim-slowZoom-panRight {\n animation: slowZoomCombinedPanRight var(--anim-duration, 8s) var(--anim-easing, linear)\n var(--anim-delay, 0s) forwards;\n}\n\n.anim-zoomIn {\n animation: zoomIn var(--anim-duration, 0.5s) var(--anim-easing, ease-out) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-zoomOut {\n animation: zoomOut var(--anim-duration, 0.5s) var(--anim-easing, ease-out) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-panLeft {\n animation: panLeft var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-panRight {\n animation: panRight var(--anim-duration, 8s) var(--anim-easing, linear) var(--anim-delay, 0s)\n forwards;\n}\n\n.anim-typewriter {\n animation: typewriter var(--anim-duration, 2s) var(--anim-easing, steps(40, end))\n var(--anim-delay, 0s) forwards;\n}\n\n/* ============================================\n Doc Player Container Styles\n ============================================ */\n\n.doc-player {\n position: relative;\n overflow: hidden;\n /* clip-path provides a hard pixel clip that catches SVG foreignObject bleed\n which can escape overflow:hidden in some browsers */\n clip-path: inset(0);\n background: #000;\n /* Ensure max dimensions work with aspect-ratio */\n max-width: 100%;\n max-height: 100%;\n}\n\n.doc-player__viewport {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.doc-player__block {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n}\n\n.doc-player__block--active {\n z-index: 2;\n}\n\n.doc-player__block--previous {\n z-index: 1;\n}\n\n/* Tap-to-toggle play/pause feedback */\n.doc-player__tap-feedback {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n z-index: 150;\n pointer-events: none;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 72px;\n height: 72px;\n border-radius: 50%;\n background: rgba(0, 0, 0, 0.45);\n animation: tap-feedback-fade 0.6s ease-out forwards;\n}\n\n@keyframes tap-feedback-fade {\n 0% {\n opacity: 1;\n transform: translate(-50%, -50%) scale(1);\n }\n 100% {\n opacity: 0;\n transform: translate(-50%, -50%) scale(1.3);\n }\n}\n\n/* SVG block container */\n.block-svg {\n width: 100%;\n height: 100%;\n display: block;\n}\n\n/* Layer containers within SVG */\n.block-layer {\n overflow: hidden;\n}\n\n.block-layer--image {\n /* Images need overflow visible for Ken Burns */\n overflow: visible;\n}\n\n/* ============================================\n Text Styling Helpers\n ============================================ */\n\n.text-shadow {\n text-shadow:\n 0 2px 4px rgba(0, 0, 0, 0.8),\n 0 4px 8px rgba(0, 0, 0, 0.4);\n}\n\n.text-shadow-light {\n text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n\n/* Text background box */\n.text-box {\n background: rgba(0, 0, 0, 0.6);\n padding: 16px 24px;\n border-radius: 4px;\n}\n\n.text-box--light {\n background: rgba(255, 255, 255, 0.9);\n color: #1a1a1a;\n}\n\n/* ── Inline media players ────────────────────────────────────────── */\n/* Used by <InlineVideoPlayer> / <InlineAudioPlayer>, which the\n * MarkdownRenderer swaps in for raw <video>/<audio> htmlElements so\n * their src goes through MediaContext. The wrapper is a <span> with\n * `display: inline-block` so the player flows inline with surrounding\n * text but still respects its own intrinsic dimensions. */\n\n.squisq-inline-video-player {\n display: inline-block;\n max-width: 480px;\n width: 100%;\n margin: 0.5em 0;\n}\n\n.squisq-inline-video-player video {\n display: block;\n width: 100%;\n max-width: 100%;\n height: auto;\n border-radius: 4px;\n background: #000;\n}\n\n.squisq-inline-audio-player {\n display: inline-block;\n max-width: 360px;\n width: 100%;\n margin: 0.25em 0;\n vertical-align: middle;\n}\n\n.squisq-inline-audio-player audio {\n display: block;\n width: 100%;\n}\n"],"mappings":"AAeA,WAAW,WACT,GACE,UAAW,MAAM,EACnB,CACA,GACE,UAAW,MAAM,KACnB,CACF,CAEA,WAAW,YACT,GACE,UAAW,MAAM,KACnB,CACA,GACE,UAAW,MAAM,EACnB,CACF,CAEA,WAAW,gBACT,GACE,UAAW,UAAW,GAAG,MAAM,IACjC,CACA,GACE,UAAW,UAAW,KAAK,MAAM,IACnC,CACF,CAEA,WAAW,iBACT,GACE,UAAW,UAAW,KAAK,MAAM,IACnC,CACA,GACE,UAAW,UAAW,GAAG,MAAM,IACjC,CACF,CAEA,WAAW,cACT,GACE,UAAW,WAAW,GAAG,MAAM,IACjC,CACA,GACE,UAAW,WAAW,KAAK,MAAM,IACnC,CACF,CAEA,WAAW,gBACT,GACE,UAAW,WAAW,KAAK,MAAM,IACnC,CACA,GACE,UAAW,WAAW,GAAG,MAAM,IACjC,CACF,CAGA,WAAW,wBACT,GACE,UAAW,UAAW,GAAG,MAAM,EACjC,CACA,GACE,UAAW,UAAW,KAAK,MAAM,KACnC,CACF,CAEA,WAAW,yBACT,GACE,UAAW,UAAW,KAAK,MAAM,KACnC,CACA,GACE,UAAW,UAAW,GAAG,MAAM,EACjC,CACF,CAMA,WAAW,OACT,GACE,QAAS,CACX,CACA,GACE,QAAS,CACX,CACF,CAEA,WAAW,QACT,GACE,QAAS,CACX,CACA,GACE,QAAS,CACX,CACF,CAEA,WAAW,SACT,GACE,QAAS,EACT,UAAW,WAAW,KACxB,CACA,GACE,QAAS,EACT,UAAW,WAAW,EACxB,CACF,CAEA,WAAW,WACT,GACE,QAAS,EACT,UAAW,WAAW,MACxB,CACA,GACE,QAAS,EACT,UAAW,WAAW,EACxB,CACF,CAMA,WAAW,OACT,GACE,UAAW,MAAM,IACjB,QAAS,CACX,CACA,GACE,UAAW,MAAM,GACjB,QAAS,CACX,CACF,CAEA,WAAW,QACT,GACE,UAAW,MAAM,GACjB,QAAS,CACX,CACA,GACE,UAAW,MAAM,IACjB,QAAS,CACX,CACF,CAMA,WAAW,QACT,GACE,UAAW,UAAW,EACxB,CACA,GACE,UAAW,UAAW,KACxB,CACF,CAEA,WAAW,SACT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","names":[]}