@aphexcms/cms-core 2.0.5 → 2.0.7

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 (106) hide show
  1. package/dist/api/documents.d.ts +18 -0
  2. package/dist/api/documents.d.ts.map +1 -1
  3. package/dist/api/documents.js +22 -1
  4. package/dist/components/AdminApp.svelte +53 -1
  5. package/dist/components/AdminApp.svelte.d.ts.map +1 -1
  6. package/dist/components/admin/DocumentEditor.svelte +440 -51
  7. package/dist/components/admin/DocumentEditor.svelte.d.ts +7 -0
  8. package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -1
  9. package/dist/components/admin/DocumentVersionPanel.svelte +138 -0
  10. package/dist/components/admin/DocumentVersionPanel.svelte.d.ts +15 -0
  11. package/dist/components/admin/DocumentVersionPanel.svelte.d.ts.map +1 -0
  12. package/dist/components/admin/MediaBrowser.svelte +42 -13
  13. package/dist/components/admin/MediaBrowser.svelte.d.ts.map +1 -1
  14. package/dist/components/admin/fields/ArrayField.svelte +102 -2
  15. package/dist/components/admin/fields/ArrayField.svelte.d.ts.map +1 -1
  16. package/dist/components/index.d.ts +1 -0
  17. package/dist/components/index.d.ts.map +1 -1
  18. package/dist/components/index.js +1 -0
  19. package/dist/db/interfaces/document.d.ts +14 -0
  20. package/dist/db/interfaces/document.d.ts.map +1 -1
  21. package/dist/db/interfaces/index.d.ts +6 -0
  22. package/dist/db/interfaces/index.d.ts.map +1 -1
  23. package/dist/graphql/resolvers.js +1 -1
  24. package/dist/lib/api/documents.d.ts +18 -0
  25. package/dist/lib/api/documents.d.ts.map +1 -1
  26. package/dist/lib/api/documents.js +22 -1
  27. package/dist/lib/api/documents.js.map +1 -1
  28. package/dist/lib/components/index.d.ts +1 -0
  29. package/dist/lib/components/index.d.ts.map +1 -1
  30. package/dist/lib/components/index.js +1 -0
  31. package/dist/lib/components/index.js.map +1 -1
  32. package/dist/lib/db/interfaces/document.d.ts +14 -0
  33. package/dist/lib/db/interfaces/document.d.ts.map +1 -1
  34. package/dist/lib/db/interfaces/index.d.ts +6 -0
  35. package/dist/lib/db/interfaces/index.d.ts.map +1 -1
  36. package/dist/lib/graphql/resolvers.js +1 -1
  37. package/dist/lib/graphql/resolvers.js.map +1 -1
  38. package/dist/lib/local-api/collection-api.d.ts +5 -1
  39. package/dist/lib/local-api/collection-api.d.ts.map +1 -1
  40. package/dist/lib/local-api/collection-api.js +26 -6
  41. package/dist/lib/local-api/collection-api.js.map +1 -1
  42. package/dist/lib/local-api/index.d.ts +2 -0
  43. package/dist/lib/local-api/index.d.ts.map +1 -1
  44. package/dist/lib/local-api/index.js +7 -2
  45. package/dist/lib/local-api/index.js.map +1 -1
  46. package/dist/lib/routes/document-versions.d.ts +5 -0
  47. package/dist/lib/routes/document-versions.d.ts.map +1 -0
  48. package/dist/lib/routes/document-versions.js +100 -0
  49. package/dist/lib/routes/document-versions.js.map +1 -0
  50. package/dist/lib/routes-exports.d.ts +1 -0
  51. package/dist/lib/routes-exports.d.ts.map +1 -1
  52. package/dist/lib/routes-exports.js +1 -0
  53. package/dist/lib/routes-exports.js.map +1 -1
  54. package/dist/lib/services/index.d.ts +1 -0
  55. package/dist/lib/services/index.d.ts.map +1 -1
  56. package/dist/lib/services/index.js +1 -0
  57. package/dist/lib/services/index.js.map +1 -1
  58. package/dist/lib/services/version-service.d.ts +39 -0
  59. package/dist/lib/services/version-service.d.ts.map +1 -0
  60. package/dist/lib/services/version-service.js +129 -0
  61. package/dist/lib/services/version-service.js.map +1 -0
  62. package/dist/lib/types/config.d.ts +7 -0
  63. package/dist/lib/types/config.d.ts.map +1 -1
  64. package/dist/lib/types/document.d.ts +2 -2
  65. package/dist/lib/types/document.d.ts.map +1 -1
  66. package/dist/lib/types/index.d.ts +1 -0
  67. package/dist/lib/types/index.d.ts.map +1 -1
  68. package/dist/lib/types/index.js +1 -0
  69. package/dist/lib/types/index.js.map +1 -1
  70. package/dist/lib/types/schemas.d.ts +3 -0
  71. package/dist/lib/types/schemas.d.ts.map +1 -1
  72. package/dist/lib/types/version.d.ts +15 -0
  73. package/dist/lib/types/version.d.ts.map +1 -0
  74. package/dist/lib/types/version.js +2 -0
  75. package/dist/lib/types/version.js.map +1 -0
  76. package/dist/local-api/collection-api.d.ts +5 -1
  77. package/dist/local-api/collection-api.d.ts.map +1 -1
  78. package/dist/local-api/collection-api.js +26 -6
  79. package/dist/local-api/index.d.ts +2 -0
  80. package/dist/local-api/index.d.ts.map +1 -1
  81. package/dist/local-api/index.js +7 -2
  82. package/dist/routes/document-versions.d.ts +5 -0
  83. package/dist/routes/document-versions.d.ts.map +1 -0
  84. package/dist/routes/document-versions.js +99 -0
  85. package/dist/routes-exports.d.ts +1 -0
  86. package/dist/routes-exports.d.ts.map +1 -1
  87. package/dist/routes-exports.js +1 -0
  88. package/dist/services/index.d.ts +1 -0
  89. package/dist/services/index.d.ts.map +1 -1
  90. package/dist/services/index.js +1 -0
  91. package/dist/services/version-service.d.ts +39 -0
  92. package/dist/services/version-service.d.ts.map +1 -0
  93. package/dist/services/version-service.js +128 -0
  94. package/dist/types/config.d.ts +7 -0
  95. package/dist/types/config.d.ts.map +1 -1
  96. package/dist/types/document.d.ts +2 -2
  97. package/dist/types/document.d.ts.map +1 -1
  98. package/dist/types/index.d.ts +1 -0
  99. package/dist/types/index.d.ts.map +1 -1
  100. package/dist/types/index.js +1 -0
  101. package/dist/types/schemas.d.ts +3 -0
  102. package/dist/types/schemas.d.ts.map +1 -1
  103. package/dist/types/version.d.ts +15 -0
  104. package/dist/types/version.d.ts.map +1 -0
  105. package/dist/types/version.js +1 -0
  106. package/package.json +1 -1
@@ -41,6 +41,21 @@ export declare class DocumentsApi {
41
41
  * Get draft documents only (convenience method)
42
42
  */
43
43
  static getDrafts(params?: Omit<DocumentListParams, 'status'>): Promise<ApiResponse<Document[]>>;
44
+ /**
45
+ * List document version history
46
+ */
47
+ static listVersions(id: string, params?: {
48
+ limit?: number;
49
+ offset?: number;
50
+ }): Promise<ApiResponse<any[]>>;
51
+ /**
52
+ * Get a specific version
53
+ */
54
+ static getVersion(id: string, versionNumber: number): Promise<ApiResponse<any>>;
55
+ /**
56
+ * Restore a version to draft
57
+ */
58
+ static restoreVersion(id: string, versionNumber: number): Promise<ApiResponse<Document>>;
44
59
  }
45
60
  export declare const documents: {
46
61
  list: typeof DocumentsApi.list;
@@ -53,5 +68,8 @@ export declare const documents: {
53
68
  getByType: typeof DocumentsApi.getByType;
54
69
  getPublished: typeof DocumentsApi.getPublished;
55
70
  getDrafts: typeof DocumentsApi.getDrafts;
71
+ listVersions: typeof DocumentsApi.listVersions;
72
+ getVersion: typeof DocumentsApi.getVersion;
73
+ restoreVersion: typeof DocumentsApi.restoreVersion;
56
74
  };
57
75
  //# sourceMappingURL=documents.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/lib/api/documents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,MAAM,SAAS,CAAC;AAEjB,qBAAa,YAAY;IACxB;;;OAGG;WACU,IAAI,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAYpF;;OAEG;WACU,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIhE;;OAEG;WACU,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAI7E;;OAEG;WACU,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAI7F;;OAEG;WACU,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIhE;;OAEG;WACU,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIlE;;OAEG;WACU,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAI/D;;OAEG;WACU,SAAS,CACrB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAM,GAC9C,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAInC;;OAEG;WACU,YAAY,CACxB,MAAM,GAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAInC;;OAEG;WACU,SAAS,CACrB,MAAM,GAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;CAGnC;AAGD,eAAO,MAAM,SAAS;;;;;;;;;;;CAWrB,CAAC"}
1
+ {"version":3,"file":"documents.d.ts","sourceRoot":"","sources":["../../src/lib/api/documents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACX,QAAQ,EACR,kBAAkB,EAClB,kBAAkB,EAClB,kBAAkB,EAClB,WAAW,EACX,MAAM,SAAS,CAAC;AAEjB,qBAAa,YAAY;IACxB;;;OAGG;WACU,IAAI,CAAC,MAAM,GAAE,kBAAuB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAYpF;;OAEG;WACU,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIhE;;OAEG;WACU,MAAM,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAI7E;;OAEG;WACU,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAI7F;;OAEG;WACU,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIhE;;OAEG;WACU,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAIlE;;OAEG;WACU,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IAI/D;;OAEG;WACU,SAAS,CACrB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,IAAI,CAAC,kBAAkB,EAAE,SAAS,CAAM,GAC9C,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAInC;;OAEG;WACU,YAAY,CACxB,MAAM,GAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAInC;;OAEG;WACU,SAAS,CACrB,MAAM,GAAE,IAAI,CAAC,kBAAkB,EAAE,QAAQ,CAAM,GAC7C,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;IAInC;;OAEG;WACU,YAAY,CACxB,EAAE,EAAE,MAAM,EACV,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAC1C,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAC;IAI9B;;OAEG;WACU,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAIrF;;OAEG;WACU,cAAc,CAAC,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;CAG9F;AAGD,eAAO,MAAM,SAAS;;;;;;;;;;;;;;CAcrB,CAAC"}
@@ -69,6 +69,24 @@ export class DocumentsApi {
69
69
  static async getDrafts(params = {}) {
70
70
  return this.list({ ...params, status: 'draft' });
71
71
  }
72
+ /**
73
+ * List document version history
74
+ */
75
+ static async listVersions(id, params) {
76
+ return apiClient.get(`/documents/${id}/versions`, params);
77
+ }
78
+ /**
79
+ * Get a specific version
80
+ */
81
+ static async getVersion(id, versionNumber) {
82
+ return apiClient.get(`/documents/${id}/versions/${versionNumber}`);
83
+ }
84
+ /**
85
+ * Restore a version to draft
86
+ */
87
+ static async restoreVersion(id, versionNumber) {
88
+ return apiClient.post(`/documents/${id}/versions/${versionNumber}/restore`);
89
+ }
72
90
  }
73
91
  // Export convenience functions for direct use
74
92
  export const documents = {
@@ -81,5 +99,8 @@ export const documents = {
81
99
  deleteById: DocumentsApi.deleteById.bind(DocumentsApi),
82
100
  getByType: DocumentsApi.getByType.bind(DocumentsApi),
83
101
  getPublished: DocumentsApi.getPublished.bind(DocumentsApi),
84
- getDrafts: DocumentsApi.getDrafts.bind(DocumentsApi)
102
+ getDrafts: DocumentsApi.getDrafts.bind(DocumentsApi),
103
+ listVersions: DocumentsApi.listVersions.bind(DocumentsApi),
104
+ getVersion: DocumentsApi.getVersion.bind(DocumentsApi),
105
+ restoreVersion: DocumentsApi.restoreVersion.bind(DocumentsApi)
85
106
  };
@@ -14,6 +14,7 @@
14
14
  import type { SchemaType } from '../types/index';
15
15
  import type { UserSessionPreferences } from '../types/organization';
16
16
  import DocumentEditor from './admin/DocumentEditor.svelte';
17
+ import DocumentVersionPanel from './admin/DocumentVersionPanel.svelte';
17
18
  import DocumentsSkeleton from './admin/DocumentsSkeleton.svelte';
18
19
  import MediaBrowser from './admin/MediaBrowser.svelte';
19
20
  import { documents, organizations } from '../api/index';
@@ -103,6 +104,11 @@
103
104
  let editingDocumentId = $state<string | null>(null);
104
105
  let isCreatingDocument = $state(false);
105
106
 
107
+ // Version history panel state
108
+ let showVersionPanel = $state(false);
109
+ let versionPanelDocId = $state<string | null>(null);
110
+ let versionPreviewData = $state<{ versionNumber: number; data: Record<string, any>; eventType: string } | null>(null);
111
+
106
112
  // Documents list sorting state
107
113
  let sortDropdownOpen = $state(false);
108
114
  let currentSortName = $state<string>('updatedAtDesc'); // Default to "Last Edited"
@@ -170,7 +176,7 @@
170
176
 
171
177
  let layoutConfig = $derived.by(() => {
172
178
  const start = performance.now();
173
- const totalEditors = (currentView === 'editor' ? 1 : 0) + editorStack.length;
179
+ const totalEditors = (currentView === 'editor' ? 1 : 0) + editorStack.length + (showVersionPanel ? 1 : 0);
174
180
 
175
181
  if (totalEditors === 0) {
176
182
  return {
@@ -575,6 +581,30 @@
575
581
  }
576
582
 
577
583
  // Handle opening reference in new editor panel
584
+ function handleOpenVersionHistory(docId: string) {
585
+ showVersionPanel = true;
586
+ versionPanelDocId = docId;
587
+ }
588
+
589
+ function handleCloseVersionPanel() {
590
+ showVersionPanel = false;
591
+ versionPanelDocId = null;
592
+ versionPreviewData = null;
593
+ }
594
+
595
+ // Close version panel when navigating away
596
+ let prevDocType = $state(selectedDocumentType);
597
+ let prevDocId = $state(editingDocumentId);
598
+ $effect(() => {
599
+ if (selectedDocumentType !== prevDocType || editingDocumentId !== prevDocId) {
600
+ prevDocType = selectedDocumentType;
601
+ prevDocId = editingDocumentId;
602
+ if (showVersionPanel) {
603
+ handleCloseVersionPanel();
604
+ }
605
+ }
606
+ });
607
+
578
608
  async function handleOpenReference(documentId: string, documentType: string) {
579
609
  // On mobile, navigate to the referenced document directly
580
610
  // Add fromDocId to track where we came from for proper back navigation
@@ -1271,6 +1301,8 @@
1271
1301
  isCreating={isCreatingDocument}
1272
1302
  onBack={navigateBack}
1273
1303
  onOpenReference={handleOpenReference}
1304
+ onOpenVersionHistory={handleOpenVersionHistory}
1305
+ externalVersionPreview={versionPreviewData}
1274
1306
  onSaved={async (docId) => {
1275
1307
  if (selectedDocumentType) {
1276
1308
  await fetchDocuments(selectedDocumentType);
@@ -1351,6 +1383,7 @@
1351
1383
  isCreating={stackedEditor.isCreating}
1352
1384
  onBack={() => handleCloseStackedEditor(index)}
1353
1385
  onOpenReference={handleOpenReference}
1386
+ onOpenVersionHistory={handleOpenVersionHistory}
1354
1387
  onSaved={async (_) => {}}
1355
1388
  onAutoSaved={() => {}}
1356
1389
  onPublished={async (_) => {}}
@@ -1381,6 +1414,25 @@
1381
1414
  {/if}
1382
1415
  {/each}
1383
1416
  {/if}
1417
+
1418
+ <!-- Version History Panel -->
1419
+ {#if showVersionPanel && versionPanelDocId}
1420
+ <div
1421
+ class="h-full w-[280px] min-w-[250px] overflow-y-auto border-l transition-all duration-200"
1422
+ >
1423
+ <DocumentVersionPanel
1424
+ documentId={versionPanelDocId}
1425
+ onClose={handleCloseVersionPanel}
1426
+ onPreviewVersion={(v) => { versionPreviewData = v; }}
1427
+ onRestored={async () => {
1428
+ versionPreviewData = null;
1429
+ if (selectedDocumentType) {
1430
+ await fetchDocuments(selectedDocumentType);
1431
+ }
1432
+ }}
1433
+ />
1434
+ </div>
1435
+ {/if}
1384
1436
  </div>
1385
1437
  {/key}
1386
1438
  </Tabs.Content>
@@ -1 +1 @@
1
- {"version":3,"file":"AdminApp.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/AdminApp.svelte.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAuBnE,UAAU,KAAK;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,aAAa,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACvE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAA;KAAE,CAAC;IACxD,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,eAAe,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAChD;AAouCF,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}
1
+ {"version":3,"file":"AdminApp.svelte.d.ts","sourceRoot":"","sources":["../../src/lib/components/AdminApp.svelte.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAwBnE,UAAU,KAAK;IACd,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,aAAa,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC5E,WAAW,CAAC,EAAE;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IACzC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,OAAO,CAAA;KAAE,GAAG,IAAI,CAAC;IACvE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,SAAS,CAAC,EAAE;QAAE,KAAK,EAAE,WAAW,GAAG,QAAQ,GAAG,OAAO,CAAA;KAAE,CAAC;IACxD,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,eAAe,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAChD;AA8wCF,QAAA,MAAM,QAAQ,2CAAwC,CAAC;AACvD,KAAK,QAAQ,GAAG,UAAU,CAAC,OAAO,QAAQ,CAAC,CAAC;AAC5C,eAAe,QAAQ,CAAC"}