@bravostudioai/react 0.1.30 → 0.1.32

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 (72) hide show
  1. package/dist/cli/commands/generate.js +69 -65
  2. package/dist/cli/commands/generate.js.map +1 -1
  3. package/dist/codegen/generator.js.map +1 -1
  4. package/dist/codegen/parser.js +256 -593
  5. package/dist/codegen/parser.js.map +1 -1
  6. package/dist/codegen/propQualification.js +117 -0
  7. package/dist/codegen/propQualification.js.map +1 -0
  8. package/dist/components/DynamicComponent.js.map +1 -1
  9. package/dist/components/EncoreApp.js +142 -275
  10. package/dist/components/EncoreApp.js.map +1 -1
  11. package/dist/components/EncoreContextProviders.js +24 -0
  12. package/dist/components/EncoreContextProviders.js.map +1 -0
  13. package/dist/components.js +179 -174
  14. package/dist/components.js.map +1 -1
  15. package/dist/hooks/useFontLoader.js +41 -0
  16. package/dist/hooks/useFontLoader.js.map +1 -0
  17. package/dist/hooks/usePusherUpdates.js +41 -45
  18. package/dist/hooks/usePusherUpdates.js.map +1 -1
  19. package/dist/hooks/useRepeatingContainers.js +79 -0
  20. package/dist/hooks/useRepeatingContainers.js.map +1 -0
  21. package/dist/index.js +13 -14
  22. package/dist/index.js.map +1 -1
  23. package/dist/lib/dataPatching.js +24 -0
  24. package/dist/lib/dataPatching.js.map +1 -0
  25. package/dist/lib/dynamicModules.js +44 -45
  26. package/dist/lib/dynamicModules.js.map +1 -1
  27. package/dist/lib/fetcher.js +6 -13
  28. package/dist/lib/fetcher.js.map +1 -1
  29. package/dist/lib/logger.js +35 -0
  30. package/dist/lib/logger.js.map +1 -0
  31. package/dist/lib/moduleRegistry.js +9 -8
  32. package/dist/lib/moduleRegistry.js.map +1 -1
  33. package/dist/src/cli/commands/generate.d.ts.map +1 -1
  34. package/dist/src/codegen/generator.d.ts +74 -0
  35. package/dist/src/codegen/generator.d.ts.map +1 -1
  36. package/dist/src/codegen/parser.d.ts +39 -0
  37. package/dist/src/codegen/parser.d.ts.map +1 -1
  38. package/dist/src/codegen/propQualification.d.ts +42 -0
  39. package/dist/src/codegen/propQualification.d.ts.map +1 -0
  40. package/dist/src/components/DynamicComponent.d.ts +1 -1
  41. package/dist/src/components/DynamicComponent.d.ts.map +1 -1
  42. package/dist/src/components/EncoreApp.d.ts +55 -2
  43. package/dist/src/components/EncoreApp.d.ts.map +1 -1
  44. package/dist/src/components/EncoreContextProviders.d.ts +34 -0
  45. package/dist/src/components/EncoreContextProviders.d.ts.map +1 -0
  46. package/dist/src/components.d.ts.map +1 -1
  47. package/dist/src/hooks/useFontLoader.d.ts +17 -0
  48. package/dist/src/hooks/useFontLoader.d.ts.map +1 -0
  49. package/dist/src/hooks/usePusherUpdates.d.ts.map +1 -1
  50. package/dist/src/hooks/useRepeatingContainers.d.ts +31 -0
  51. package/dist/src/hooks/useRepeatingContainers.d.ts.map +1 -0
  52. package/dist/src/index.d.ts +2 -0
  53. package/dist/src/index.d.ts.map +1 -1
  54. package/dist/src/lib/dataPatching.d.ts +18 -0
  55. package/dist/src/lib/dataPatching.d.ts.map +1 -0
  56. package/dist/src/lib/dynamicModules.d.ts.map +1 -1
  57. package/dist/src/lib/fetcher.d.ts.map +1 -1
  58. package/dist/src/lib/logger.d.ts +33 -0
  59. package/dist/src/lib/logger.d.ts.map +1 -0
  60. package/dist/src/lib/moduleRegistry.d.ts.map +1 -1
  61. package/dist/src/stores/useEncoreState.d.ts +43 -1
  62. package/dist/src/stores/useEncoreState.d.ts.map +1 -1
  63. package/dist/src/version.d.ts +1 -1
  64. package/dist/stores/useEncoreState.js.map +1 -1
  65. package/dist/version.js +1 -1
  66. package/dist/version.js.map +1 -1
  67. package/package.json +1 -1
  68. package/src/cli/commands/generate.ts +7 -2
  69. package/src/components/DynamicComponent.tsx +1 -1
  70. package/src/components.tsx +6 -1
  71. package/src/hooks/useRepeatingContainers.ts +1 -1
  72. package/src/version.ts +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../../src/lib/fetcher.ts"],"names":[],"mappings":"AAKA,QAAA,MAAM,iBAAiB,cAEtB,CAAC;AAIF,QAAA,MAAM,OAAO,GAAI,KAAK,MAAM,QA2F3B,CAAC;AAEF,eAAe,OAAO,CAAC;AACvB,OAAO,EAAE,iBAAiB,IAAI,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"fetcher.d.ts","sourceRoot":"","sources":["../../../src/lib/fetcher.ts"],"names":[],"mappings":"AAMA,QAAA,MAAM,iBAAiB,cAEtB,CAAC;AAIF,QAAA,MAAM,OAAO,GAAI,KAAK,MAAM,QAmF3B,CAAC;AAEF,eAAe,OAAO,CAAC;AACvB,OAAO,EAAE,iBAAiB,IAAI,cAAc,EAAE,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * Centralized logging utility for encore-lib
3
+ *
4
+ * Provides conditional logging based on environment.
5
+ * Debug logs only appear in development mode.
6
+ */
7
+ /**
8
+ * Logger instance with environment-aware methods
9
+ */
10
+ export declare const logger: {
11
+ /**
12
+ * Debug-level logging (only in development)
13
+ * Use for detailed diagnostic information
14
+ */
15
+ debug: (...args: any[]) => void;
16
+ /**
17
+ * Info-level logging (only in development)
18
+ * Use for general informational messages
19
+ */
20
+ info: (...args: any[]) => void;
21
+ /**
22
+ * Warning-level logging (always shown)
23
+ * Use for recoverable issues that need attention
24
+ */
25
+ warn: (...args: any[]) => void;
26
+ /**
27
+ * Error-level logging (always shown)
28
+ * Use for errors and exceptions
29
+ */
30
+ error: (...args: any[]) => void;
31
+ };
32
+ export default logger;
33
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/lib/logger.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH;;GAEG;AACH,eAAO,MAAM,MAAM;IACjB;;;OAGG;qBACc,GAAG,EAAE;IAMtB;;;OAGG;oBACa,GAAG,EAAE;IAMrB;;;OAGG;oBACa,GAAG,EAAE;IAIrB;;;OAGG;qBACc,GAAG,EAAE;CAGvB,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"moduleRegistry.d.ts","sourceRoot":"","sources":["../../../src/lib/moduleRegistry.ts"],"names":[],"mappings":"AAEA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,QAEvD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,OAE5C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKnD"}
1
+ {"version":3,"file":"moduleRegistry.d.ts","sourceRoot":"","sources":["../../../src/lib/moduleRegistry.ts"],"names":[],"mappings":"AAIA,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,QAEvD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,OAE5C;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAKnD"}
@@ -1,33 +1,75 @@
1
- type EncoreState = {
1
+ /**
2
+ * Global state for the Encore runtime
3
+ *
4
+ * Manages app data, form inputs, authentication, and UI state across
5
+ * all Encore components in the application.
6
+ */
7
+ export type EncoreState = {
8
+ /** Current app definition loaded from Encore service */
2
9
  app: any;
10
+ /** Base URL for Encore service API requests */
3
11
  baseURL: string;
12
+ /** Authentication token with expiration and refresh capability */
4
13
  accessToken?: {
5
14
  expireAt: number;
6
15
  token: string;
7
16
  refreshToken: string;
8
17
  params: string;
9
18
  };
19
+ /** Currently loaded app ID */
10
20
  appId?: string;
21
+ /** Form input values organized by page ID, then by component ID */
11
22
  formInputs: Record<string, Record<string, any>>;
23
+ /** Currently loaded page ID */
12
24
  pageId?: string;
25
+ /** Component variant selections for stateful sets */
13
26
  statefulSetVariants: Record<string, string>;
27
+ /** Input group selections - maps group name to active element name */
14
28
  inputGroups: Record<string, string>;
29
+ /** Asset lookup by ID (images, videos, etc.) */
15
30
  assetsById: Record<string, any>;
31
+ /** Font family names by font ID */
16
32
  fontsById: Record<string, string>;
33
+ /** Full font metadata by font ID */
17
34
  fontsByIdFull: Record<string, {
18
35
  family: string;
19
36
  postScriptName?: string;
20
37
  }>;
38
+ /** Clear all form inputs across all pages */
21
39
  resetFormInputs: () => void;
40
+ /** Set authentication token */
22
41
  setAccessToken: (accessToken: EncoreState["accessToken"]) => void;
42
+ /** Set app definition and extract assets/fonts */
23
43
  setApp: (app: any) => void;
44
+ /** Set current app ID */
24
45
  setAppId: (appId: string) => void;
46
+ /** Set form input value for current page */
25
47
  setFormInputValue: (nodeId: string, value: any) => void;
48
+ /** Set current page ID */
26
49
  setPageId: (pageId: string) => void;
50
+ /** Set active variant for a stateful set component */
27
51
  setStatefulSetVariant: (statefulSetId: string, variant: string) => void;
52
+ /** Set active element for an input group */
28
53
  setInputGroupValue: (groupName: string, elementName: string) => void;
54
+ /** Set base URL for Encore service */
29
55
  setBaseURL: (baseURL: string) => void;
30
56
  };
31
57
  declare const useEncoreState: import("zustand").UseBoundStore<import("zustand").StoreApi<EncoreState>>;
58
+ /**
59
+ * Global Zustand store for Encore runtime state
60
+ *
61
+ * Provides centralized state management for app data, form inputs,
62
+ * authentication, and UI state across all Encore components.
63
+ *
64
+ * @example
65
+ * // Access state in a component
66
+ * const app = useEncoreState((state) => state.app);
67
+ * const setFormValue = useEncoreState((state) => state.setFormInputValue);
68
+ *
69
+ * @example
70
+ * // Access state outside React components
71
+ * const currentApp = useEncoreState.getState().app;
72
+ * useEncoreState.getState().setAppId('01ABC123');
73
+ */
32
74
  export default useEncoreState;
33
75
  //# sourceMappingURL=useEncoreState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEncoreState.d.ts","sourceRoot":"","sources":["../../../src/stores/useEncoreState.ts"],"names":[],"mappings":"AAKA,KAAK,WAAW,GAAG;IACjB,GAAG,EAAE,GAAG,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC5C,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE3E,eAAe,EAAE,MAAM,IAAI,CAAC;IAC5B,cAAc,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IAClE,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAC3B,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IACxD,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,qBAAqB,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IACxE,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IACrE,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,CAAC;AAEF,QAAA,MAAM,cAAc,0EA4FjB,CAAC;AAEJ,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"useEncoreState.d.ts","sourceRoot":"","sources":["../../../src/stores/useEncoreState.ts"],"names":[],"mappings":"AAKA;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,wDAAwD;IACxD,GAAG,EAAE,GAAG,CAAC;IAET,+CAA+C;IAC/C,OAAO,EAAE,MAAM,CAAC;IAEhB,kEAAkE;IAClE,WAAW,CAAC,EAAE;QACZ,QAAQ,EAAE,MAAM,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,EAAE,MAAM,CAAC;QACrB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IAEF,8BAA8B;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,mEAAmE;IACnE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAEhD,+BAA+B;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,qDAAqD;IACrD,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE5C,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEpC,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEhC,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC,oCAAoC;IACpC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAE3E,6CAA6C;IAC7C,eAAe,EAAE,MAAM,IAAI,CAAC;IAE5B,+BAA+B;IAC/B,cAAc,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC;IAElE,kDAAkD;IAClD,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;IAE3B,yBAAyB;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAElC,4CAA4C;IAC5C,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,IAAI,CAAC;IAExD,0BAA0B;IAC1B,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpC,sDAAsD;IACtD,qBAAqB,EAAE,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAExE,4CAA4C;IAC5C,kBAAkB,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAErE,sCAAsC;IACtC,UAAU,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACvC,CAAC;AAEF,QAAA,MAAM,cAAc,0EA4FjB,CAAC;AAEJ;;;;;;;;;;;;;;;GAeG;AACH,eAAe,cAAc,CAAC"}
@@ -1,2 +1,2 @@
1
- export declare const PACKAGE_VERSION = "0.1.28";
1
+ export declare const PACKAGE_VERSION = "0.1.31";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useEncoreState.js","sources":["../../src/stores/useEncoreState.ts"],"sourcesContent":["\"use client\";\nimport { create } from \"zustand\";\n\nimport { CONST_APPS_SERVICE_URL } from \"../../constants\";\n\ntype EncoreState = {\n app: any;\n baseURL: string;\n accessToken?: {\n expireAt: number;\n token: string;\n refreshToken: string;\n params: string;\n };\n appId?: string;\n formInputs: Record<string, Record<string, any>>;\n pageId?: string;\n statefulSetVariants: Record<string, string>;\n inputGroups: Record<string, string>; // Maps group name to active element name\n assetsById: Record<string, any>;\n fontsById: Record<string, string>;\n fontsByIdFull: Record<string, { family: string; postScriptName?: string }>;\n\n resetFormInputs: () => void;\n setAccessToken: (accessToken: EncoreState[\"accessToken\"]) => void;\n setApp: (app: any) => void;\n setAppId: (appId: string) => void;\n setFormInputValue: (nodeId: string, value: any) => void;\n setPageId: (pageId: string) => void;\n setStatefulSetVariant: (statefulSetId: string, variant: string) => void;\n setInputGroupValue: (groupName: string, elementName: string) => void;\n setBaseURL: (baseURL: string) => void;\n};\n\nconst useEncoreState = create<EncoreState>((set) => ({\n app: undefined,\n baseURL:\n (typeof import.meta !== \"undefined\" &&\n (import.meta as any).env &&\n (import.meta as any).env.VITE_APPS_SERVICE_URL) ||\n CONST_APPS_SERVICE_URL,\n\n accessToken: undefined,\n appId: undefined,\n formInputs: {},\n pageId: undefined,\n statefulSetVariants: {},\n inputGroups: {},\n assetsById: {},\n fontsById: {},\n fontsByIdFull: {},\n\n resetFormInputs: () => set((state) => ({ ...state, formInputs: {} })),\n\n setAccessToken: (accessToken) => set((state) => ({ ...state, accessToken })),\n\n setApp: (app: any) =>\n set((state) => ({\n ...state,\n app,\n assetsById:\n app.app?.assets?.reduce?.(\n (acc: Record<string, any>, asset: any) => ({\n ...acc,\n [asset.id]: asset,\n }),\n {}\n ) ?? {},\n fontsById:\n app.app?.fonts?.reduce?.(\n (acc: Record<string, string>, font: any) => ({\n ...acc,\n [font.id]:\n font.fontName?.postScriptName ||\n font.fontName?.family ||\n \"sans-serif\",\n }),\n {}\n ) ?? {},\n fontsByIdFull:\n app.app?.fonts?.reduce?.(\n (\n acc: Record<string, { family: string; postScriptName?: string }>,\n font: any\n ) => ({\n ...acc,\n [font.id]: {\n family: font.fontName?.family || \"sans-serif\",\n postScriptName: font.fontName?.postScriptName,\n },\n }),\n {}\n ) ?? {},\n })),\n\n setAppId: (appId) => set((state) => ({ ...state, appId })),\n\n setFormInputValue: (nodeId, value) =>\n set((state) => {\n const oldPageInputs = state.formInputs[state.pageId!] || {};\n const newPageInputs = { ...oldPageInputs, [nodeId]: value };\n const newInputs = { ...state.formInputs, [state.pageId!]: newPageInputs };\n return { ...state, formInputs: newInputs };\n }),\n\n setPageId: (pageId) => set((state) => ({ ...state, pageId })),\n\n setStatefulSetVariant: (statefulSetId, variant) =>\n set((state) => ({\n ...state,\n statefulSetVariants: {\n ...state.statefulSetVariants,\n [statefulSetId]: variant,\n },\n })),\n\n setInputGroupValue: (groupName, elementName) =>\n set((state) => ({\n ...state,\n inputGroups: {\n ...state.inputGroups,\n [groupName]: elementName,\n },\n })),\n\n setBaseURL: (baseURL) => set((state) => ({ ...state, baseURL })),\n}));\n\nexport default useEncoreState;\n"],"names":["useEncoreState","create","set","CONST_APPS_SERVICE_URL","state","accessToken","app","acc","asset","font","appId","nodeId","value","newPageInputs","newInputs","pageId","statefulSetId","variant","groupName","elementName","baseURL"],"mappings":";;AAkCA,MAAMA,IAAiBC,EAAoB,CAACC,OAAS;AAAA,EACnD,KAAK;AAAA,EACL,SAIEC;AAAA,EAEF,aAAa;AAAA,EACb,OAAO;AAAA,EACP,YAAY,CAAA;AAAA,EACZ,QAAQ;AAAA,EACR,qBAAqB,CAAA;AAAA,EACrB,aAAa,CAAA;AAAA,EACb,YAAY,CAAA;AAAA,EACZ,WAAW,CAAA;AAAA,EACX,eAAe,CAAA;AAAA,EAEf,iBAAiB,MAAMD,EAAI,CAACE,OAAW,EAAE,GAAGA,GAAO,YAAY,CAAA,EAAC,EAAI;AAAA,EAEpE,gBAAgB,CAACC,MAAgBH,EAAI,CAACE,OAAW,EAAE,GAAGA,GAAO,aAAAC,EAAA,EAAc;AAAA,EAE3E,QAAQ,CAACC,MACPJ,EAAI,CAACE,OAAW;AAAA,IACd,GAAGA;AAAA,IACH,KAAAE;AAAA,IACA,YACEA,EAAI,KAAK,QAAQ;AAAA,MACf,CAACC,GAA0BC,OAAgB;AAAA,QACzC,GAAGD;AAAA,QACH,CAACC,EAAM,EAAE,GAAGA;AAAA,MAAA;AAAA,MAEd,CAAA;AAAA,IAAC,KACE,CAAA;AAAA,IACP,WACEF,EAAI,KAAK,OAAO;AAAA,MACd,CAACC,GAA6BE,OAAe;AAAA,QAC3C,GAAGF;AAAA,QACH,CAACE,EAAK,EAAE,GACNA,EAAK,UAAU,kBACfA,EAAK,UAAU,UACf;AAAA,MAAA;AAAA,MAEJ,CAAA;AAAA,IAAC,KACE,CAAA;AAAA,IACP,eACEH,EAAI,KAAK,OAAO;AAAA,MACd,CACEC,GACAE,OACI;AAAA,QACJ,GAAGF;AAAA,QACH,CAACE,EAAK,EAAE,GAAG;AAAA,UACT,QAAQA,EAAK,UAAU,UAAU;AAAA,UACjC,gBAAgBA,EAAK,UAAU;AAAA,QAAA;AAAA,MACjC;AAAA,MAEF,CAAA;AAAA,IAAC,KACE,CAAA;AAAA,EAAC,EACR;AAAA,EAEJ,UAAU,CAACC,MAAUR,EAAI,CAACE,OAAW,EAAE,GAAGA,GAAO,OAAAM,EAAA,EAAQ;AAAA,EAEzD,mBAAmB,CAACC,GAAQC,MAC1BV,EAAI,CAACE,MAAU;AAEb,UAAMS,IAAgB,EAAE,GADFT,EAAM,WAAWA,EAAM,MAAO,KAAK,CAAA,GACf,CAACO,CAAM,GAAGC,EAAA,GAC9CE,IAAY,EAAE,GAAGV,EAAM,YAAY,CAACA,EAAM,MAAO,GAAGS,EAAA;AAC1D,WAAO,EAAE,GAAGT,GAAO,YAAYU,EAAA;AAAA,EACjC,CAAC;AAAA,EAEH,WAAW,CAACC,MAAWb,EAAI,CAACE,OAAW,EAAE,GAAGA,GAAO,QAAAW,EAAA,EAAS;AAAA,EAE5D,uBAAuB,CAACC,GAAeC,MACrCf,EAAI,CAACE,OAAW;AAAA,IACd,GAAGA;AAAA,IACH,qBAAqB;AAAA,MACnB,GAAGA,EAAM;AAAA,MACT,CAACY,CAAa,GAAGC;AAAA,IAAA;AAAA,EACnB,EACA;AAAA,EAEJ,oBAAoB,CAACC,GAAWC,MAC9BjB,EAAI,CAACE,OAAW;AAAA,IACd,GAAGA;AAAA,IACH,aAAa;AAAA,MACX,GAAGA,EAAM;AAAA,MACT,CAACc,CAAS,GAAGC;AAAA,IAAA;AAAA,EACf,EACA;AAAA,EAEJ,YAAY,CAACC,MAAYlB,EAAI,CAACE,OAAW,EAAE,GAAGA,GAAO,SAAAgB,IAAU;AACjE,EAAE;"}
1
+ {"version":3,"file":"useEncoreState.js","sources":["../../src/stores/useEncoreState.ts"],"sourcesContent":["\"use client\";\nimport { create } from \"zustand\";\n\nimport { CONST_APPS_SERVICE_URL } from \"../../constants\";\n\n/**\n * Global state for the Encore runtime\n *\n * Manages app data, form inputs, authentication, and UI state across\n * all Encore components in the application.\n */\nexport type EncoreState = {\n /** Current app definition loaded from Encore service */\n app: any;\n\n /** Base URL for Encore service API requests */\n baseURL: string;\n\n /** Authentication token with expiration and refresh capability */\n accessToken?: {\n expireAt: number;\n token: string;\n refreshToken: string;\n params: string;\n };\n\n /** Currently loaded app ID */\n appId?: string;\n\n /** Form input values organized by page ID, then by component ID */\n formInputs: Record<string, Record<string, any>>;\n\n /** Currently loaded page ID */\n pageId?: string;\n\n /** Component variant selections for stateful sets */\n statefulSetVariants: Record<string, string>;\n\n /** Input group selections - maps group name to active element name */\n inputGroups: Record<string, string>;\n\n /** Asset lookup by ID (images, videos, etc.) */\n assetsById: Record<string, any>;\n\n /** Font family names by font ID */\n fontsById: Record<string, string>;\n\n /** Full font metadata by font ID */\n fontsByIdFull: Record<string, { family: string; postScriptName?: string }>;\n\n /** Clear all form inputs across all pages */\n resetFormInputs: () => void;\n\n /** Set authentication token */\n setAccessToken: (accessToken: EncoreState[\"accessToken\"]) => void;\n\n /** Set app definition and extract assets/fonts */\n setApp: (app: any) => void;\n\n /** Set current app ID */\n setAppId: (appId: string) => void;\n\n /** Set form input value for current page */\n setFormInputValue: (nodeId: string, value: any) => void;\n\n /** Set current page ID */\n setPageId: (pageId: string) => void;\n\n /** Set active variant for a stateful set component */\n setStatefulSetVariant: (statefulSetId: string, variant: string) => void;\n\n /** Set active element for an input group */\n setInputGroupValue: (groupName: string, elementName: string) => void;\n\n /** Set base URL for Encore service */\n setBaseURL: (baseURL: string) => void;\n};\n\nconst useEncoreState = create<EncoreState>((set) => ({\n app: undefined,\n baseURL:\n (typeof import.meta !== \"undefined\" &&\n (import.meta as any).env &&\n (import.meta as any).env.VITE_APPS_SERVICE_URL) ||\n CONST_APPS_SERVICE_URL,\n\n accessToken: undefined,\n appId: undefined,\n formInputs: {},\n pageId: undefined,\n statefulSetVariants: {},\n inputGroups: {},\n assetsById: {},\n fontsById: {},\n fontsByIdFull: {},\n\n resetFormInputs: () => set((state) => ({ ...state, formInputs: {} })),\n\n setAccessToken: (accessToken) => set((state) => ({ ...state, accessToken })),\n\n setApp: (app: any) =>\n set((state) => ({\n ...state,\n app,\n assetsById:\n app.app?.assets?.reduce?.(\n (acc: Record<string, any>, asset: any) => ({\n ...acc,\n [asset.id]: asset,\n }),\n {}\n ) ?? {},\n fontsById:\n app.app?.fonts?.reduce?.(\n (acc: Record<string, string>, font: any) => ({\n ...acc,\n [font.id]:\n font.fontName?.postScriptName ||\n font.fontName?.family ||\n \"sans-serif\",\n }),\n {}\n ) ?? {},\n fontsByIdFull:\n app.app?.fonts?.reduce?.(\n (\n acc: Record<string, { family: string; postScriptName?: string }>,\n font: any\n ) => ({\n ...acc,\n [font.id]: {\n family: font.fontName?.family || \"sans-serif\",\n postScriptName: font.fontName?.postScriptName,\n },\n }),\n {}\n ) ?? {},\n })),\n\n setAppId: (appId) => set((state) => ({ ...state, appId })),\n\n setFormInputValue: (nodeId, value) =>\n set((state) => {\n const oldPageInputs = state.formInputs[state.pageId!] || {};\n const newPageInputs = { ...oldPageInputs, [nodeId]: value };\n const newInputs = { ...state.formInputs, [state.pageId!]: newPageInputs };\n return { ...state, formInputs: newInputs };\n }),\n\n setPageId: (pageId) => set((state) => ({ ...state, pageId })),\n\n setStatefulSetVariant: (statefulSetId, variant) =>\n set((state) => ({\n ...state,\n statefulSetVariants: {\n ...state.statefulSetVariants,\n [statefulSetId]: variant,\n },\n })),\n\n setInputGroupValue: (groupName, elementName) =>\n set((state) => ({\n ...state,\n inputGroups: {\n ...state.inputGroups,\n [groupName]: elementName,\n },\n })),\n\n setBaseURL: (baseURL) => set((state) => ({ ...state, baseURL })),\n}));\n\n/**\n * Global Zustand store for Encore runtime state\n *\n * Provides centralized state management for app data, form inputs,\n * authentication, and UI state across all Encore components.\n *\n * @example\n * // Access state in a component\n * const app = useEncoreState((state) => state.app);\n * const setFormValue = useEncoreState((state) => state.setFormInputValue);\n *\n * @example\n * // Access state outside React components\n * const currentApp = useEncoreState.getState().app;\n * useEncoreState.getState().setAppId('01ABC123');\n */\nexport default useEncoreState;\n"],"names":["useEncoreState","create","set","CONST_APPS_SERVICE_URL","state","accessToken","app","acc","asset","font","appId","nodeId","value","newPageInputs","newInputs","pageId","statefulSetId","variant","groupName","elementName","baseURL"],"mappings":";;AA8EA,MAAMA,IAAiBC,EAAoB,CAACC,OAAS;AAAA,EACnD,KAAK;AAAA,EACL,SAIEC;AAAA,EAEF,aAAa;AAAA,EACb,OAAO;AAAA,EACP,YAAY,CAAA;AAAA,EACZ,QAAQ;AAAA,EACR,qBAAqB,CAAA;AAAA,EACrB,aAAa,CAAA;AAAA,EACb,YAAY,CAAA;AAAA,EACZ,WAAW,CAAA;AAAA,EACX,eAAe,CAAA;AAAA,EAEf,iBAAiB,MAAMD,EAAI,CAACE,OAAW,EAAE,GAAGA,GAAO,YAAY,CAAA,EAAC,EAAI;AAAA,EAEpE,gBAAgB,CAACC,MAAgBH,EAAI,CAACE,OAAW,EAAE,GAAGA,GAAO,aAAAC,EAAA,EAAc;AAAA,EAE3E,QAAQ,CAACC,MACPJ,EAAI,CAACE,OAAW;AAAA,IACd,GAAGA;AAAA,IACH,KAAAE;AAAA,IACA,YACEA,EAAI,KAAK,QAAQ;AAAA,MACf,CAACC,GAA0BC,OAAgB;AAAA,QACzC,GAAGD;AAAA,QACH,CAACC,EAAM,EAAE,GAAGA;AAAA,MAAA;AAAA,MAEd,CAAA;AAAA,IAAC,KACE,CAAA;AAAA,IACP,WACEF,EAAI,KAAK,OAAO;AAAA,MACd,CAACC,GAA6BE,OAAe;AAAA,QAC3C,GAAGF;AAAA,QACH,CAACE,EAAK,EAAE,GACNA,EAAK,UAAU,kBACfA,EAAK,UAAU,UACf;AAAA,MAAA;AAAA,MAEJ,CAAA;AAAA,IAAC,KACE,CAAA;AAAA,IACP,eACEH,EAAI,KAAK,OAAO;AAAA,MACd,CACEC,GACAE,OACI;AAAA,QACJ,GAAGF;AAAA,QACH,CAACE,EAAK,EAAE,GAAG;AAAA,UACT,QAAQA,EAAK,UAAU,UAAU;AAAA,UACjC,gBAAgBA,EAAK,UAAU;AAAA,QAAA;AAAA,MACjC;AAAA,MAEF,CAAA;AAAA,IAAC,KACE,CAAA;AAAA,EAAC,EACR;AAAA,EAEJ,UAAU,CAACC,MAAUR,EAAI,CAACE,OAAW,EAAE,GAAGA,GAAO,OAAAM,EAAA,EAAQ;AAAA,EAEzD,mBAAmB,CAACC,GAAQC,MAC1BV,EAAI,CAACE,MAAU;AAEb,UAAMS,IAAgB,EAAE,GADFT,EAAM,WAAWA,EAAM,MAAO,KAAK,CAAA,GACf,CAACO,CAAM,GAAGC,EAAA,GAC9CE,IAAY,EAAE,GAAGV,EAAM,YAAY,CAACA,EAAM,MAAO,GAAGS,EAAA;AAC1D,WAAO,EAAE,GAAGT,GAAO,YAAYU,EAAA;AAAA,EACjC,CAAC;AAAA,EAEH,WAAW,CAACC,MAAWb,EAAI,CAACE,OAAW,EAAE,GAAGA,GAAO,QAAAW,EAAA,EAAS;AAAA,EAE5D,uBAAuB,CAACC,GAAeC,MACrCf,EAAI,CAACE,OAAW;AAAA,IACd,GAAGA;AAAA,IACH,qBAAqB;AAAA,MACnB,GAAGA,EAAM;AAAA,MACT,CAACY,CAAa,GAAGC;AAAA,IAAA;AAAA,EACnB,EACA;AAAA,EAEJ,oBAAoB,CAACC,GAAWC,MAC9BjB,EAAI,CAACE,OAAW;AAAA,IACd,GAAGA;AAAA,IACH,aAAa;AAAA,MACX,GAAGA,EAAM;AAAA,MACT,CAACc,CAAS,GAAGC;AAAA,IAAA;AAAA,EACf,EACA;AAAA,EAEJ,YAAY,CAACC,MAAYlB,EAAI,CAACE,OAAW,EAAE,GAAGA,GAAO,SAAAgB,IAAU;AACjE,EAAE;"}
package/dist/version.js CHANGED
@@ -1,4 +1,4 @@
1
- const o = "0.1.28";
1
+ const o = "0.1.31";
2
2
  export {
3
3
  o as PACKAGE_VERSION
4
4
  };
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sources":["../src/version.ts"],"sourcesContent":["export const PACKAGE_VERSION = \"0.1.28\";\n"],"names":["PACKAGE_VERSION"],"mappings":"AAAO,MAAMA,IAAkB;"}
1
+ {"version":3,"file":"version.js","sources":["../src/version.ts"],"sourcesContent":["export const PACKAGE_VERSION = \"0.1.31\";\n"],"names":["PACKAGE_VERSION"],"mappings":"AAAO,MAAMA,IAAkB;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bravostudioai/react",
3
- "version": "0.1.30",
3
+ "version": "0.1.32",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/src/index.d.ts",
@@ -369,6 +369,8 @@ Arguments:
369
369
  appId The Encore app ID
370
370
  pageId The Encore page ID (optional - if omitted, generates wrappers for ALL pages)
371
371
  outputPath Path where the generated TSX file(s) should be saved
372
+ --production Generate for production (bundles data)
373
+ --preseed Alias for --production (bundles data)
372
374
 
373
375
  Environment variables:
374
376
  APPS_SERVICE_URL Base URL for the apps service
@@ -379,8 +381,11 @@ Example:
379
381
  }
380
382
 
381
383
  export async function runGenerate(args: string[]) {
382
- const isProduction = args.includes("--production");
383
- const cleanArgs = args.filter((arg) => arg !== "--production");
384
+ const isProduction =
385
+ args.includes("--production") || args.includes("--preseed");
386
+ const cleanArgs = args.filter(
387
+ (arg) => arg !== "--production" && arg !== "--preseed"
388
+ );
384
389
 
385
390
  if (
386
391
  cleanArgs.length < 2 ||
@@ -3,7 +3,7 @@ import React, { useMemo, Suspense } from "react";
3
3
 
4
4
  type Props = {
5
5
  name: string;
6
- children: unknown;
6
+ children?: React.ReactNode;
7
7
  componentId?: string;
8
8
  fallback?: React.ReactNode;
9
9
  reloadKey?: string | number;
@@ -1502,7 +1502,12 @@ const TextInputComponent: React.FC<ComponentProps> = ({
1502
1502
  );
1503
1503
  };
1504
1504
 
1505
- const LottieComponent: React.FC<ComponentProps> = ({ id, name, nodeData }) => {
1505
+ const LottieComponent: React.FC<ComponentProps> = ({
1506
+ id,
1507
+ name,
1508
+ nodeData,
1509
+ children,
1510
+ }) => {
1506
1511
  const style = useEncoreStyle(nodeData.style);
1507
1512
  return (
1508
1513
  <EncoreLinkActionWrapper id={id} nodeData={nodeData}>
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  import { useState, useCallback, useMemo, useEffect } from "react";
9
- import React from "react";
9
+
10
10
  import type { RepeatingContainerControl } from "../contexts/EncoreRepeatingContainerContext";
11
11
 
12
12
  interface ContainerControlProps {
package/src/version.ts CHANGED
@@ -1 +1 @@
1
- export const PACKAGE_VERSION = "0.1.30";
1
+ export const PACKAGE_VERSION = "0.1.32";