pptx-svelte-viewer 3.2.3 → 3.4.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 (69) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/{AiChatPanel-ll_EeEu6.js → AiChatPanel-DjHkDmi9.js} +11 -11
  3. package/dist/{export-DGmRuakg.js → export-Bb3HzTLw.js} +35256 -30910
  4. package/dist/i18n.js +1 -1
  5. package/dist/index.d.ts +170 -17
  6. package/dist/index.js +2 -2
  7. package/dist/pptx-svelte-viewer.css +1 -1
  8. package/dist/{translator-Cvwv7iQG.js → translator-vErJ1kUG.js} +48 -5
  9. package/dist/viewer/ai/ai-panel-controller.svelte.d.ts +2 -8
  10. package/dist/viewer/ai/ai-panel-controller.svelte.d.ts.map +1 -1
  11. package/dist/viewer/components/inspector/animation-panel-helpers.d.ts.map +1 -1
  12. package/dist/viewer/components/props-elements.d.ts +9 -0
  13. package/dist/viewer/components/props-elements.d.ts.map +1 -1
  14. package/dist/viewer/components/props-stage.d.ts +2 -0
  15. package/dist/viewer/components/props-stage.d.ts.map +1 -1
  16. package/dist/viewer/editor/editor-arrange-ops.d.ts.map +1 -1
  17. package/dist/viewer/editor/editor-background-controller.d.ts.map +1 -1
  18. package/dist/viewer/editor/editor-clipboard.d.ts.map +1 -1
  19. package/dist/viewer/editor/editor-controller-deps.d.ts +2 -5
  20. package/dist/viewer/editor/editor-controller-deps.d.ts.map +1 -1
  21. package/dist/viewer/editor/editor-controller-wiring.d.ts +1 -2
  22. package/dist/viewer/editor/editor-controller-wiring.d.ts.map +1 -1
  23. package/dist/viewer/editor/editor-controller.svelte.d.ts.map +1 -1
  24. package/dist/viewer/editor/editor-document-state.d.ts.map +1 -1
  25. package/dist/viewer/editor/editor-element-controller.d.ts +1 -1
  26. package/dist/viewer/editor/editor-element-controller.d.ts.map +1 -1
  27. package/dist/viewer/editor/editor-handle-handlers.d.ts +1 -2
  28. package/dist/viewer/editor/editor-handle-handlers.d.ts.map +1 -1
  29. package/dist/viewer/editor/editor-ink-controller.svelte.d.ts.map +1 -1
  30. package/dist/viewer/editor/editor-insert.d.ts.map +1 -1
  31. package/dist/viewer/editor/editor-selection-gestures.d.ts +1 -2
  32. package/dist/viewer/editor/editor-selection-gestures.d.ts.map +1 -1
  33. package/dist/viewer/editor/editor-state.svelte.d.ts +1 -2
  34. package/dist/viewer/editor/editor-state.svelte.d.ts.map +1 -1
  35. package/dist/viewer/editor/editor-transition-controller.d.ts.map +1 -1
  36. package/dist/viewer/editor/editor-zorder.d.ts +2 -2
  37. package/dist/viewer/editor/editor-zorder.d.ts.map +1 -1
  38. package/dist/viewer/editor/index.d.ts +4 -5
  39. package/dist/viewer/editor/index.d.ts.map +1 -1
  40. package/dist/viewer/editor/inline-text.d.ts +1 -6
  41. package/dist/viewer/editor/inline-text.d.ts.map +1 -1
  42. package/dist/viewer/index.d.ts +233 -53
  43. package/dist/viewer/index.js +13 -13
  44. package/dist/viewer/presentation/animation-playback.svelte.d.ts +3 -2
  45. package/dist/viewer/presentation/animation-playback.svelte.d.ts.map +1 -1
  46. package/dist/viewer/presentation/presentation-controller.svelte.d.ts +8 -0
  47. package/dist/viewer/presentation/presentation-controller.svelte.d.ts.map +1 -1
  48. package/dist/viewer/render/media-view.d.ts +1 -13
  49. package/dist/viewer/render/media-view.d.ts.map +1 -1
  50. package/dist/viewer/render/ole-view.d.ts +2 -8
  51. package/dist/viewer/render/ole-view.d.ts.map +1 -1
  52. package/dist/viewer/state/create-viewer-state-presentation.svelte.d.ts.map +1 -1
  53. package/dist/viewer/state/google-webfonts.d.ts +23 -0
  54. package/dist/viewer/state/google-webfonts.d.ts.map +1 -0
  55. package/dist/viewer/state/loader-helpers.d.ts.map +1 -1
  56. package/dist/viewer/state/viewer-effects.svelte.d.ts.map +1 -1
  57. package/package.json +1 -1
  58. package/dist/viewer/ai/ai-log-export.d.ts +0 -71
  59. package/dist/viewer/ai/ai-log-export.d.ts.map +0 -1
  60. package/dist/viewer/ai/focus-targets.d.ts +0 -36
  61. package/dist/viewer/ai/focus-targets.d.ts.map +0 -1
  62. package/dist/viewer/editor/editor-geometry.d.ts +0 -29
  63. package/dist/viewer/editor/editor-geometry.d.ts.map +0 -1
  64. package/dist/viewer/editor/editor-gestures.d.ts +0 -55
  65. package/dist/viewer/editor/editor-gestures.d.ts.map +0 -1
  66. package/dist/viewer/editor/editor-mutations.d.ts +0 -59
  67. package/dist/viewer/editor/editor-mutations.d.ts.map +0 -1
  68. package/dist/viewer/presentation/animation-playback-helpers.d.ts +0 -43
  69. package/dist/viewer/presentation/animation-playback-helpers.d.ts.map +0 -1
@@ -0,0 +1,23 @@
1
+ import { PptxEmbeddedFont, PptxSlide } from 'pptx-viewer-core';
2
+ /**
3
+ * Google Fonts webfont fallback for the Svelte binding.
4
+ *
5
+ * A deck may reference a font family that is neither installed on the
6
+ * reader's machine nor embedded in the .pptx (PowerPoint renders such decks
7
+ * by silently downloading its "cloud fonts"; a browser has no equivalent).
8
+ * When a referenced family is served by the Google Fonts API, the binding
9
+ * injects a `<link rel="stylesheet">` so the text renders with the intended
10
+ * face anyway. The pure href resolution (a bundled-catalogue lookup) lives in
11
+ * `pptx-viewer-shared`; this module owns only the managed `<link>` element
12
+ * (binding-specific DOM id) that the `$effect` in `viewer-effects.svelte.ts`
13
+ * drives.
14
+ */
15
+ /** DOM id of the managed `<link>` element (distinct from the other bindings'). */
16
+ export declare const SVELTE_GOOGLE_FONTS_LINK_ID = "pptx-svelte-google-fonts";
17
+ /** Resolve the Google Fonts href for a loaded deck (`null` when nothing needs fetching). */
18
+ export declare function resolveWebfontHref(slides: readonly PptxSlide[], embeddedFonts: readonly PptxEmbeddedFont[]): Promise<string | null>;
19
+ /** Create / update / remove the managed `<link>` element to match `href`. */
20
+ export declare function syncGoogleWebfontsLink(doc: Document, href: string | null): void;
21
+ /** Remove the managed `<link>` element (effect teardown). */
22
+ export declare function removeGoogleWebfontsLink(doc: Document): void;
23
+ //# sourceMappingURL=google-webfonts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"google-webfonts.d.ts","sourceRoot":"","sources":["../../../src/viewer/state/google-webfonts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGpE;;;;;;;;;;;;GAYG;AAEH,kFAAkF;AAClF,eAAO,MAAM,2BAA2B,6BAA6B,CAAC;AAEtE,4FAA4F;AAC5F,wBAAgB,kBAAkB,CACjC,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,aAAa,EAAE,SAAS,gBAAgB,EAAE,GACxC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAExB;AAED,6EAA6E;AAC7E,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,CAa/E;AAED,6DAA6D;AAC7D,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,QAAQ,GAAG,IAAI,CAE5D"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader-helpers.d.ts","sourceRoot":"","sources":["../../../src/viewer/state/loader-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,mBAAmB,EAEnB,WAAW,EACX,SAAS,EACT,MAAM,kBAAkB,CAAC;AAW1B;;;;;GAKG;AAEH,wEAAwE;AACxE,MAAM,WAAW,aAAa;IAC7B,qEAAqE;IACrE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAM3D;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,aAAa,CAAC,CA4DxB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACtC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CA6DtB;AAED;;;;;GAKG;AACH,wBAAsB,0BAA0B,CAC/C,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CA2BtB;AAED;;;;;;GAMG;AACH,wBAAsB,2BAA2B,CAChD,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,mBAAmB,GAAG,SAAS,GAC5C,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAwB1C"}
1
+ {"version":3,"file":"loader-helpers.d.ts","sourceRoot":"","sources":["../../../src/viewer/state/loader-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEX,mBAAmB,EACnB,WAAW,EACX,SAAS,EACT,MAAM,kBAAkB,CAAC;AAU1B;;;;;GAKG;AAEH,wEAAwE;AACxE,MAAM,WAAW,aAAa;IAC7B,qEAAqE;IACrE,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC1B,oEAAoE;IACpE,QAAQ,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,iEAAiE;AACjE,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAM3D;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACrC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,aAAa,CAAC,CA4DxB;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACtC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAwBtB;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CACzC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,SAAS,EAAE,GACjB,OAAO,CAAC,SAAS,EAAE,CAAC,CAEtB;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CAC1C,OAAO,EAAE,WAAW,EACpB,aAAa,EAAE,mBAAmB,GAAG,SAAS,GAC5C,OAAO,CAAC,mBAAmB,GAAG,SAAS,CAAC,CAE1C"}
@@ -1 +1 @@
1
- {"version":3,"file":"viewer-effects.svelte.d.ts","sourceRoot":"","sources":["../../../src/viewer/state/viewer-effects.svelte.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IACjC,SAAS,IAAI,UAAU,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IACzD,WAAW,IAAI,OAAO,CAAC;IACvB,eAAe,IAAI,MAAM,CAAC;IAC1B,aAAa,IAAI,UAAU,CAAC;IAC5B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,IAAI,CAAC,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9D,UAAU,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACtD,gBAAgB,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC1D;;;;;;;OAOG;IACH,gBAAgB,CAAC,IAAI,IAAI,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CA+F9D"}
1
+ {"version":3,"file":"viewer-effects.svelte.d.ts","sourceRoot":"","sources":["../../../src/viewer/state/viewer-effects.svelte.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAMjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD,MAAM,WAAW,iBAAiB;IACjC,SAAS,IAAI,UAAU,GAAG,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC;IACzD,WAAW,IAAI,OAAO,CAAC;IACvB,eAAe,IAAI,MAAM,CAAC;IAC1B,aAAa,IAAI,UAAU,CAAC;IAC5B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;IACpB,UAAU,EAAE,gBAAgB,CAAC;IAC7B,SAAS,IAAI,CAAC,CAAC,MAAM,EAAE,gBAAgB,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC9D,UAAU,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IACtD,gBAAgB,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAC1D;;;;;;;OAOG;IACH,gBAAgB,CAAC,IAAI,IAAI,CAAC;CAC1B;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAmH9D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pptx-svelte-viewer",
3
- "version": "3.2.3",
3
+ "version": "3.4.0",
4
4
  "description": "Svelte 5 PowerPoint viewer and editor component: render, edit, present, and export PPTX slides in the browser.",
5
5
  "keywords": [
6
6
  "office",
@@ -1,71 +0,0 @@
1
- import { PptxAiChatStore, PptxAiStoredChat } from 'pptx-viewer-shared/ai';
2
- /** One tool invocation captured with its full technical detail. */
3
- export interface AiLogToolCall {
4
- toolName: string;
5
- toolCallId: string;
6
- state: string;
7
- input: unknown;
8
- output: unknown;
9
- errorText?: string;
10
- }
11
- /** One message: its role, concatenated prose, and any tool calls it made. */
12
- export interface AiLogMessage {
13
- role: string;
14
- text: string;
15
- toolCalls: AiLogToolCall[];
16
- }
17
- /** One chat conversation in export form. */
18
- export interface AiLogChat {
19
- id: string;
20
- title: string;
21
- deckId?: string;
22
- createdAt: number;
23
- updatedAt: number;
24
- createdAtIso: string;
25
- updatedAtIso: string;
26
- messageCount: number;
27
- messages: AiLogMessage[];
28
- }
29
- /** Top-level detailed export document. */
30
- export interface AiLogExport {
31
- format: 'pptx-ai-chat-log';
32
- version: 1;
33
- exportedAt: string;
34
- detailed: boolean;
35
- chatCount: number;
36
- chats: AiLogChat[];
37
- }
38
- /** Options controlling how the export document is built. */
39
- export interface BuildChatLogOptions {
40
- /** Include tool-call inputs/outputs. Default `true`. */
41
- detailed?: boolean;
42
- /** Epoch ms stamped as `exportedAt`. Default `Date.now()`. */
43
- now?: number;
44
- }
45
- /** Build the detailed export document from already-loaded chats (pure). */
46
- export declare function buildChatLogExport(chats: readonly PptxAiStoredChat[], options?: BuildChatLogOptions): AiLogExport;
47
- /** Render the same detailed export as a human-readable Markdown transcript. */
48
- export declare function buildChatLogMarkdown(doc: AiLogExport): string;
49
- /** Load every stored chat (newest first) in full detail from a store. */
50
- export declare function collectStoredChats(store: PptxAiChatStore): Promise<PptxAiStoredChat[]>;
51
- /** File format to download. */
52
- export type AiLogFormat = 'json' | 'markdown';
53
- /** Options for {@link exportAiChatLogs}. */
54
- export interface ExportAiChatLogsOptions {
55
- /** Store to read from. Defaults to the shared `createChatHistoryStore()`. */
56
- store?: PptxAiChatStore;
57
- /** `'json'` (default) or `'markdown'`. */
58
- format?: AiLogFormat;
59
- /** Include tool inputs/outputs. Default `true`. */
60
- detailed?: boolean;
61
- /** Epoch ms for the filename + `exportedAt`. Default `Date.now()`. */
62
- now?: number;
63
- }
64
- /**
65
- * Read all stored chats and trigger a browser download of the detailed log.
66
- *
67
- * @returns the number of chats exported. When `0`, no file is downloaded so the
68
- * caller can surface an empty-state message instead.
69
- */
70
- export declare function exportAiChatLogs(options?: ExportAiChatLogsOptions): Promise<number>;
71
- //# sourceMappingURL=ai-log-export.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ai-log-export.d.ts","sourceRoot":"","sources":["../../../src/viewer/ai/ai-log-export.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE/E,mEAAmE;AACnE,MAAM,WAAW,aAAa;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,6EAA6E;AAC7E,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED,4CAA4C;AAC5C,MAAM,WAAW,SAAS;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,YAAY,EAAE,CAAC;CACzB;AAED,0CAA0C;AAC1C,MAAM,WAAW,WAAW;IAC3B,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,SAAS,EAAE,CAAC;CACnB;AAED,4DAA4D;AAC5D,MAAM,WAAW,mBAAmB;IACnC,wDAAwD;IACxD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AA0CD,2EAA2E;AAC3E,wBAAgB,kBAAkB,CACjC,KAAK,EAAE,SAAS,gBAAgB,EAAE,EAClC,OAAO,CAAC,EAAE,mBAAmB,GAC3B,WAAW,CAWb;AAmBD,+EAA+E;AAC/E,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,WAAW,GAAG,MAAM,CA+B7D;AAED,yEAAyE;AACzE,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAU5F;AAWD,+BAA+B;AAC/B,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,CAAC;AAE9C,4CAA4C;AAC5C,MAAM,WAAW,uBAAuB;IACvC,6EAA6E;IAC7E,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,mDAAmD;IACnD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,GAAG,CAAC,EAAE,MAAM,CAAC;CACb;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CAAC,OAAO,CAAC,EAAE,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,CAsBzF"}
@@ -1,36 +0,0 @@
1
- import { PptxSlide } from 'pptx-viewer-core';
2
- import { PptxAiFocusedTarget } from 'pptx-viewer-shared/ai';
3
- /** The selection inputs the focus derivation reads. */
4
- export interface FocusSelectionInput {
5
- activeSlideIndex: number;
6
- selectedElementIds: readonly string[];
7
- selectedElementId: string | null;
8
- }
9
- /**
10
- * Derive focused targets from the live selection: one `element` target per
11
- * selected element on the active slide, or a single whole-`slide` target when
12
- * nothing is selected. Order and multiplicity are preserved (multi-select and
13
- * tables included) so callers can detect e.g. "exactly two tables".
14
- */
15
- export declare function computeFocusTargets(input: FocusSelectionInput): PptxAiFocusedTarget[];
16
- /** A renderable focus chip. `title` carries the full element id for hover. */
17
- export interface FocusChip {
18
- key: string;
19
- label: string;
20
- title: string;
21
- }
22
- /**
23
- * Build display chips for the given targets. Slide targets read `Slide N`;
24
- * element targets read `<Type> <n>` (a friendly short label, full id on hover),
25
- * or `<Type> (missing)` when the element is no longer on the slide.
26
- */
27
- export declare function focusTargetChips(targets: readonly PptxAiFocusedTarget[], slides: readonly PptxSlide[]): FocusChip[];
28
- /** Whether the focus is exactly two table elements (drives the merge action). */
29
- export declare function isTwoTableFocus(targets: readonly PptxAiFocusedTarget[], slides: readonly PptxSlide[]): false | {
30
- slideIndex: number;
31
- elementIdA: string;
32
- elementIdB: string;
33
- };
34
- /** Build the directive that fires `merge_tables` without a confirmation round-trip. */
35
- export declare function mergeTablesDirective(slideIndex: number, elementIdA: string, elementIdB: string): string;
36
- //# sourceMappingURL=focus-targets.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"focus-targets.d.ts","sourceRoot":"","sources":["../../../src/viewer/ai/focus-targets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAe,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAEjE,uDAAuD;AACvD,MAAM,WAAW,mBAAmB;IACnC,gBAAgB,EAAE,MAAM,CAAC;IACzB,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,mBAAmB,EAAE,CAYrF;AAaD,8EAA8E;AAC9E,MAAM,WAAW,SAAS;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd;AAiBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC/B,OAAO,EAAE,SAAS,mBAAmB,EAAE,EACvC,MAAM,EAAE,SAAS,SAAS,EAAE,GAC1B,SAAS,EAAE,CAiBb;AAED,iFAAiF;AACjF,wBAAgB,eAAe,CAC9B,OAAO,EAAE,SAAS,mBAAmB,EAAE,EACvC,MAAM,EAAE,SAAS,SAAS,EAAE,GAC1B,KAAK,GAAG;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAexE;AAED,uFAAuF;AACvF,wBAAgB,oBAAoB,CACnC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GAChB,MAAM,CAKR"}
@@ -1,29 +0,0 @@
1
- import { BoxTransform, InteractionBox, ResizeHandleId } from 'pptx-viewer-shared';
2
- /**
3
- * Small geometry helpers the shared `element-interaction` module does not
4
- * cover: Shift-to-lock-aspect on corner resizes and arrow-key nudge steps.
5
- * Pure math only (mirrors the vanilla binding's `editor-geometry`); no Svelte
6
- * or DOM dependencies, so it is unit-testable in isolation.
7
- */
8
- /** Arrow-key nudge step in element px (Shift multiplies to the large step). */
9
- export declare const NUDGE_STEP = 1;
10
- export declare const NUDGE_STEP_LARGE = 10;
11
- /** True for the four corner handles (the ones Shift aspect-locks). */
12
- export declare function isCornerHandle(handle: ResizeHandleId): boolean;
13
- /**
14
- * Constrain a corner resize (already computed by the shared `applyResize`) to
15
- * the start box's aspect ratio: the axis with the larger relative change wins
16
- * and the other follows, keeping the anchored (opposite) corner fixed. Edge
17
- * handles are returned unchanged; aspect-locking a one-axis handle would
18
- * fight the drag direction.
19
- */
20
- export declare function lockResizeAspect(resized: BoxTransform, start: InteractionBox, handle: ResizeHandleId, minSize?: number): BoxTransform;
21
- /**
22
- * Map an arrow key to a nudge delta in element px, or `null` for other keys.
23
- * `large` (Shift held) uses the 10px step.
24
- */
25
- export declare function nudgeDelta(key: string, large: boolean): {
26
- dx: number;
27
- dy: number;
28
- } | null;
29
- //# sourceMappingURL=editor-geometry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"editor-geometry.d.ts","sourceRoot":"","sources":["../../../src/viewer/editor/editor-geometry.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEvF;;;;;GAKG;AAEH,+EAA+E;AAC/E,eAAO,MAAM,UAAU,IAAI,CAAC;AAC5B,eAAO,MAAM,gBAAgB,KAAK,CAAC;AAInC,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAE9D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC/B,OAAO,EAAE,YAAY,EACrB,KAAK,EAAE,cAAc,EACrB,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,MAAyB,GAChC,YAAY,CA0Bd;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,EAAE,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAczF"}
@@ -1,55 +0,0 @@
1
- import { InteractionBox, ResizeHandleId, SnapLine, SnapSibling } from 'pptx-viewer-shared';
2
- /**
3
- * Pointer gesture driver for the editing overlay: move / resize / rotate.
4
- *
5
- * All geometry math comes from the shared `element-interaction` helpers
6
- * (`applyDragDelta`, `applyResize`, `computeRotation`, `snapAngle`) plus the
7
- * shared `computeSnapToShape` snap model during moves; this module only owns
8
- * the pointer-event lifecycle (dead-zone, window listeners, cancel). It is
9
- * framework-agnostic (no Svelte), matching the vanilla binding's driver.
10
- */
11
- export type GestureKind = 'move' | 'resize' | 'rotate';
12
- /** Live geometry emitted during and at the end of a gesture (element px). */
13
- export interface GestureTransform {
14
- id: string;
15
- x: number;
16
- y: number;
17
- width: number;
18
- height: number;
19
- rotation: number;
20
- }
21
- export interface GestureDeps {
22
- /** Current stage scale (screen px per element px). */
23
- getScale(): number;
24
- /** Element geometry at gesture start (element px). */
25
- getElementBox(id: string): InteractionBox | undefined;
26
- /** Sibling boxes on the same slide, for snap-to-shape during a move. */
27
- getSiblings(): SnapSibling[];
28
- getSnapToGrid?(): boolean;
29
- getSnapToShape?(): boolean;
30
- getGridSize?(): number;
31
- getGuides?(): readonly {
32
- axis: 'h' | 'v';
33
- position: number;
34
- }[];
35
- /** Overlay origin in client coordinates, for rotation pointer mapping. */
36
- getStageOrigin(): {
37
- left: number;
38
- top: number;
39
- };
40
- /** First movement past the dead zone (push history, mark interaction). */
41
- onStart(id: string, kind: GestureKind): void;
42
- /** Live preview: apply the geometry and render `lines` as snap guides. */
43
- onPreview(transform: GestureTransform, lines: readonly SnapLine[]): void;
44
- /** Gesture finished. `moved` is false for a plain tap (no dead-zone exit). */
45
- onEnd(transform: GestureTransform | null, moved: boolean, id: string): void;
46
- }
47
- export interface GestureController {
48
- /** Begin a gesture from a `pointerdown`. `handle` only for `resize`. */
49
- begin(kind: GestureKind, id: string, event: PointerEvent, handle?: ResizeHandleId): void;
50
- isActive(): boolean;
51
- /** Abort listeners without emitting an end transform (teardown). */
52
- dispose(): void;
53
- }
54
- export declare function createGestureController(deps: GestureDeps): GestureController;
55
- //# sourceMappingURL=editor-gestures.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"editor-gestures.d.ts","sourceRoot":"","sources":["../../../src/viewer/editor/editor-gestures.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAahG;;;;;;;;GAQG;AAEH,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEvD,6EAA6E;AAC7E,MAAM,WAAW,gBAAgB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,WAAW;IAC3B,sDAAsD;IACtD,QAAQ,IAAI,MAAM,CAAC;IACnB,sDAAsD;IACtD,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAAC;IACtD,wEAAwE;IACxE,WAAW,IAAI,WAAW,EAAE,CAAC;IAC7B,aAAa,CAAC,IAAI,OAAO,CAAC;IAC1B,cAAc,CAAC,IAAI,OAAO,CAAC;IAC3B,WAAW,CAAC,IAAI,MAAM,CAAC;IACvB,SAAS,CAAC,IAAI,SAAS;QAAE,IAAI,EAAE,GAAG,GAAG,GAAG,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC/D,0EAA0E;IAC1E,cAAc,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,0EAA0E;IAC1E,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,GAAG,IAAI,CAAC;IAC7C,0EAA0E;IAC1E,SAAS,CAAC,SAAS,EAAE,gBAAgB,EAAE,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,IAAI,CAAC;IACzE,8EAA8E;IAC9E,KAAK,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5E;AAED,MAAM,WAAW,iBAAiB;IACjC,wEAAwE;IACxE,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACzF,QAAQ,IAAI,OAAO,CAAC;IACpB,oEAAoE;IACpE,OAAO,IAAI,IAAI,CAAC;CAChB;AAiBD,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,WAAW,GAAG,iBAAiB,CA+I5E"}
@@ -1,59 +0,0 @@
1
- import { PptxElement, PptxSlide, TextSegment } from 'pptx-viewer-core';
2
- /**
3
- * Pure, immutable slide-array mutations for the Svelte editor.
4
- *
5
- * Mirrors the vanilla binding's `editor-mutations` (in turn the Vue binding's
6
- * `useEditorOperations` commit helpers), minus the reactivity: every function
7
- * takes the current `PptxSlide[]` and returns a brand-new array (untouched
8
- * slides are reused by reference so the render layer can cheaply detect
9
- * changes). All cloning defers to the core helpers (`cloneSlide`,
10
- * `cloneElement`, `duplicateElement`); nothing is mutated in place.
11
- */
12
- /** Geometry patch applied by drag / resize / rotate / nudge. */
13
- export interface ElementBoxPatch {
14
- x: number;
15
- y: number;
16
- width: number;
17
- height: number;
18
- rotation: number;
19
- }
20
- /** Find a top-level element by id on the given slide (or `undefined`). */
21
- export declare function findSlideElement(slides: readonly PptxSlide[], slideIndex: number, elementId: string): PptxElement | undefined;
22
- /** Rebuild one slide's `elements` via `mapElements`; other slides are reused. */
23
- export declare function mapSlideElements(slides: readonly PptxSlide[], slideIndex: number, mapElements: (elements: PptxElement[]) => PptxElement[]): PptxSlide[];
24
- /** Shallow-merge `updates` into the element with `elementId` (cloned first). */
25
- export declare function updateElement(slides: readonly PptxSlide[], slideIndex: number, elementId: string, updates: Partial<PptxElement>): PptxSlide[];
26
- /** Patch an element's geometry (x/y/width/height/rotation). */
27
- export declare function patchElementGeometry(slides: readonly PptxSlide[], slideIndex: number, elementId: string, box: ElementBoxPatch): PptxSlide[];
28
- /** Remove the element with `elementId` from the slide. */
29
- export declare function removeElement(slides: readonly PptxSlide[], slideIndex: number, elementId: string): PptxSlide[];
30
- /**
31
- * Deep-clone an element (fresh ids via core `duplicateElement`, group children
32
- * included), offset it slightly, and append it to the slide. Returns the new
33
- * slide array plus the copy's id, or `null` when the source is missing.
34
- */
35
- export declare function duplicateElementOnSlide(slides: readonly PptxSlide[], slideIndex: number, elementId: string): {
36
- slides: PptxSlide[];
37
- newId: string;
38
- } | null;
39
- /** Deep-clone the whole slide array (history snapshots). */
40
- export declare function cloneSlides(slides: readonly PptxSlide[]): PptxSlide[];
41
- /**
42
- * Replace the plain-text speaker notes on one slide. Mirrors the Vue binding's
43
- * `onNotesUpdate`: only `notes` is written, `notesSegments` (rich runs loaded
44
- * from a .pptx) is intentionally left untouched, matching the plain-text
45
- * commit contract shared by every binding's notes panel.
46
- */
47
- export declare function updateSlideNotes(slides: readonly PptxSlide[], slideIndex: number, notes: string, notesSegments?: TextSegment[]): PptxSlide[];
48
- /**
49
- * Shallow-merge `patch` into the slide at `slideIndex` (cloned first). Other
50
- * slides are reused by reference. Backs the Design tab's Format Background
51
- * panel and the Transitions tab's single-slide apply.
52
- */
53
- export declare function updateSlide(slides: readonly PptxSlide[], slideIndex: number, patch: Partial<PptxSlide>): PptxSlide[];
54
- /**
55
- * Shallow-merge `patch` into every slide. Backs the Transitions tab's
56
- * "Apply to All Slides" option.
57
- */
58
- export declare function updateAllSlides(slides: readonly PptxSlide[], patch: Partial<PptxSlide>): PptxSlide[];
59
- //# sourceMappingURL=editor-mutations.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"editor-mutations.d.ts","sourceRoot":"","sources":["../../../src/viewer/editor/editor-mutations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG5E;;;;;;;;;GASG;AAEH,gEAAgE;AAChE,MAAM,WAAW,eAAe;IAC/B,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CACjB;AAKD,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GACf,WAAW,GAAG,SAAS,CAEzB;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,KAAK,WAAW,EAAE,GACrD,SAAS,EAAE,CAIb;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAC5B,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,GAC3B,SAAS,EAAE,CAMb;AAED,+DAA+D;AAC/D,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,eAAe,GAClB,SAAS,EAAE,CAQb;AAED,0DAA0D;AAC1D,wBAAgB,aAAa,CAC5B,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GACf,SAAS,EAAE,CAIb;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACtC,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,GACf;IAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAY/C;AAED,4DAA4D;AAC5D,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,GAAG,SAAS,EAAE,CAErE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC/B,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,EACb,aAAa,CAAC,EAAE,WAAW,EAAE,GAC3B,SAAS,EAAE,CAMb;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAC1B,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GACvB,SAAS,EAAE,CAEb;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC9B,MAAM,EAAE,SAAS,SAAS,EAAE,EAC5B,KAAK,EAAE,OAAO,CAAC,SAAS,CAAC,GACvB,SAAS,EAAE,CAEb"}
@@ -1,43 +0,0 @@
1
- import { PresentationAnimationController, ElementAnimationState, TimelineClickGroup } from 'pptx-viewer-shared';
2
- /** Updater over the element-state map (React `setState`-compatible signature). */
3
- export type StatesSetter = (updater: (prev: Map<string, ElementAnimationState>) => Map<string, ElementAnimationState>) => void;
4
- /** Mutable handle holding the in-flight `requestAnimationFrame` id (or null). */
5
- export interface BuildRafHandle {
6
- current: number | null;
7
- }
8
- /** Everything the step / build / auto-advance helpers need from the playback. */
9
- export interface PlaybackContext {
10
- setStates: StatesSetter;
11
- /** Timer ids collected here so the playback can clear them on slide change. */
12
- timers: number[];
13
- buildHandle: BuildRafHandle;
14
- /** Host-provided action-sound player; falls back to the local audio element. */
15
- onPlayActionSound?: (soundPath: string) => void;
16
- /** Root element to scope media-command target lookups to (the slide frame). */
17
- frameRoot?: () => HTMLElement | null;
18
- }
19
- /**
20
- * Apply a click-group's steps onto the element-state map: fire sound / media
21
- * commands, set each step's initial visibility + CSS animation, then schedule
22
- * cleanup timers to clear the animation (and hide exits) once each step ends.
23
- * Mirrors the Vue / React `applyAnimationGroupSteps`.
24
- */
25
- export declare function applyAnimationGroupSteps(group: TimelineClickGroup, ctx: PlaybackContext): void;
26
- /** Cancel any in-flight build RAF and clear the handle. */
27
- export declare function cancelBuildReveal(handle: BuildRafHandle): void;
28
- /**
29
- * Ramp a click-group's staged-build `progress` from 0 -> 1 via
30
- * requestAnimationFrame, merging each build element's `build` descriptor onto the
31
- * element states each frame. No-op when the group carries no build step, so
32
- * ordinary click-advance is unchanged. Mirrors the Vue / React `driveBuildReveal`.
33
- */
34
- export declare function driveBuildReveal(controller: PresentationAnimationController, group: TimelineClickGroup, ctx: PlaybackContext): void;
35
- /** Apply a group's steps and start its staged-build reveal (if any). */
36
- export declare function playGroup(controller: PresentationAnimationController, group: TimelineClickGroup, ctx: PlaybackContext): void;
37
- /**
38
- * After a click-group plays, schedule the next group when it should auto-advance
39
- * (withPrevious / afterPrevious), chaining through consecutive auto-advance
40
- * groups. Mirrors the Vue / React `scheduleAutoAdvanceChain`.
41
- */
42
- export declare function scheduleAutoAdvanceChain(controller: PresentationAnimationController, ctx: PlaybackContext): void;
43
- //# sourceMappingURL=animation-playback-helpers.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"animation-playback-helpers.d.ts","sourceRoot":"","sources":["../../../src/viewer/presentation/animation-playback-helpers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAA4B,+BAA+B,EAAE,MAAM,oBAAoB,CAAC;AAC/F,OAAO,KAAK,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAIpF,kFAAkF;AAClF,MAAM,MAAM,YAAY,GAAG,CAC1B,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,KAAK,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,KACrF,IAAI,CAAC;AAEV,iFAAiF;AACjF,MAAM,WAAW,cAAc;IAC9B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,iFAAiF;AACjF,MAAM,WAAW,eAAe;IAC/B,SAAS,EAAE,YAAY,CAAC;IACxB,+EAA+E;IAC/E,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,WAAW,EAAE,cAAc,CAAC;IAC5B,gFAAgF;IAChF,iBAAiB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IAChD,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,WAAW,GAAG,IAAI,CAAC;CACrC;AAMD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,kBAAkB,EAAE,GAAG,EAAE,eAAe,GAAG,IAAI,CAuE9F;AAMD,2DAA2D;AAC3D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI,CAK9D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC/B,UAAU,EAAE,+BAA+B,EAC3C,KAAK,EAAE,kBAAkB,EACzB,GAAG,EAAE,eAAe,GAClB,IAAI,CAsCN;AAMD,wEAAwE;AACxE,wBAAgB,SAAS,CACxB,UAAU,EAAE,+BAA+B,EAC3C,KAAK,EAAE,kBAAkB,EACzB,GAAG,EAAE,eAAe,GAClB,IAAI,CAGN;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACvC,UAAU,EAAE,+BAA+B,EAC3C,GAAG,EAAE,eAAe,GAClB,IAAI,CAqBN"}