@ikas/component-cli 2.2.2 → 2.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 (117) hide show
  1. package/dist/commands/add-sections-to-page.d.ts +3 -0
  2. package/dist/commands/add-sections-to-page.d.ts.map +1 -0
  3. package/dist/commands/add-sections-to-page.js +39 -0
  4. package/dist/commands/add-sections-to-page.js.map +1 -0
  5. package/dist/commands/add-to-page.d.ts +3 -0
  6. package/dist/commands/add-to-page.d.ts.map +1 -0
  7. package/dist/commands/add-to-page.js +41 -0
  8. package/dist/commands/add-to-page.js.map +1 -0
  9. package/dist/commands/build.d.ts.map +1 -1
  10. package/dist/commands/build.js +5 -165
  11. package/dist/commands/build.js.map +1 -1
  12. package/dist/commands/create-design-tokens.d.ts +7 -0
  13. package/dist/commands/create-design-tokens.d.ts.map +1 -0
  14. package/dist/commands/create-design-tokens.js +127 -0
  15. package/dist/commands/create-design-tokens.js.map +1 -0
  16. package/dist/commands/create-global-variable.d.ts +3 -0
  17. package/dist/commands/create-global-variable.d.ts.map +1 -0
  18. package/dist/commands/create-global-variable.js +53 -0
  19. package/dist/commands/create-global-variable.js.map +1 -0
  20. package/dist/commands/create-page.d.ts +3 -0
  21. package/dist/commands/create-page.d.ts.map +1 -0
  22. package/dist/commands/create-page.js +31 -0
  23. package/dist/commands/create-page.js.map +1 -0
  24. package/dist/commands/delete-theme-globals.d.ts +4 -0
  25. package/dist/commands/delete-theme-globals.d.ts.map +1 -0
  26. package/dist/commands/delete-theme-globals.js +48 -0
  27. package/dist/commands/delete-theme-globals.js.map +1 -0
  28. package/dist/commands/get-component-props.d.ts +3 -0
  29. package/dist/commands/get-component-props.d.ts.map +1 -0
  30. package/dist/commands/get-component-props.js +32 -0
  31. package/dist/commands/get-component-props.js.map +1 -0
  32. package/dist/commands/get-page-by-type.d.ts +3 -0
  33. package/dist/commands/get-page-by-type.d.ts.map +1 -0
  34. package/dist/commands/get-page-by-type.js +25 -0
  35. package/dist/commands/get-page-by-type.js.map +1 -0
  36. package/dist/commands/get-section-values.d.ts +3 -0
  37. package/dist/commands/get-section-values.d.ts.map +1 -0
  38. package/dist/commands/get-section-values.js +39 -0
  39. package/dist/commands/get-section-values.js.map +1 -0
  40. package/dist/commands/import.d.ts +3 -0
  41. package/dist/commands/import.d.ts.map +1 -0
  42. package/dist/commands/import.js +25 -0
  43. package/dist/commands/import.js.map +1 -0
  44. package/dist/commands/list-entities.d.ts +3 -0
  45. package/dist/commands/list-entities.d.ts.map +1 -0
  46. package/dist/commands/list-entities.js +32 -0
  47. package/dist/commands/list-entities.js.map +1 -0
  48. package/dist/commands/list-imported.d.ts +3 -0
  49. package/dist/commands/list-imported.d.ts.map +1 -0
  50. package/dist/commands/list-imported.js +25 -0
  51. package/dist/commands/list-imported.js.map +1 -0
  52. package/dist/commands/list-page-sections.d.ts +3 -0
  53. package/dist/commands/list-page-sections.d.ts.map +1 -0
  54. package/dist/commands/list-page-sections.js +25 -0
  55. package/dist/commands/list-page-sections.js.map +1 -0
  56. package/dist/commands/list-pages.d.ts +3 -0
  57. package/dist/commands/list-pages.d.ts.map +1 -0
  58. package/dist/commands/list-pages.js +21 -0
  59. package/dist/commands/list-pages.js.map +1 -0
  60. package/dist/commands/list-theme-globals.d.ts +3 -0
  61. package/dist/commands/list-theme-globals.d.ts.map +1 -0
  62. package/dist/commands/list-theme-globals.js +22 -0
  63. package/dist/commands/list-theme-globals.js.map +1 -0
  64. package/dist/commands/publish-theme.d.ts +3 -0
  65. package/dist/commands/publish-theme.d.ts.map +1 -0
  66. package/dist/commands/publish-theme.js +29 -0
  67. package/dist/commands/publish-theme.js.map +1 -0
  68. package/dist/commands/search-products.d.ts +3 -0
  69. package/dist/commands/search-products.d.ts.map +1 -0
  70. package/dist/commands/search-products.js +40 -0
  71. package/dist/commands/search-products.js.map +1 -0
  72. package/dist/commands/update-global-variable.d.ts +3 -0
  73. package/dist/commands/update-global-variable.d.ts.map +1 -0
  74. package/dist/commands/update-global-variable.js +47 -0
  75. package/dist/commands/update-global-variable.js.map +1 -0
  76. package/dist/commands/update-page-sections.d.ts +3 -0
  77. package/dist/commands/update-page-sections.d.ts.map +1 -0
  78. package/dist/commands/update-page-sections.js +39 -0
  79. package/dist/commands/update-page-sections.js.map +1 -0
  80. package/dist/commands/update-section-prop.d.ts +3 -0
  81. package/dist/commands/update-section-prop.d.ts.map +1 -0
  82. package/dist/commands/update-section-prop.js +59 -0
  83. package/dist/commands/update-section-prop.js.map +1 -0
  84. package/dist/commands/upload-image.d.ts +3 -0
  85. package/dist/commands/upload-image.d.ts.map +1 -0
  86. package/dist/commands/upload-image.js +38 -0
  87. package/dist/commands/upload-image.js.map +1 -0
  88. package/dist/commands/upload-images.d.ts +3 -0
  89. package/dist/commands/upload-images.d.ts.map +1 -0
  90. package/dist/commands/upload-images.js +48 -0
  91. package/dist/commands/upload-images.js.map +1 -0
  92. package/dist/index.d.ts.map +1 -1
  93. package/dist/index.js +34 -0
  94. package/dist/index.js.map +1 -1
  95. package/dist/types.d.ts +1 -1
  96. package/dist/types.d.ts.map +1 -1
  97. package/dist/utils/compile.d.ts +4 -1
  98. package/dist/utils/compile.d.ts.map +1 -1
  99. package/dist/utils/compile.js +517 -48
  100. package/dist/utils/compile.js.map +1 -1
  101. package/dist/utils/component-helpers.d.ts +1 -1
  102. package/dist/utils/component-helpers.d.ts.map +1 -1
  103. package/dist/utils/component-helpers.js +4 -0
  104. package/dist/utils/component-helpers.js.map +1 -1
  105. package/dist/utils/editor-action-client.d.ts +28 -0
  106. package/dist/utils/editor-action-client.d.ts.map +1 -0
  107. package/dist/utils/editor-action-client.js +116 -0
  108. package/dist/utils/editor-action-client.js.map +1 -0
  109. package/dist/utils/load-image.d.ts +16 -0
  110. package/dist/utils/load-image.d.ts.map +1 -0
  111. package/dist/utils/load-image.js +50 -0
  112. package/dist/utils/load-image.js.map +1 -0
  113. package/dist/utils/websocket-server.d.ts +29 -0
  114. package/dist/utils/websocket-server.d.ts.map +1 -1
  115. package/dist/utils/websocket-server.js +58 -0
  116. package/dist/utils/websocket-server.js.map +1 -1
  117. package/package.json +1 -1
@@ -0,0 +1,48 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction } from "../utils/editor-action-client.js";
3
+ const TOKEN_TYPES = ["color", "typography", "breakpoint", "keyframe", "colorScheme"];
4
+ function portOpts(port) {
5
+ const p = port ? parseInt(port, 10) : undefined;
6
+ return p ? { port: p } : {};
7
+ }
8
+ export function createDeleteGlobalVariableCommand() {
9
+ const cmd = new Command("delete-global-variable");
10
+ cmd
11
+ .description("Delete a global variable from the connected editor")
12
+ .requiredOption("--name <key>", "The variable's runtime key (from `list-theme-globals`)")
13
+ .option("--port <port>", "Dev server WebSocket port", "5201")
14
+ .action(async (options) => {
15
+ if (!options.name)
16
+ printErrorAndExit(new Error("--name is required"));
17
+ try {
18
+ printResultAndExit(await runEditorAction("delete-global-variable", { name: options.name }, portOpts(options.port)));
19
+ }
20
+ catch (e) {
21
+ printErrorAndExit(e);
22
+ }
23
+ });
24
+ return cmd;
25
+ }
26
+ export function createDeleteDesignTokenCommand() {
27
+ const cmd = new Command("delete-design-token");
28
+ cmd
29
+ .description("Delete a design token (color, typography, breakpoint, keyframe, or color scheme) from the connected editor")
30
+ .requiredOption("--token-type <type>", TOKEN_TYPES.join(" | "))
31
+ .requiredOption("--id <id>", "The token id (from `list-theme-globals`)")
32
+ .option("--port <port>", "Dev server WebSocket port", "5201")
33
+ .action(async (options) => {
34
+ if (!options.tokenType || !TOKEN_TYPES.includes(options.tokenType)) {
35
+ printErrorAndExit(new Error(`--token-type must be one of: ${TOKEN_TYPES.join(", ")}`));
36
+ }
37
+ if (!options.id)
38
+ printErrorAndExit(new Error("--id is required"));
39
+ try {
40
+ printResultAndExit(await runEditorAction("delete-design-token", { tokenType: options.tokenType, id: options.id }, portOpts(options.port)));
41
+ }
42
+ catch (e) {
43
+ printErrorAndExit(e);
44
+ }
45
+ });
46
+ return cmd;
47
+ }
48
+ //# sourceMappingURL=delete-theme-globals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"delete-theme-globals.js","sourceRoot":"","sources":["../../src/commands/delete-theme-globals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAE1G,MAAM,WAAW,GAAG,CAAC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAErF,SAAS,QAAQ,CAAC,IAAa;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChD,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,iCAAiC;IAC/C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAClD,GAAG;SACA,WAAW,CAAC,oDAAoD,CAAC;SACjE,cAAc,CAAC,cAAc,EAAE,wDAAwD,CAAC;SACxF,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,KAAK,EAAE,OAAyC,EAAE,EAAE;QAC1D,IAAI,CAAC,OAAO,CAAC,IAAI;YAAE,iBAAiB,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC;YACH,kBAAkB,CAAC,MAAM,eAAe,CAAC,wBAAwB,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IACL,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,8BAA8B;IAC5C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/C,GAAG;SACA,WAAW,CAAC,4GAA4G,CAAC;SACzH,cAAc,CAAC,qBAAqB,EAAE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC9D,cAAc,CAAC,WAAW,EAAE,0CAA0C,CAAC;SACvE,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,KAAK,EAAE,OAA2D,EAAE,EAAE;QAC5E,IAAI,CAAC,OAAO,CAAC,SAAS,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YACnE,iBAAiB,CAAC,IAAI,KAAK,CAAC,gCAAgC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QACzF,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,EAAE;YAAE,iBAAiB,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC;YACH,kBAAkB,CAChB,MAAM,eAAe,CACnB,qBAAqB,EACrB,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,EAChD,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CACvB,CACF,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,CAAC,CAAC;IACL,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createGetComponentPropsCommand(): Command;
3
+ //# sourceMappingURL=get-component-props.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-component-props.d.ts","sourceRoot":"","sources":["../../src/commands/get-component-props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoCpC,wBAAgB,8BAA8B,IAAI,OAAO,CAWxD"}
@@ -0,0 +1,32 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction, } from "../utils/editor-action-client.js";
3
+ async function runGetComponentProps(options) {
4
+ const componentIds = options.componentIds
5
+ ? options.componentIds
6
+ .split(",")
7
+ .map(s => s.trim())
8
+ .filter(Boolean)
9
+ : undefined;
10
+ if (!componentIds?.length && !options.componentId) {
11
+ printErrorAndExit(new Error("--component-id or --component-ids is required"));
12
+ }
13
+ const port = options.port ? parseInt(options.port, 10) : undefined;
14
+ try {
15
+ const result = await runEditorAction("get-component-props", componentIds?.length ? { componentIds } : { componentId: options.componentId }, port ? { port } : {});
16
+ printResultAndExit(result);
17
+ }
18
+ catch (e) {
19
+ printErrorAndExit(e);
20
+ }
21
+ }
22
+ export function createGetComponentPropsCommand() {
23
+ const cmd = new Command("get-component-props");
24
+ cmd
25
+ .description("Get prop blueprints from the editor (the source of truth) for one or many components: each prop's id, name, type, required, default, ENUM `options` (valid values), and for COMPONENT/COMPONENT_LIST the `allowedComponentIds` (which children it permits). Works for any section OR child code component id — use it to learn a COMPONENT_LIST child's props and valid enum values instead of grepping ikas.config.json. Returns { components: [...] }.")
26
+ .option("--component-id <id>", "A single code component id (section or child) — or a section id")
27
+ .option("--component-ids <ids>", "Comma-separated component ids (batch — resolve many schemas in one call)")
28
+ .option("--port <port>", "Dev server WebSocket port", "5201")
29
+ .action(runGetComponentProps);
30
+ return cmd;
31
+ }
32
+ //# sourceMappingURL=get-component-props.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-component-props.js","sourceRoot":"","sources":["../../src/commands/get-component-props.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAQ1C,KAAK,UAAU,oBAAoB,CAAC,OAAiC;IACnE,MAAM,YAAY,GAAG,OAAO,CAAC,YAAY;QACvC,CAAC,CAAC,OAAO,CAAC,YAAY;aACjB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAClB,MAAM,CAAC,OAAO,CAAC;QACpB,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,CAAC,YAAY,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAClD,iBAAiB,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,qBAAqB,EACrB,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,EAC9E,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CACrB,CAAC;QACF,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,8BAA8B;IAC5C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC/C,GAAG;SACA,WAAW,CACV,0bAA0b,CAC3b;SACA,MAAM,CAAC,qBAAqB,EAAE,iEAAiE,CAAC;SAChG,MAAM,CAAC,uBAAuB,EAAE,0EAA0E,CAAC;SAC3G,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAChC,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createGetPageByTypeCommand(): Command;
3
+ //# sourceMappingURL=get-page-by-type.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-page-by-type.d.ts","sourceRoot":"","sources":["../../src/commands/get-page-by-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BpC,wBAAgB,0BAA0B,IAAI,OAAO,CAUpD"}
@@ -0,0 +1,25 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction, } from "../utils/editor-action-client.js";
3
+ async function runGetPageByType(options) {
4
+ if (!options.pageType || typeof options.pageType !== "string") {
5
+ printErrorAndExit(new Error("--page-type is required (e.g. CATEGORY, PRODUCT, BRAND, BLOG, BLOG_CATEGORY, INDEX)"));
6
+ }
7
+ const port = options.port ? parseInt(options.port, 10) : undefined;
8
+ try {
9
+ const result = await runEditorAction("get-page-by-type", { pageType: options.pageType }, port ? { port } : {});
10
+ printResultAndExit(result);
11
+ }
12
+ catch (e) {
13
+ printErrorAndExit(e);
14
+ }
15
+ }
16
+ export function createGetPageByTypeCommand() {
17
+ const cmd = new Command("get-page-by-type");
18
+ cmd
19
+ .description("Resolve a theme page id from its pageType (CATEGORY, PRODUCT, BRAND, BLOG, BLOG_CATEGORY, INDEX, …). Use the returned pageId together with an entity id (from list-entities) to build a PAGE link to that entity. Returns pageId: null with a note if no page of that type exists yet.")
20
+ .requiredOption("--page-type <type>", "Page type to resolve (e.g. CATEGORY)")
21
+ .option("--port <port>", "Dev server WebSocket port", "5201")
22
+ .action(runGetPageByType);
23
+ return cmd;
24
+ }
25
+ //# sourceMappingURL=get-page-by-type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-page-by-type.js","sourceRoot":"","sources":["../../src/commands/get-page-by-type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAO1C,KAAK,UAAU,gBAAgB,CAAC,OAA6B;IAC3D,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC9D,iBAAiB,CAAC,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC,CAAC;IACtH,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,kBAAkB,EAClB,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAC9B,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CACrB,CAAC;QACF,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5C,GAAG;SACA,WAAW,CACV,wRAAwR,CACzR;SACA,cAAc,CAAC,oBAAoB,EAAE,sCAAsC,CAAC;SAC5E,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC5B,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createGetSectionValuesCommand(): Command;
3
+ //# sourceMappingURL=get-section-values.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-section-values.d.ts","sourceRoot":"","sources":["../../src/commands/get-section-values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2CpC,wBAAgB,6BAA6B,IAAI,OAAO,CAYvD"}
@@ -0,0 +1,39 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction, } from "../utils/editor-action-client.js";
3
+ async function runGetSectionValues(options) {
4
+ if (!options.pageId || typeof options.pageId !== "string") {
5
+ printErrorAndExit(new Error("--page-id is required (use `ikas-component list-pages`)"));
6
+ }
7
+ const elementIds = options.elementIds
8
+ ? options.elementIds
9
+ .split(",")
10
+ .map(s => s.trim())
11
+ .filter(Boolean)
12
+ : undefined;
13
+ if (!elementIds?.length && !options.elementId) {
14
+ printErrorAndExit(new Error("--element-id or --element-ids is required (use `ikas-component list-page-sections`)"));
15
+ }
16
+ const port = options.port ? parseInt(options.port, 10) : undefined;
17
+ try {
18
+ const result = await runEditorAction("get-section-values", {
19
+ pageId: options.pageId,
20
+ ...(elementIds?.length ? { elementIds } : { elementId: options.elementId }),
21
+ }, port ? { port } : {});
22
+ printResultAndExit(result);
23
+ }
24
+ catch (e) {
25
+ printErrorAndExit(e);
26
+ }
27
+ }
28
+ export function createGetSectionValuesCommand() {
29
+ const cmd = new Command("get-section-values");
30
+ cmd
31
+ .description("Get the current prop values of placed section(s) (full propValues + blueprint props). Use for read-modify-write of a COMPONENT_LIST or to inspect an existing value's shape. `list-page-sections` is lean and omits values; this fetches them. Returns { sections: [...] }.")
32
+ .requiredOption("--page-id <id>", "Page id (from `ikas-component list-pages`)")
33
+ .option("--element-id <id>", "A single placed-section elementId (from `ikas-component list-page-sections`)")
34
+ .option("--element-ids <ids>", "Comma-separated elementIds (batch)")
35
+ .option("--port <port>", "Dev server WebSocket port", "5201")
36
+ .action(runGetSectionValues);
37
+ return cmd;
38
+ }
39
+ //# sourceMappingURL=get-section-values.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-section-values.js","sourceRoot":"","sources":["../../src/commands/get-section-values.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAS1C,KAAK,UAAU,mBAAmB,CAAC,OAAgC;IACjE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1D,iBAAiB,CAAC,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC,CAAC;IAC1F,CAAC;IACD,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU;QACnC,CAAC,CAAC,OAAO,CAAC,UAAU;aACf,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAClB,MAAM,CAAC,OAAO,CAAC;QACpB,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,CAAC,UAAU,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QAC9C,iBAAiB,CAAC,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC,CAAC;IACtH,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,oBAAoB,EACpB;YACE,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;SAC5E,EACD,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CACrB,CAAC;QACF,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC9C,GAAG;SACA,WAAW,CACV,6QAA6Q,CAC9Q;SACA,cAAc,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;SAC9E,MAAM,CAAC,mBAAmB,EAAE,8EAA8E,CAAC;SAC3G,MAAM,CAAC,qBAAqB,EAAE,oCAAoC,CAAC;SACnE,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createImportCommand(): Command;
3
+ //# sourceMappingURL=import.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.d.ts","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BpC,wBAAgB,mBAAmB,IAAI,OAAO,CAU7C"}
@@ -0,0 +1,25 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction, } from "../utils/editor-action-client.js";
3
+ async function runImport(options) {
4
+ if (!options.id || typeof options.id !== "string") {
5
+ printErrorAndExit(new Error("--id <componentId> is required (use the component id from ikas.config.json)"));
6
+ }
7
+ const port = options.port ? parseInt(options.port, 10) : undefined;
8
+ try {
9
+ const result = await runEditorAction("import-component", { componentId: options.id }, port ? { port } : {});
10
+ printResultAndExit(result);
11
+ }
12
+ catch (e) {
13
+ printErrorAndExit(e);
14
+ }
15
+ }
16
+ export function createImportCommand() {
17
+ const cmd = new Command("import");
18
+ cmd
19
+ .description("Import a built dev component into the editor's project (theme.codeComponents). Idempotent: re-running updates the existing entry. For section-type components, the wrapper section is auto-created.")
20
+ .requiredOption("--id <componentId>", "Component id (from ikas.config.json). Strict — no name resolution.")
21
+ .option("--port <port>", "Dev server WebSocket port", "5201")
22
+ .action(runImport);
23
+ return cmd;
24
+ }
25
+ //# sourceMappingURL=import.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/commands/import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAO1C,KAAK,UAAU,SAAS,CAAC,OAAsB;IAC7C,IAAI,CAAC,OAAO,CAAC,EAAE,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;QAClD,iBAAiB,CAAC,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC,CAAC;IAC9G,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,kBAAkB,EAClB,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE,EAC3B,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CACrB,CAAC;QACF,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClC,GAAG;SACA,WAAW,CACV,qMAAqM,CACtM;SACA,cAAc,CAAC,oBAAoB,EAAE,oEAAoE,CAAC;SAC1G,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,SAAS,CAAC,CAAC;IACrB,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createListEntitiesCommand(): Command;
3
+ //# sourceMappingURL=list-entities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-entities.d.ts","sourceRoot":"","sources":["../../src/commands/list-entities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoCpC,wBAAgB,yBAAyB,IAAI,OAAO,CAWnD"}
@@ -0,0 +1,32 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction, } from "../utils/editor-action-client.js";
3
+ const VALID_KINDS = ["category", "brand", "blog", "blog-category"];
4
+ async function runListEntities(options) {
5
+ if (!options.kind || !VALID_KINDS.includes(options.kind)) {
6
+ printErrorAndExit(new Error(`--kind must be one of: ${VALID_KINDS.join(", ")}`));
7
+ }
8
+ const port = options.port ? parseInt(options.port, 10) : undefined;
9
+ try {
10
+ const result = await runEditorAction("list-entities", {
11
+ kind: options.kind,
12
+ ...(options.query ? { query: options.query } : {}),
13
+ },
14
+ // The host fetches from the store API, so allow more than the default 10s.
15
+ { ...(port ? { port } : {}), timeoutMs: 20_000 });
16
+ printResultAndExit(result);
17
+ }
18
+ catch (e) {
19
+ printErrorAndExit(e);
20
+ }
21
+ }
22
+ export function createListEntitiesCommand() {
23
+ const cmd = new Command("list-entities");
24
+ cmd
25
+ .description("List store entities (category, brand, blog, blog-category) and their ids, for filling the corresponding entity prop value via `ikas-component update-section-prop`. Requires the editor embedded in the ikas admin panel (the host runs the lookup). Note: category and brand return all entries (no query); blog and blog-category accept --query.")
26
+ .requiredOption("--kind <kind>", `Entity kind: ${VALID_KINDS.join(" | ")}`)
27
+ .option("--query <text>", "Free-text search (blog / blog-category only)")
28
+ .option("--port <port>", "Dev server WebSocket port", "5201")
29
+ .action(runListEntities);
30
+ return cmd;
31
+ }
32
+ //# sourceMappingURL=list-entities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-entities.js","sourceRoot":"","sources":["../../src/commands/list-entities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,WAAW,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC;AAQnE,KAAK,UAAU,eAAe,CAAC,OAA4B;IACzD,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACzD,iBAAiB,CAAC,IAAI,KAAK,CAAC,0BAA0B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,eAAe,EACf;YACE,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnD;QACD,2EAA2E;QAC3E,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CACjD,CAAC;QACF,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IACzC,GAAG;SACA,WAAW,CACV,qVAAqV,CACtV;SACA,cAAc,CAAC,eAAe,EAAE,gBAAgB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;SAC1E,MAAM,CAAC,gBAAgB,EAAE,8CAA8C,CAAC;SACxE,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,eAAe,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createListImportedCommand(): Command;
3
+ //# sourceMappingURL=list-imported.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-imported.d.ts","sourceRoot":"","sources":["../../src/commands/list-imported.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+BpC,wBAAgB,yBAAyB,IAAI,OAAO,CAUnD"}
@@ -0,0 +1,25 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction, } from "../utils/editor-action-client.js";
3
+ async function runListImported(options) {
4
+ const port = options.port ? parseInt(options.port, 10) : undefined;
5
+ try {
6
+ const result = await runEditorAction("list-imported-components", {}, port ? { port } : {});
7
+ if (result.success && options.sectionsOnly && Array.isArray(result.payload?.components)) {
8
+ result.payload.components = result.payload.components.filter((c) => c.type === "section");
9
+ }
10
+ printResultAndExit(result);
11
+ }
12
+ catch (e) {
13
+ printErrorAndExit(e);
14
+ }
15
+ }
16
+ export function createListImportedCommand() {
17
+ const cmd = new Command("list-imported");
18
+ cmd
19
+ .description("List code components already imported into the editor's project (theme.codeComponents)")
20
+ .option("--port <port>", "Dev server WebSocket port", "5201")
21
+ .option("--sections-only", "Only include section-type components")
22
+ .action(runListImported);
23
+ return cmd;
24
+ }
25
+ //# sourceMappingURL=list-imported.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-imported.js","sourceRoot":"","sources":["../../src/commands/list-imported.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAO1C,KAAK,UAAU,eAAe,CAAC,OAA4B;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,0BAA0B,EAC1B,EAAE,EACF,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CACrB,CAAC;QACF,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,CAAC,YAAY,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,CAAC;YACxF,MAAM,CAAC,OAAO,CAAC,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAC1D,CAAC,CAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAC/C,CAAC;QACJ,CAAC;QACD,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IACzC,GAAG;SACA,WAAW,CACV,wFAAwF,CACzF;SACA,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,iBAAiB,EAAE,sCAAsC,CAAC;SACjE,MAAM,CAAC,eAAe,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createListPageSectionsCommand(): Command;
3
+ //# sourceMappingURL=list-page-sections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-page-sections.d.ts","sourceRoot":"","sources":["../../src/commands/list-page-sections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6BpC,wBAAgB,6BAA6B,IAAI,OAAO,CAUvD"}
@@ -0,0 +1,25 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction, } from "../utils/editor-action-client.js";
3
+ async function runListPageSections(options) {
4
+ if (!options.pageId || typeof options.pageId !== "string") {
5
+ printErrorAndExit(new Error("--page-id is required (use `ikas-component list-pages` to discover ids)"));
6
+ }
7
+ const port = options.port ? parseInt(options.port, 10) : undefined;
8
+ try {
9
+ const result = await runEditorAction("list-page-sections", { pageId: options.pageId }, port ? { port } : {});
10
+ printResultAndExit(result);
11
+ }
12
+ catch (e) {
13
+ printErrorAndExit(e);
14
+ }
15
+ }
16
+ export function createListPageSectionsCommand() {
17
+ const cmd = new Command("list-page-sections");
18
+ cmd
19
+ .description("List the sections placed on a page, each with its per-placement elementId, sectionId, current prop values, and blueprint props. Use the elementId with `ikas-component update-section-prop`.")
20
+ .requiredOption("--page-id <id>", "Page id (from `ikas-component list-pages`)")
21
+ .option("--port <port>", "Dev server WebSocket port", "5201")
22
+ .action(runListPageSections);
23
+ return cmd;
24
+ }
25
+ //# sourceMappingURL=list-page-sections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-page-sections.js","sourceRoot":"","sources":["../../src/commands/list-page-sections.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAO1C,KAAK,UAAU,mBAAmB,CAAC,OAAgC;IACjE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1D,iBAAiB,CAAC,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC,CAAC;IAC1G,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,oBAAoB,EACpB,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,EAC1B,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CACrB,CAAC;QACF,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC9C,GAAG;SACA,WAAW,CACV,8LAA8L,CAC/L;SACA,cAAc,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;SAC9E,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createListPagesCommand(): Command;
3
+ //# sourceMappingURL=list-pages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-pages.d.ts","sourceRoot":"","sources":["../../src/commands/list-pages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqBpC,wBAAgB,sBAAsB,IAAI,OAAO,CAShD"}
@@ -0,0 +1,21 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction, } from "../utils/editor-action-client.js";
3
+ async function runListPages(options) {
4
+ const port = options.port ? parseInt(options.port, 10) : undefined;
5
+ try {
6
+ const result = await runEditorAction("list-pages", {}, port ? { port } : {});
7
+ printResultAndExit(result);
8
+ }
9
+ catch (e) {
10
+ printErrorAndExit(e);
11
+ }
12
+ }
13
+ export function createListPagesCommand() {
14
+ const cmd = new Command("list-pages");
15
+ cmd
16
+ .description("List the pages in the editor's project (requires a running dev server with the editor connected)")
17
+ .option("--port <port>", "Dev server WebSocket port", "5201")
18
+ .action(runListPages);
19
+ return cmd;
20
+ }
21
+ //# sourceMappingURL=list-pages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-pages.js","sourceRoot":"","sources":["../../src/commands/list-pages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAM1C,KAAK,UAAU,YAAY,CAAC,OAAyB;IACnD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,YAAY,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7E,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,YAAY,CAAC,CAAC;IACtC,GAAG;SACA,WAAW,CACV,kGAAkG,CACnG;SACA,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,YAAY,CAAC,CAAC;IACxB,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createListThemeGlobalsCommand(): Command;
3
+ //# sourceMappingURL=list-theme-globals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-theme-globals.d.ts","sourceRoot":"","sources":["../../src/commands/list-theme-globals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAkBpC,wBAAgB,6BAA6B,IAAI,OAAO,CAUvD"}
@@ -0,0 +1,22 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction } from "../utils/editor-action-client.js";
3
+ async function runListThemeGlobals(options) {
4
+ const port = options.port ? parseInt(options.port, 10) : undefined;
5
+ try {
6
+ const result = await runEditorAction("list-theme-globals", {}, port ? { port } : {});
7
+ printResultAndExit(result);
8
+ }
9
+ catch (e) {
10
+ printErrorAndExit(e);
11
+ }
12
+ }
13
+ export function createListThemeGlobalsCommand() {
14
+ const cmd = new Command("list-theme-globals");
15
+ cmd
16
+ .description("List the theme's global settings — global variables and design tokens (colors, typography, " +
17
+ "breakpoints, keyframes, color schemes). Requires a running dev server with the editor connected.")
18
+ .option("--port <port>", "Dev server WebSocket port", "5201")
19
+ .action(runListThemeGlobals);
20
+ return cmd;
21
+ }
22
+ //# sourceMappingURL=list-theme-globals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-theme-globals.js","sourceRoot":"","sources":["../../src/commands/list-theme-globals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAM1G,KAAK,UAAU,mBAAmB,CAAC,OAAgC;IACjE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,oBAAoB,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QACrF,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,6BAA6B;IAC3C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAC9C,GAAG;SACA,WAAW,CACV,6FAA6F;QAC3F,kGAAkG,CACrG;SACA,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/B,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createPublishThemeCommand(): Command;
3
+ //# sourceMappingURL=publish-theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-theme.d.ts","sourceRoot":"","sources":["../../src/commands/publish-theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgCpC,wBAAgB,yBAAyB,IAAI,OAAO,CAWnD"}
@@ -0,0 +1,29 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction, } from "../utils/editor-action-client.js";
3
+ async function runPublishTheme(options) {
4
+ const port = options.port ? parseInt(options.port, 10) : undefined;
5
+ try {
6
+ const result = await runEditorAction("publish-theme", {
7
+ confirm: !!options.confirm,
8
+ confirmProduction: !!options.confirmProduction,
9
+ },
10
+ // Publishing optimizes images + uploads the whole project to the host, so
11
+ // give it more headroom than the default action timeout.
12
+ { ...(port ? { port } : {}), timeoutMs: 120_000 });
13
+ printResultAndExit(result);
14
+ }
15
+ catch (e) {
16
+ printErrorAndExit(e);
17
+ }
18
+ }
19
+ export function createPublishThemeCommand() {
20
+ const cmd = new Command("publish-theme");
21
+ cmd
22
+ .description("Publish the current theme LIVE (same as the editor's Publish button — saves the whole project to the storefront). This is a real, customer-facing publish: it does nothing unless you pass --confirm, and the MAIN/production theme additionally requires --confirm-production. Without the flags it returns a dry-run describing what would happen and the previewUrl. On success returns { published: true, previewUrl, isMainTheme }.")
23
+ .option("--confirm", "Actually publish (required). Without it, returns a dry-run.")
24
+ .option("--confirm-production", "Required IN ADDITION to --confirm when publishing the MAIN/production theme (live customer-facing site).")
25
+ .option("--port <port>", "Dev server WebSocket port", "5201")
26
+ .action(runPublishTheme);
27
+ return cmd;
28
+ }
29
+ //# sourceMappingURL=publish-theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publish-theme.js","sourceRoot":"","sources":["../../src/commands/publish-theme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAQ1C,KAAK,UAAU,eAAe,CAAC,OAA4B;IACzD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,eAAe,EACf;YACE,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO;YAC1B,iBAAiB,EAAE,CAAC,CAAC,OAAO,CAAC,iBAAiB;SAC/C;QACD,0EAA0E;QAC1E,yDAAyD;QACzD,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAClD,CAAC;QACF,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,yBAAyB;IACvC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,eAAe,CAAC,CAAC;IACzC,GAAG;SACA,WAAW,CACV,0aAA0a,CAC3a;SACA,MAAM,CAAC,WAAW,EAAE,6DAA6D,CAAC;SAClF,MAAM,CAAC,sBAAsB,EAAE,0GAA0G,CAAC;SAC1I,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,eAAe,CAAC,CAAC;IAC3B,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createSearchProductsCommand(): Command;
3
+ //# sourceMappingURL=search-products.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-products.d.ts","sourceRoot":"","sources":["../../src/commands/search-products.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2CpC,wBAAgB,2BAA2B,IAAI,OAAO,CAarD"}
@@ -0,0 +1,40 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction, } from "../utils/editor-action-client.js";
3
+ async function runSearchProducts(options) {
4
+ const port = options.port ? parseInt(options.port, 10) : undefined;
5
+ const productIds = options.ids
6
+ ? options.ids
7
+ .split(",")
8
+ .map(s => s.trim())
9
+ .filter(Boolean)
10
+ : undefined;
11
+ const perPage = options.perPage ? parseInt(options.perPage, 10) : undefined;
12
+ const page = options.page ? parseInt(options.page, 10) : undefined;
13
+ try {
14
+ const result = await runEditorAction("search-products", {
15
+ ...(options.query ? { query: options.query } : {}),
16
+ ...(productIds && productIds.length ? { productIds } : {}),
17
+ ...(typeof perPage === "number" && !Number.isNaN(perPage) ? { perPage } : {}),
18
+ ...(typeof page === "number" && !Number.isNaN(page) ? { page } : {}),
19
+ },
20
+ // The host fetches from the store API, so allow more than the default 10s.
21
+ { ...(port ? { port } : {}), timeoutMs: 20_000 });
22
+ printResultAndExit(result);
23
+ }
24
+ catch (e) {
25
+ printErrorAndExit(e);
26
+ }
27
+ }
28
+ export function createSearchProductsCommand() {
29
+ const cmd = new Command("search-products");
30
+ cmd
31
+ .description("Search the connected store's products and return each product's id (productId) + first variantId, name, slug, and variant count. Use the productId/variantId to fill a PRODUCT prop value via `ikas-component update-section-prop`. Requires the editor embedded in the ikas admin panel (the host runs the search).")
32
+ .option("--query <text>", "Free-text search query (name, sku, barcode)")
33
+ .option("--ids <ids>", "Comma-separated product ids to look up directly")
34
+ .option("--per-page <n>", "Results per page")
35
+ .option("--page <n>", "Page number")
36
+ .option("--port <port>", "Dev server WebSocket port", "5201")
37
+ .action(runSearchProducts);
38
+ return cmd;
39
+ }
40
+ //# sourceMappingURL=search-products.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-products.js","sourceRoot":"","sources":["../../src/commands/search-products.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,GAChB,MAAM,kCAAkC,CAAC;AAU1C,KAAK,UAAU,iBAAiB,CAAC,OAA8B;IAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG;QAC5B,CAAC,CAAC,OAAO,CAAC,GAAG;aACR,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aAClB,MAAM,CAAC,OAAO,CAAC;QACpB,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,iBAAiB,EACjB;YACE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,UAAU,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,GAAG,CAAC,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,GAAG,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACrE;QACD,2EAA2E;QAC3E,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,CACjD,CAAC;QACF,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,2BAA2B;IACzC,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3C,GAAG;SACA,WAAW,CACV,sTAAsT,CACvT;SACA,MAAM,CAAC,gBAAgB,EAAE,6CAA6C,CAAC;SACvE,MAAM,CAAC,aAAa,EAAE,iDAAiD,CAAC;SACxE,MAAM,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;SAC5C,MAAM,CAAC,YAAY,EAAE,aAAa,CAAC;SACnC,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,iBAAiB,CAAC,CAAC;IAC7B,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare function createUpdateGlobalVariableCommand(): Command;
3
+ //# sourceMappingURL=update-global-variable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-global-variable.d.ts","sourceRoot":"","sources":["../../src/commands/update-global-variable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiDpC,wBAAgB,iCAAiC,IAAI,OAAO,CAW3D"}
@@ -0,0 +1,47 @@
1
+ import { Command } from "commander";
2
+ import { printErrorAndExit, printResultAndExit, runEditorAction } from "../utils/editor-action-client.js";
3
+ const VALID_TYPES = ["TEXT", "RICH_TEXT", "IMAGE", "COLOR", "NUMBER", "BOOLEAN", "BORDER", "SHADOW"];
4
+ function parseValue(raw) {
5
+ if (raw == null)
6
+ return undefined;
7
+ try {
8
+ return JSON.parse(raw);
9
+ }
10
+ catch {
11
+ return raw;
12
+ }
13
+ }
14
+ async function runUpdateGlobalVariable(options) {
15
+ if (!options.name) {
16
+ printErrorAndExit(new Error("--name is required (the variable's runtime key, from list-theme-globals)"));
17
+ }
18
+ if (options.type && !VALID_TYPES.includes(options.type)) {
19
+ printErrorAndExit(new Error(`--type must be one of: ${VALID_TYPES.join(", ")}`));
20
+ }
21
+ const port = options.port ? parseInt(options.port, 10) : undefined;
22
+ try {
23
+ const result = await runEditorAction("update-global-variable", {
24
+ name: options.name,
25
+ ...(options.displayName !== undefined ? { displayName: options.displayName } : {}),
26
+ ...(options.type !== undefined ? { type: options.type } : {}),
27
+ ...(options.value !== undefined ? { value: parseValue(options.value) } : {}),
28
+ }, port ? { port } : {});
29
+ printResultAndExit(result);
30
+ }
31
+ catch (e) {
32
+ printErrorAndExit(e);
33
+ }
34
+ }
35
+ export function createUpdateGlobalVariableCommand() {
36
+ const cmd = new Command("update-global-variable");
37
+ cmd
38
+ .description("Update a global variable's value, display name, and/or type in the connected editor")
39
+ .requiredOption("--name <key>", "The variable's runtime key (from `list-theme-globals`)")
40
+ .option("--display-name <name>", "New human-facing label")
41
+ .option("--type <type>", `New value type: ${VALID_TYPES.join(" | ")}`)
42
+ .option("--value <json>", "New value (JSON for objects/null; plain string also accepted)")
43
+ .option("--port <port>", "Dev server WebSocket port", "5201")
44
+ .action(runUpdateGlobalVariable);
45
+ return cmd;
46
+ }
47
+ //# sourceMappingURL=update-global-variable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-global-variable.js","sourceRoot":"","sources":["../../src/commands/update-global-variable.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAC;AAE1G,MAAM,WAAW,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAUrG,SAAS,UAAU,CAAC,GAAY;IAC9B,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,SAAS,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,uBAAuB,CAAC,OAAoC;IACzE,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAClB,iBAAiB,CAAC,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC,CAAC;IAC3G,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxD,iBAAiB,CAAC,IAAI,KAAK,CAAC,0BAA0B,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACnE,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAClC,wBAAwB,EACxB;YACE,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAClF,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7E,EACD,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CACrB,CAAC;QACF,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,iBAAiB,CAAC,CAAC,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,iCAAiC;IAC/C,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC,wBAAwB,CAAC,CAAC;IAClD,GAAG;SACA,WAAW,CAAC,qFAAqF,CAAC;SAClG,cAAc,CAAC,cAAc,EAAE,wDAAwD,CAAC;SACxF,MAAM,CAAC,uBAAuB,EAAE,wBAAwB,CAAC;SACzD,MAAM,CAAC,eAAe,EAAE,mBAAmB,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;SACrE,MAAM,CAAC,gBAAgB,EAAE,+DAA+D,CAAC;SACzF,MAAM,CAAC,eAAe,EAAE,2BAA2B,EAAE,MAAM,CAAC;SAC5D,MAAM,CAAC,uBAAuB,CAAC,CAAC;IACnC,OAAO,GAAG,CAAC;AACb,CAAC"}