@ankhorage/studio 0.21.0 → 0.24.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 (160) hide show
  1. package/README.md +1 -1
  2. package/dist/contractGuards.d.ts +2 -2
  3. package/dist/contractGuards.d.ts.map +1 -1
  4. package/dist/contractGuards.js +2 -562
  5. package/dist/contractGuards.js.map +1 -1
  6. package/dist/core/StudioProvider.js +8 -8
  7. package/dist/core/StudioProvider.js.map +1 -1
  8. package/dist/host/auth/projectAuthHealthService.d.ts +1 -2
  9. package/dist/host/auth/projectAuthHealthService.d.ts.map +1 -1
  10. package/dist/host/auth/projectAuthHealthService.js +2 -10
  11. package/dist/host/auth/projectAuthHealthService.js.map +1 -1
  12. package/dist/host/auth/projectAuthRuntimeDiagnostics.d.ts.map +1 -1
  13. package/dist/host/auth/projectAuthRuntimeDiagnostics.js +9 -44
  14. package/dist/host/auth/projectAuthRuntimeDiagnostics.js.map +1 -1
  15. package/dist/host/createStudioHost.js +1 -1
  16. package/dist/host/dataSources/studioExternalApiService.d.ts +1 -2
  17. package/dist/host/dataSources/studioExternalApiService.d.ts.map +1 -1
  18. package/dist/host/dataSources/studioExternalApiService.js +3 -11
  19. package/dist/host/dataSources/studioExternalApiService.js.map +1 -1
  20. package/dist/host/http/server.d.ts.map +1 -1
  21. package/dist/host/http/server.js +25 -94
  22. package/dist/host/http/server.js.map +1 -1
  23. package/dist/host/layout/templates/rootLayout.d.ts.map +1 -1
  24. package/dist/host/layout/templates/rootLayout.js +1 -2
  25. package/dist/host/layout/templates/rootLayout.js.map +1 -1
  26. package/dist/host/orchestrator/infraSession.d.ts +15 -0
  27. package/dist/host/orchestrator/infraSession.d.ts.map +1 -0
  28. package/dist/host/orchestrator/infraSession.js +45 -0
  29. package/dist/host/orchestrator/infraSession.js.map +1 -0
  30. package/dist/host/orchestrator/moduleManager.d.ts +3 -8
  31. package/dist/host/orchestrator/moduleManager.d.ts.map +1 -1
  32. package/dist/host/orchestrator/moduleManager.js +13 -14
  33. package/dist/host/orchestrator/moduleManager.js.map +1 -1
  34. package/dist/host/orchestrator/projectManager.d.ts +11 -28
  35. package/dist/host/orchestrator/projectManager.d.ts.map +1 -1
  36. package/dist/host/orchestrator/projectManager.js +55 -167
  37. package/dist/host/orchestrator/projectManager.js.map +1 -1
  38. package/dist/host/orchestrator/projectStore.d.ts +7 -5
  39. package/dist/host/orchestrator/projectStore.d.ts.map +1 -1
  40. package/dist/host/orchestrator/projectStore.js +60 -88
  41. package/dist/host/orchestrator/projectStore.js.map +1 -1
  42. package/dist/host/orchestrator/studioInfraUp.d.ts.map +1 -1
  43. package/dist/host/orchestrator/studioInfraUp.js +7 -4
  44. package/dist/host/orchestrator/studioInfraUp.js.map +1 -1
  45. package/dist/host/secrets/projectSecretService.d.ts +1 -1
  46. package/dist/host/secrets/projectSecretService.d.ts.map +1 -1
  47. package/dist/host/secrets/projectSecretService.js +10 -4
  48. package/dist/host/secrets/projectSecretService.js.map +1 -1
  49. package/dist/host/secrets/resolveProjectSecretDatabaseUrl.d.ts +1 -6
  50. package/dist/host/secrets/resolveProjectSecretDatabaseUrl.d.ts.map +1 -1
  51. package/dist/host/secrets/resolveProjectSecretDatabaseUrl.js +12 -63
  52. package/dist/host/secrets/resolveProjectSecretDatabaseUrl.js.map +1 -1
  53. package/dist/host/secrets/trustedOAuthInfraEnvironment.d.ts +2 -2
  54. package/dist/host/secrets/trustedOAuthInfraEnvironment.d.ts.map +1 -1
  55. package/dist/host/secrets/trustedOAuthInfraEnvironment.js +1 -1
  56. package/dist/host/secrets/trustedOAuthInfraEnvironment.js.map +1 -1
  57. package/dist/index.d.ts +3 -3
  58. package/dist/index.d.ts.map +1 -1
  59. package/dist/index.js.map +1 -1
  60. package/dist/manifestState.d.ts.map +1 -1
  61. package/dist/manifestState.js +4 -3
  62. package/dist/manifestState.js.map +1 -1
  63. package/dist/studioAdminRouteModel.d.ts +6 -1
  64. package/dist/studioAdminRouteModel.d.ts.map +1 -1
  65. package/dist/studioAdminRouteModel.js +105 -1
  66. package/dist/studioAdminRouteModel.js.map +1 -1
  67. package/dist/studioRuntimeApi.d.ts +1 -1
  68. package/dist/studioRuntimeApi.d.ts.map +1 -1
  69. package/dist/studioRuntimeApi.js +6 -13
  70. package/dist/studioRuntimeApi.js.map +1 -1
  71. package/dist/ui/admin/AnkhAdminPage.d.ts.map +1 -1
  72. package/dist/ui/admin/AnkhAdminPage.js +13 -2
  73. package/dist/ui/admin/AnkhAdminPage.js.map +1 -1
  74. package/dist/ui/admin/AnkhAdminShell.js +1 -1
  75. package/dist/ui/admin/AnkhAdminShell.js.map +1 -1
  76. package/dist/ui/admin/pages/AuthAdminPage.js +2 -2
  77. package/dist/ui/admin/pages/AuthAdminPage.js.map +1 -1
  78. package/dist/ui/admin/pages/ThemeAdminPage.d.ts.map +1 -1
  79. package/dist/ui/admin/pages/ThemeAdminPage.js +8 -47
  80. package/dist/ui/admin/pages/ThemeAdminPage.js.map +1 -1
  81. package/dist/ui/admin/pages/ThemeColorsAdminPage.d.ts +3 -0
  82. package/dist/ui/admin/pages/ThemeColorsAdminPage.d.ts.map +1 -0
  83. package/dist/ui/admin/pages/ThemeColorsAdminPage.js +36 -0
  84. package/dist/ui/admin/pages/ThemeColorsAdminPage.js.map +1 -0
  85. package/dist/ui/admin/pages/ThemeModeEditorSelector.d.ts +3 -0
  86. package/dist/ui/admin/pages/ThemeModeEditorSelector.d.ts.map +1 -0
  87. package/dist/ui/admin/pages/ThemeModeEditorSelector.js +30 -0
  88. package/dist/ui/admin/pages/ThemeModeEditorSelector.js.map +1 -0
  89. package/dist/ui/admin/pages/ThemeNumericTokensAdminPage.d.ts +6 -0
  90. package/dist/ui/admin/pages/ThemeNumericTokensAdminPage.d.ts.map +1 -0
  91. package/dist/ui/admin/pages/ThemeNumericTokensAdminPage.js +80 -0
  92. package/dist/ui/admin/pages/ThemeNumericTokensAdminPage.js.map +1 -0
  93. package/dist/ui/admin/pages/ThemeRecipeAdminPage.d.ts +7 -0
  94. package/dist/ui/admin/pages/ThemeRecipeAdminPage.d.ts.map +1 -0
  95. package/dist/ui/admin/pages/ThemeRecipeAdminPage.js +45 -0
  96. package/dist/ui/admin/pages/ThemeRecipeAdminPage.js.map +1 -0
  97. package/dist/ui/admin/pages/ThemeRecipeCatalog.d.ts +3 -0
  98. package/dist/ui/admin/pages/ThemeRecipeCatalog.d.ts.map +1 -0
  99. package/dist/ui/admin/pages/ThemeRecipeCatalog.js +24 -0
  100. package/dist/ui/admin/pages/ThemeRecipeCatalog.js.map +1 -0
  101. package/dist/ui/admin/pages/ThemeRecipeFieldEditor.d.ts +11 -0
  102. package/dist/ui/admin/pages/ThemeRecipeFieldEditor.d.ts.map +1 -0
  103. package/dist/ui/admin/pages/ThemeRecipeFieldEditor.js +41 -0
  104. package/dist/ui/admin/pages/ThemeRecipeFieldEditor.js.map +1 -0
  105. package/dist/ui/admin/pages/ThemeTokenAction.d.ts +6 -0
  106. package/dist/ui/admin/pages/ThemeTokenAction.d.ts.map +1 -0
  107. package/dist/ui/admin/pages/ThemeTokenAction.js +20 -0
  108. package/dist/ui/admin/pages/ThemeTokenAction.js.map +1 -0
  109. package/dist/ui/admin/pages/ThemeTypographyAdminPage.d.ts +3 -0
  110. package/dist/ui/admin/pages/ThemeTypographyAdminPage.d.ts.map +1 -0
  111. package/dist/ui/admin/pages/ThemeTypographyAdminPage.js +13 -0
  112. package/dist/ui/admin/pages/ThemeTypographyAdminPage.js.map +1 -0
  113. package/dist/ui/admin/pages/ThemeTypographyHeadingEditor.d.ts +3 -0
  114. package/dist/ui/admin/pages/ThemeTypographyHeadingEditor.d.ts.map +1 -0
  115. package/dist/ui/admin/pages/ThemeTypographyHeadingEditor.js +61 -0
  116. package/dist/ui/admin/pages/ThemeTypographyHeadingEditor.js.map +1 -0
  117. package/dist/ui/admin/pages/ThemeTypographySizeEditor.d.ts +3 -0
  118. package/dist/ui/admin/pages/ThemeTypographySizeEditor.d.ts.map +1 -0
  119. package/dist/ui/admin/pages/ThemeTypographySizeEditor.js +52 -0
  120. package/dist/ui/admin/pages/ThemeTypographySizeEditor.js.map +1 -0
  121. package/dist/ui/admin/pages/ThemeTypographyWeightEditor.d.ts +3 -0
  122. package/dist/ui/admin/pages/ThemeTypographyWeightEditor.d.ts.map +1 -0
  123. package/dist/ui/admin/pages/ThemeTypographyWeightEditor.js +54 -0
  124. package/dist/ui/admin/pages/ThemeTypographyWeightEditor.js.map +1 -0
  125. package/dist/ui/admin/pages/adminThemeModel.d.ts.map +1 -1
  126. package/dist/ui/admin/pages/adminThemeModel.js +1 -2
  127. package/dist/ui/admin/pages/adminThemeModel.js.map +1 -1
  128. package/dist/ui/admin/pages/themeRecipeAuthoringModel.d.ts +10 -0
  129. package/dist/ui/admin/pages/themeRecipeAuthoringModel.d.ts.map +1 -0
  130. package/dist/ui/admin/pages/themeRecipeAuthoringModel.js +20 -0
  131. package/dist/ui/admin/pages/themeRecipeAuthoringModel.js.map +1 -0
  132. package/dist/ui/admin/pages/themeRecipeTokenOptions.d.ts +15 -0
  133. package/dist/ui/admin/pages/themeRecipeTokenOptions.d.ts.map +1 -0
  134. package/dist/ui/admin/pages/themeRecipeTokenOptions.js +16 -0
  135. package/dist/ui/admin/pages/themeRecipeTokenOptions.js.map +1 -0
  136. package/dist/ui/admin/pages/themeTokenAuthoringModel.d.ts +25 -0
  137. package/dist/ui/admin/pages/themeTokenAuthoringModel.d.ts.map +1 -0
  138. package/dist/ui/admin/pages/themeTokenAuthoringModel.js +52 -0
  139. package/dist/ui/admin/pages/themeTokenAuthoringModel.js.map +1 -0
  140. package/dist/ui/admin/pages/useActiveThemeAdmin.d.ts +11 -0
  141. package/dist/ui/admin/pages/useActiveThemeAdmin.d.ts.map +1 -0
  142. package/dist/ui/admin/pages/useActiveThemeAdmin.js +21 -0
  143. package/dist/ui/admin/pages/useActiveThemeAdmin.js.map +1 -0
  144. package/package.json +5 -5
  145. package/dist/host/orchestrator/infraGenerator.d.ts +0 -35
  146. package/dist/host/orchestrator/infraGenerator.d.ts.map +0 -1
  147. package/dist/host/orchestrator/infraGenerator.js +0 -135
  148. package/dist/host/orchestrator/infraGenerator.js.map +0 -1
  149. package/dist/host/orchestrator/infraRuntime.d.ts +0 -46
  150. package/dist/host/orchestrator/infraRuntime.d.ts.map +0 -1
  151. package/dist/host/orchestrator/infraRuntime.js +0 -185
  152. package/dist/host/orchestrator/infraRuntime.js.map +0 -1
  153. package/dist/host/orchestrator/infraValidation.d.ts +0 -3
  154. package/dist/host/orchestrator/infraValidation.d.ts.map +0 -1
  155. package/dist/host/orchestrator/infraValidation.js +0 -59
  156. package/dist/host/orchestrator/infraValidation.js.map +0 -1
  157. package/dist/host/orchestrator/projectDeletion.d.ts +0 -20
  158. package/dist/host/orchestrator/projectDeletion.d.ts.map +0 -1
  159. package/dist/host/orchestrator/projectDeletion.js +0 -191
  160. package/dist/host/orchestrator/projectDeletion.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeRecipeAuthoringModel.d.ts","sourceRoot":"","sources":["../../../../src/ui/admin/pages/themeRecipeAuthoringModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,wBAAwB,GAAG,WAAW,GAAG,SAAS,CAAC;AAE/D,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,QAAQ,CAAC,OAAO,EAAE,oBAAoB,GAAG,SAAS,CAAC;IACnD,QAAQ,CAAC,IAAI,EAAE,wBAAwB,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,wBAAwB,GAAG,SAAS,CAAC;CACtD,GAAG,oBAAoB,GAAG,SAAS,CAOnC"}
@@ -0,0 +1,20 @@
1
+ export function updateThemeRecipeField(args) {
2
+ const bucketName = args.kind === 'component' ? 'components' : 'patterns';
3
+ const bucket = args.recipes?.[bucketName];
4
+ const fields = updateField(bucket?.[args.recipeName], args.fieldName, args.value);
5
+ const nextBucket = updateRecord(bucket, args.recipeName, fields);
6
+ const nextRecipes = { ...args.recipes, [bucketName]: nextBucket };
7
+ return nextRecipes.components || nextRecipes.patterns ? nextRecipes : undefined;
8
+ }
9
+ function updateField(fields, fieldName, value) {
10
+ return updateRecord(fields, fieldName, value);
11
+ }
12
+ function updateRecord(record, key, value) {
13
+ const next = { ...record };
14
+ if (value === undefined)
15
+ delete next[key];
16
+ else
17
+ next[key] = value;
18
+ return Object.keys(next).length > 0 ? next : undefined;
19
+ }
20
+ //# sourceMappingURL=themeRecipeAuthoringModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeRecipeAuthoringModel.js","sourceRoot":"","sources":["../../../../src/ui/admin/pages/themeRecipeAuthoringModel.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,sBAAsB,CAAC,IAMtC;IACC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,CAAC;IACzE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC;IAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;IAClF,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,EAAE,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,EAAE,UAAU,EAAE,CAAC;IAClE,OAAO,WAAW,CAAC,UAAU,IAAI,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;AAClF,CAAC;AAED,SAAS,WAAW,CAClB,MAA6C,EAC7C,SAAiB,EACjB,KAA2C;IAE3C,OAAO,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,YAAY,CACnB,MAA+C,EAC/C,GAAW,EACX,KAAoB;IAEpB,MAAM,IAAI,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IAC3B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;;QACrC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACvB,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { ZoraThemeTokenFamily } from '@ankhorage/zora';
2
+ interface ThemeRecipeTokenSource {
3
+ readonly colors: object;
4
+ readonly spacing: object;
5
+ readonly radii: object;
6
+ readonly shadows: object;
7
+ readonly typography: {
8
+ readonly sizes: object;
9
+ readonly weights: object;
10
+ readonly headings: object;
11
+ };
12
+ }
13
+ export declare function resolveThemeRecipeTokenOptions(theme: ThemeRecipeTokenSource, family: ZoraThemeTokenFamily): readonly string[];
14
+ export {};
15
+ //# sourceMappingURL=themeRecipeTokenOptions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeRecipeTokenOptions.d.ts","sourceRoot":"","sources":["../../../../src/ui/admin/pages/themeRecipeTokenOptions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAE5D,UAAU,sBAAsB;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,wBAAgB,8BAA8B,CAC5C,KAAK,EAAE,sBAAsB,EAC7B,MAAM,EAAE,oBAAoB,GAC3B,SAAS,MAAM,EAAE,CAanB"}
@@ -0,0 +1,16 @@
1
+ export function resolveThemeRecipeTokenOptions(theme, family) {
2
+ if (family === 'colors')
3
+ return Object.keys(theme.colors).sort();
4
+ if (family === 'spacing')
5
+ return Object.keys(theme.spacing).sort();
6
+ if (family === 'radii')
7
+ return Object.keys(theme.radii).sort();
8
+ if (family === 'shadows')
9
+ return Object.keys(theme.shadows).sort();
10
+ return Array.from(new Set([
11
+ ...Object.keys(theme.typography.sizes),
12
+ ...Object.keys(theme.typography.weights),
13
+ ...Object.keys(theme.typography.headings),
14
+ ])).sort();
15
+ }
16
+ //# sourceMappingURL=themeRecipeTokenOptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeRecipeTokenOptions.js","sourceRoot":"","sources":["../../../../src/ui/admin/pages/themeRecipeTokenOptions.ts"],"names":[],"mappings":"AAcA,MAAM,UAAU,8BAA8B,CAC5C,KAA6B,EAC7B,MAA4B;IAE5B,IAAI,MAAM,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACjE,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACnE,IAAI,MAAM,KAAK,OAAO;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC/D,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IAEnE,OAAO,KAAK,CAAC,IAAI,CACf,IAAI,GAAG,CAAC;QACN,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC;QACtC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;QACxC,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,CAAC;KAC1C,CAAC,CACH,CAAC,IAAI,EAAE,CAAC;AACX,CAAC"}
@@ -0,0 +1,25 @@
1
+ import type { ThemeGlobalTokenOverrides, ThemeTypographyHeadingOverrides } from '@ankhorage/contracts';
2
+ export type NumericThemeTokenFamily = 'spacing' | 'radii' | 'shadows';
3
+ export declare function updateNumericThemeToken(args: {
4
+ readonly tokens: ThemeGlobalTokenOverrides | undefined;
5
+ readonly family: NumericThemeTokenFamily;
6
+ readonly key: string;
7
+ readonly value: number | undefined;
8
+ }): ThemeGlobalTokenOverrides | undefined;
9
+ export declare function updateTypographySize(args: {
10
+ readonly tokens: ThemeGlobalTokenOverrides | undefined;
11
+ readonly key: string;
12
+ readonly value: number | undefined;
13
+ }): ThemeGlobalTokenOverrides | undefined;
14
+ export declare function updateTypographyWeight(args: {
15
+ readonly tokens: ThemeGlobalTokenOverrides | undefined;
16
+ readonly key: string;
17
+ readonly value: string | undefined;
18
+ }): ThemeGlobalTokenOverrides | undefined;
19
+ export declare function updateTypographyHeading(args: {
20
+ readonly tokens: ThemeGlobalTokenOverrides | undefined;
21
+ readonly level: string;
22
+ readonly field: keyof ThemeTypographyHeadingOverrides;
23
+ readonly value: number | string | undefined;
24
+ }): ThemeGlobalTokenOverrides | undefined;
25
+ //# sourceMappingURL=themeTokenAuthoringModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeTokenAuthoringModel.d.ts","sourceRoot":"","sources":["../../../../src/ui/admin/pages/themeTokenAuthoringModel.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,+BAA+B,EAEhC,MAAM,sBAAsB,CAAC;AAE9B,MAAM,MAAM,uBAAuB,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAEtE,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,QAAQ,CAAC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,uBAAuB,CAAC;IACzC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,GAAG,yBAAyB,GAAG,SAAS,CAGxC;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACzC,QAAQ,CAAC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,GAAG,yBAAyB,GAAG,SAAS,CAKxC;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,QAAQ,CAAC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;CACpC,GAAG,yBAAyB,GAAG,SAAS,CAKxC;AAED,wBAAgB,uBAAuB,CAAC,IAAI,EAAE;IAC5C,QAAQ,CAAC,MAAM,EAAE,yBAAyB,GAAG,SAAS,CAAC;IACvD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,+BAA+B,CAAC;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CAC7C,GAAG,yBAAyB,GAAG,SAAS,CAexC"}
@@ -0,0 +1,52 @@
1
+ export function updateNumericThemeToken(args) {
2
+ const nextFamily = updateRecordValue(args.tokens?.[args.family], args.key, args.value);
3
+ return normalizeGlobalTokens({ ...args.tokens, [args.family]: nextFamily });
4
+ }
5
+ export function updateTypographySize(args) {
6
+ return updateTypographyTokens(args.tokens, {
7
+ ...args.tokens?.typography,
8
+ sizes: updateRecordValue(args.tokens?.typography?.sizes, args.key, args.value),
9
+ });
10
+ }
11
+ export function updateTypographyWeight(args) {
12
+ return updateTypographyTokens(args.tokens, {
13
+ ...args.tokens?.typography,
14
+ weights: updateRecordValue(args.tokens?.typography?.weights, args.key, args.value),
15
+ });
16
+ }
17
+ export function updateTypographyHeading(args) {
18
+ const headings = args.tokens?.typography?.headings;
19
+ const current = headings?.[args.level] ?? {};
20
+ const nextHeading = { ...current };
21
+ if (args.value === undefined)
22
+ delete nextHeading[args.field];
23
+ else
24
+ Object.assign(nextHeading, { [args.field]: args.value });
25
+ const nextHeadings = updateRecordValue(headings, args.level, Object.keys(nextHeading).length > 0 ? nextHeading : undefined);
26
+ return updateTypographyTokens(args.tokens, {
27
+ ...args.tokens?.typography,
28
+ headings: nextHeadings,
29
+ });
30
+ }
31
+ function updateTypographyTokens(tokens, typography) {
32
+ return normalizeGlobalTokens({ ...tokens, typography: normalizeTypography(typography) });
33
+ }
34
+ function updateRecordValue(record, key, value) {
35
+ const next = { ...record };
36
+ if (value === undefined)
37
+ delete next[key];
38
+ else
39
+ next[key] = value;
40
+ return Object.keys(next).length > 0 ? next : undefined;
41
+ }
42
+ function normalizeTypography(typography) {
43
+ const { headings, sizes, weights } = typography;
44
+ if (!headings && !sizes && !weights)
45
+ return undefined;
46
+ return typography;
47
+ }
48
+ function normalizeGlobalTokens(tokens) {
49
+ const { spacing, radii, typography, shadows } = tokens;
50
+ return spacing || radii || typography || shadows ? tokens : undefined;
51
+ }
52
+ //# sourceMappingURL=themeTokenAuthoringModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"themeTokenAuthoringModel.js","sourceRoot":"","sources":["../../../../src/ui/admin/pages/themeTokenAuthoringModel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ThemeUpdates } from '../../../index';
2
+ import { type ActiveThemeModeSelection } from './adminThemeModel';
3
+ interface ActiveThemeAdminState {
4
+ readonly mode: 'light' | 'dark';
5
+ readonly selection: ActiveThemeModeSelection | null;
6
+ readonly setMode: (mode: 'light' | 'dark') => void;
7
+ readonly updateTheme: (updates: ThemeUpdates) => void;
8
+ }
9
+ export declare function useActiveThemeAdmin(): ActiveThemeAdminState;
10
+ export {};
11
+ //# sourceMappingURL=useActiveThemeAdmin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useActiveThemeAdmin.d.ts","sourceRoot":"","sources":["../../../../src/ui/admin/pages/useActiveThemeAdmin.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,KAAK,wBAAwB,EAAmC,MAAM,mBAAmB,CAAC;AAEnG,UAAU,qBAAqB;IAC7B,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,wBAAwB,GAAG,IAAI,CAAC;IACpD,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;CACvD;AAED,wBAAgB,mBAAmB,IAAI,qBAAqB,CAiB3D"}
@@ -0,0 +1,21 @@
1
+ import { useZoraTheme } from '@ankhorage/zora';
2
+ import { useStudio } from '../../../core/StudioContext';
3
+ import { resolveActiveThemeModeSelection } from './adminThemeModel';
4
+ export function useActiveThemeAdmin() {
5
+ const studio = useStudio();
6
+ const { mode, setMode } = useZoraTheme();
7
+ const selection = studio.manifest
8
+ ? resolveActiveThemeModeSelection({
9
+ themes: studio.manifest.themes,
10
+ activeThemeId: studio.manifest.activeThemeId,
11
+ surfaceMode: mode,
12
+ })
13
+ : null;
14
+ const updateTheme = (updates) => {
15
+ if (!selection)
16
+ return;
17
+ studio.updateTheme(selection.theme.id, updates);
18
+ };
19
+ return { mode, selection, setMode, updateTheme };
20
+ }
21
+ //# sourceMappingURL=useActiveThemeAdmin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useActiveThemeAdmin.js","sourceRoot":"","sources":["../../../../src/ui/admin/pages/useActiveThemeAdmin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAExD,OAAO,EAAiC,+BAA+B,EAAE,MAAM,mBAAmB,CAAC;AASnG,MAAM,UAAU,mBAAmB;IACjC,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,YAAY,EAAE,CAAC;IACzC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ;QAC/B,CAAC,CAAC,+BAA+B,CAAC;YAC9B,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,MAAM;YAC9B,aAAa,EAAE,MAAM,CAAC,QAAQ,CAAC,aAAa;YAC5C,WAAW,EAAE,IAAI;SAClB,CAAC;QACJ,CAAC,CAAC,IAAI,CAAC;IAET,MAAM,WAAW,GAAG,CAAC,OAAqB,EAAE,EAAE;QAC5C,IAAI,CAAC,SAAS;YAAE,OAAO;QACvB,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC,CAAC;IAEF,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AACnD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ankhorage/studio",
3
- "version": "0.21.0",
3
+ "version": "0.24.0",
4
4
  "description": "Studio authoring package for Ankhorage apps",
5
5
  "license": "MIT",
6
6
  "homepage": "https://github.com/ankhorage/studio#readme",
@@ -203,10 +203,10 @@
203
203
  ],
204
204
  "dependencies": {
205
205
  "@ankhorage/color-theory": "^0.0.8",
206
- "@ankhorage/contracts": "^6.0.0",
206
+ "@ankhorage/contracts": "^7.2.0",
207
207
  "@ankhorage/data-sources": "^1.0.1",
208
208
  "@ankhorage/expo-runtime": "^2.0.0",
209
- "@ankhorage/infra": "^3.0.0",
209
+ "@ankhorage/infra": "^3.2.0",
210
210
  "@ankhorage/orchestrator": "^0.3.0",
211
211
  "@ankhorage/orchestrator-module-expo-google-fonts": "^0.2.0",
212
212
  "@ankhorage/orchestrator-module-expo-localization": "^0.5.2",
@@ -215,7 +215,7 @@
215
215
  "@ankhorage/supabase-auth": "^1.1.2",
216
216
  "@ankhorage/supabase-vault": "^0.2.4",
217
217
  "@ankhorage/templates": "^6.0.0",
218
- "@ankhorage/zora": "^2.9.3",
218
+ "@ankhorage/zora": "^2.12.0",
219
219
  "@ankhorage/zora-chess": "^0.1.2",
220
220
  "@ankhorage/zora-tabletop": "^0.0.5",
221
221
  "@fastify/cors": "^11.2.0",
@@ -237,7 +237,7 @@
237
237
  "devDependencies": {
238
238
  "@ankhorage/ankh": "^0.7.0",
239
239
  "@ankhorage/devtools": "^1.2.1",
240
- "@ankhorage/paradox": "^0.1.20",
240
+ "@ankhorage/paradox": "^0.1.21",
241
241
  "@changesets/cli": "^2.31.0",
242
242
  "@types/bun": "^1.3.13",
243
243
  "@types/node": "^25.6.0",
@@ -1,35 +0,0 @@
1
- import type { AppManifest } from '@ankhorage/contracts';
2
- import { generateInfrastructure } from '@ankhorage/infra';
3
- type InfrastructureGenerator = typeof generateInfrastructure;
4
- export interface InfraSyncResult {
5
- generated: number;
6
- removed: number;
7
- warnings: string[];
8
- skipped?: {
9
- reason: string;
10
- };
11
- }
12
- export interface InfraStatusResult {
13
- target: string | null;
14
- hasDeployment: boolean;
15
- hasLedger: boolean;
16
- trackedFiles: number;
17
- generatedAt: string | null;
18
- warnings: string[];
19
- skipped?: {
20
- reason: string;
21
- };
22
- }
23
- export declare function syncProjectInfrastructure(args: {
24
- projectId: string;
25
- projectPath: string;
26
- manifest: AppManifest;
27
- generateInfrastructureImpl?: InfrastructureGenerator;
28
- }): Promise<InfraSyncResult>;
29
- export declare function getProjectInfrastructureStatus(args: {
30
- projectId: string;
31
- projectPath: string;
32
- manifest: AppManifest;
33
- }): Promise<InfraStatusResult>;
34
- export {};
35
- //# sourceMappingURL=infraGenerator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"infraGenerator.d.ts","sourceRoot":"","sources":["../../../src/host/orchestrator/infraGenerator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AAQ1D,KAAK,uBAAuB,GAAG,OAAO,sBAAsB,CAAC;AAU7D,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,wBAAsB,yBAAyB,CAAC,IAAI,EAAE;IACpD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC;IACtB,0BAA0B,CAAC,EAAE,uBAAuB,CAAC;CACtD,GAAG,OAAO,CAAC,eAAe,CAAC,CAyD3B;AAED,wBAAsB,8BAA8B,CAAC,IAAI,EAAE;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,WAAW,CAAC;CACvB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4B7B"}
@@ -1,135 +0,0 @@
1
- import { generateInfrastructure } from '@ankhorage/infra';
2
- import { promises as fs } from 'fs';
3
- import path from 'path';
4
- import { validateInfraSupport } from './infraValidation';
5
- const INFRA_LEDGER_REL_PATH = '.ankh/infra-ledger.json';
6
- const STUDIO_PROJECT_ID = 'studio';
7
- export async function syncProjectInfrastructure(args) {
8
- const { projectId, projectPath, manifest, generateInfrastructureImpl } = args;
9
- const supportWarnings = validateInfraSupport(manifest.infra);
10
- if (projectId === STUDIO_PROJECT_ID) {
11
- return {
12
- generated: 0,
13
- removed: 0,
14
- warnings: supportWarnings,
15
- skipped: {
16
- reason: 'apps/studio is the dashboard and is not a generated app target.',
17
- },
18
- };
19
- }
20
- const previousLedger = await readInfraLedger(projectPath);
21
- const previousFiles = new Set(previousLedger?.files ?? []);
22
- if (!manifest.infra.deployment) {
23
- const removed = await removeFiles(projectPath, previousFiles);
24
- await removeInfraLedger(projectPath);
25
- return { generated: 0, removed, warnings: supportWarnings };
26
- }
27
- const generated = (generateInfrastructureImpl ?? generateInfrastructure)(manifest.infra, {
28
- namespaceHint: projectId,
29
- appManifest: manifest,
30
- });
31
- const combinedWarnings = unique([...supportWarnings, ...generated.warnings]);
32
- const nextFiles = new Set();
33
- for (const file of generated.files) {
34
- const absPath = resolveProjectFile(projectPath, file.path);
35
- await fs.mkdir(path.dirname(absPath), { recursive: true });
36
- await fs.writeFile(absPath, file.content, 'utf8');
37
- if (file.executable) {
38
- await fs.chmod(absPath, 0o755);
39
- }
40
- nextFiles.add(file.path);
41
- }
42
- const staleFiles = new Set([...previousFiles].filter((f) => !nextFiles.has(f)));
43
- const removed = await removeFiles(projectPath, staleFiles);
44
- await writeInfraLedger(projectPath, {
45
- schemaVersion: 1,
46
- generatedAt: new Date().toISOString(),
47
- target: generated.meta.target,
48
- files: [...nextFiles].sort(),
49
- warnings: combinedWarnings,
50
- });
51
- return {
52
- generated: generated.files.length,
53
- removed,
54
- warnings: combinedWarnings,
55
- };
56
- }
57
- export async function getProjectInfrastructureStatus(args) {
58
- const { projectId, projectPath, manifest } = args;
59
- const supportWarnings = validateInfraSupport(manifest.infra);
60
- if (projectId === STUDIO_PROJECT_ID) {
61
- return {
62
- target: null,
63
- hasDeployment: false,
64
- hasLedger: false,
65
- trackedFiles: 0,
66
- generatedAt: null,
67
- warnings: supportWarnings,
68
- skipped: {
69
- reason: 'apps/studio is the dashboard and is not a generated app target.',
70
- },
71
- };
72
- }
73
- const ledger = await readInfraLedger(projectPath);
74
- return {
75
- target: manifest.infra.deployment?.target ?? ledger?.target ?? null,
76
- hasDeployment: manifest.infra.deployment !== undefined,
77
- hasLedger: ledger !== null,
78
- trackedFiles: ledger?.files.length ?? 0,
79
- generatedAt: ledger?.generatedAt ?? null,
80
- warnings: unique([...supportWarnings, ...(ledger?.warnings ?? [])]),
81
- };
82
- }
83
- function resolveProjectFile(projectPath, filePath) {
84
- const root = path.resolve(projectPath);
85
- const resolved = path.resolve(root, filePath);
86
- const relative = path.relative(root, resolved);
87
- if (relative.startsWith('..') || path.isAbsolute(relative)) {
88
- throw new Error(`Invalid infra output path outside project root: ${filePath}`);
89
- }
90
- return resolved;
91
- }
92
- async function readInfraLedger(projectPath) {
93
- const ledgerPath = path.join(projectPath, INFRA_LEDGER_REL_PATH);
94
- try {
95
- const raw = await fs.readFile(ledgerPath, 'utf8');
96
- const parsed = JSON.parse(raw);
97
- if (!isInfraLedger(parsed)) {
98
- return null;
99
- }
100
- return parsed;
101
- }
102
- catch {
103
- return null;
104
- }
105
- }
106
- async function writeInfraLedger(projectPath, ledger) {
107
- const ledgerPath = path.join(projectPath, INFRA_LEDGER_REL_PATH);
108
- await fs.mkdir(path.dirname(ledgerPath), { recursive: true });
109
- await fs.writeFile(ledgerPath, `${JSON.stringify(ledger, null, 2)}\n`, 'utf8');
110
- }
111
- async function removeInfraLedger(projectPath) {
112
- await fs.rm(path.join(projectPath, INFRA_LEDGER_REL_PATH), { force: true });
113
- }
114
- async function removeFiles(projectPath, files) {
115
- let removed = 0;
116
- for (const file of files) {
117
- await fs.rm(resolveProjectFile(projectPath, file), { force: true });
118
- removed += 1;
119
- }
120
- return removed;
121
- }
122
- function isInfraLedger(value) {
123
- return (typeof value === 'object' &&
124
- value !== null &&
125
- !Array.isArray(value) &&
126
- value.schemaVersion === 1 &&
127
- typeof value.generatedAt === 'string' &&
128
- typeof value.target === 'string' &&
129
- Array.isArray(value.files) &&
130
- Array.isArray(value.warnings));
131
- }
132
- function unique(values) {
133
- return [...new Set(values)];
134
- }
135
- //# sourceMappingURL=infraGenerator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"infraGenerator.js","sourceRoot":"","sources":["../../../src/host/orchestrator/infraGenerator.ts"],"names":[],"mappings":"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"}
@@ -1,46 +0,0 @@
1
- export type InfraLifecycleScript = 'up' | 'down' | 'reset' | 'destroy' | 'status' | 'port-forward';
2
- export interface InfraScriptOutput {
3
- stdout: string;
4
- stderr: string;
5
- }
6
- export declare class InfraScriptExecutionError extends Error {
7
- readonly stdout: string;
8
- readonly stderr: string;
9
- readonly exitCode: number | null;
10
- constructor(args: {
11
- message: string;
12
- stdout: string;
13
- stderr: string;
14
- exitCode: number | null;
15
- });
16
- }
17
- export declare function runProjectInfraScript(args: {
18
- rootPath: string;
19
- projectId: string;
20
- target: string;
21
- script: InfraLifecycleScript;
22
- env?: Record<string, string | undefined>;
23
- }): Promise<void>;
24
- export declare function runProjectInfraScriptCapture(args: {
25
- rootPath: string;
26
- projectId: string;
27
- target: string;
28
- script: InfraLifecycleScript;
29
- }): Promise<InfraScriptOutput>;
30
- export declare function ensureProjectInfraPortForward(args: {
31
- rootPath: string;
32
- projectId: string;
33
- target: string;
34
- }): Promise<{
35
- url: string;
36
- started: boolean;
37
- }>;
38
- export declare function registerProjectInfraPortForwardOwner(args: {
39
- rootPath: string;
40
- projectId: string;
41
- target: string;
42
- }): Promise<{
43
- url: string;
44
- }>;
45
- export declare function stopAllProjectInfraPortForwards(): Promise<void>;
46
- //# sourceMappingURL=infraRuntime.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"infraRuntime.d.ts","sourceRoot":"","sources":["../../../src/host/orchestrator/infraRuntime.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,oBAAoB,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,cAAc,CAAC;AAEnG,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAWD,qBAAa,yBAA0B,SAAQ,KAAK;IAClD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;gBAErB,IAAI,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE;CAO/F;AAcD,wBAAsB,qBAAqB,CAAC,IAAI,EAAE;IAChD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,oBAAoB,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C,iBAUA;AAED,wBAAsB,4BAA4B,CAAC,IAAI,EAAE;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,oBAAoB,CAAC;CAC9B,8BAUA;AAED,wBAAsB,6BAA6B,CAAC,IAAI,EAAE;IACxD,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA2B7C;AAED,wBAAsB,oCAAoC,CAAC,IAAI,EAAE;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CAa3B;AAED,wBAAsB,+BAA+B,kBAcpD"}