@bravostudioai/react 0.1.1 → 0.1.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAm6FA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,iBAgE/C"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAgWA,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,iBAyD/C"}
@@ -0,0 +1,4 @@
1
+ export * from "./types";
2
+ export * from "./parser";
3
+ export * from "./generator";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/codegen/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/codegen/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,QAAQ,EACR,eAAe,EACf,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA0BrD;AAED,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAAE,GACnB,MAAM,CA8BR;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,EAAE,EAClB,UAAU,EAAE,MAAM,EAAE,EAAE,GACrB,MAAM,EAAE,CA6DV;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAG7D;AAED,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACrB,MAAM,CAgBR;AAED,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAQlE;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,GAAG,GAAG,UAAU,EAAE,CA6atE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,GAAG,GAAG,aAAa,EAAE,CA4SvE;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,cAAc,EAAE,CA0D/D;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,CAkJnD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,GAAG,EACb,KAAK,EAAE,QAAQ,EAAE,GAChB,eAAe,EAAE,CAqEnB;AAkDD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,GAAG,gBAAgB,EAAE,CAgFnE;AAoDD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAoNzD"}
1
+ {"version":3,"file":"parser.d.ts","sourceRoot":"","sources":["../../../src/codegen/parser.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,UAAU,EACV,cAAc,EACd,QAAQ,EACR,eAAe,EACf,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAEjB,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA0BrD;AAED,wBAAgB,yBAAyB,CACvC,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,MAAM,EAAE,GACnB,MAAM,CA8BR;AAED;;;;;;GAMG;AACH,wBAAgB,6BAA6B,CAC3C,QAAQ,EAAE,MAAM,EAAE,EAClB,UAAU,EAAE,MAAM,EAAE,EAAE,GACrB,MAAM,EAAE,CA6DV;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAG7D;AAED,wBAAgB,oBAAoB,CAClC,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,GACrB,MAAM,CAgBR;AAED,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAQlE;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,GAAG,GAAG,UAAU,EAAE,CAubtE;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,GAAG,GAAG,aAAa,EAAE,CA4SvE;AAED,wBAAgB,eAAe,CAAC,QAAQ,EAAE,GAAG,GAAG,cAAc,EAAE,CA0D/D;AAED,wBAAgB,SAAS,CAAC,QAAQ,EAAE,GAAG,GAAG,QAAQ,EAAE,CAkJnD;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,GAAG,EACb,KAAK,EAAE,QAAQ,EAAE,GAChB,eAAe,EAAE,CAqEnB;AAkDD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,GAAG,GAAG,gBAAgB,EAAE,CAgFnE;AAoDD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAoNzD"}
@@ -9,6 +9,10 @@ type Props = {
9
9
  width: number;
10
10
  height: number;
11
11
  }) => void;
12
+ onContentSizeChange?: (size: {
13
+ width: number;
14
+ height: number;
15
+ }) => void;
12
16
  onAction?: (payload: EncoreActionPayload) => void | Promise<void>;
13
17
  data?: Record<string, string | number | any[]>;
14
18
  source?: "remote" | "local";
@@ -22,6 +26,6 @@ type Props = {
22
26
  pageDefinition?: any;
23
27
  componentCode?: string;
24
28
  };
25
- declare const EncoreApp: ({ appId, pageId, componentId, fallback, onSizeChange, onAction, data, source, repeatingContainerControls, inputGroups, baseURL, appDefinition, pageDefinition, componentCode, }: Props) => import("react/jsx-runtime").JSX.Element;
29
+ declare const EncoreApp: ({ appId, pageId, componentId, fallback, onSizeChange, onContentSizeChange, onAction, data, source, repeatingContainerControls, inputGroups, baseURL, appDefinition, pageDefinition, componentCode, }: Props) => import("react/jsx-runtime").JSX.Element;
26
30
  export default EncoreApp;
27
31
  //# sourceMappingURL=EncoreApp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EncoreApp.d.ts","sourceRoot":"","sources":["../../../src/components/EncoreApp.tsx"],"names":[],"mappings":"AAGA,OAAO,KAON,MAAM,OAAO,CAAC;AAIf,OAA4B,EAC1B,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAC;AA2BzC,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACjE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC;IAE/C,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAE5B,0BAA0B,CAAC,EAAE,MAAM,CACjC,MAAM,EACN;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CACnE,CAAC;IAEF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAeF,QAAA,MAAM,SAAS,GAAI,iLAehB,KAAK,4CAuqBP,CAAC;AAEF,eAAe,SAAS,CAAC"}
1
+ {"version":3,"file":"EncoreApp.d.ts","sourceRoot":"","sources":["../../../src/components/EncoreApp.tsx"],"names":[],"mappings":"AAGA,OAAO,KAON,MAAM,OAAO,CAAC;AAIf,OAA4B,EAC1B,KAAK,mBAAmB,EACzB,MAAM,iCAAiC,CAAC;AA2BzC,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACjE,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAC;IACxE,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,GAAG,EAAE,CAAC,CAAC;IAE/C,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC;IAE5B,0BAA0B,CAAC,EAAE,MAAM,CACjC,MAAM,EACN;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CACnE,CAAC;IAEF,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAGrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,GAAG,CAAC;IACpB,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAeF,QAAA,MAAM,SAAS,GAAI,sMAgBhB,KAAK,4CAusBP,CAAC;AAEF,eAAe,SAAS,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bravostudioai/react",
3
- "version": "0.1.1",
3
+ "version": "0.1.2",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/src/index.d.ts",
@@ -47,6 +47,7 @@ type Props = {
47
47
  componentId?: string;
48
48
  fallback?: React.ReactNode;
49
49
  onSizeChange?: (size: { width: number; height: number }) => void;
50
+ onContentSizeChange?: (size: { width: number; height: number }) => void;
50
51
  onAction?: (payload: EncoreActionPayload) => void | Promise<void>;
51
52
  data?: Record<string, string | number | any[]>;
52
53
  // When provided, force the runtime to load from either remote or local sources
@@ -85,6 +86,7 @@ const EncoreApp = ({
85
86
  componentId,
86
87
  fallback,
87
88
  onSizeChange,
89
+ onContentSizeChange,
88
90
  onAction,
89
91
  data,
90
92
  source,
@@ -121,6 +123,31 @@ const EncoreApp = ({
121
123
  const setPageId = useEncoreState(setPageIdSelector);
122
124
  const assetsById = useEncoreState(assetsByIdSelector);
123
125
  const containerRef = useRef<HTMLDivElement | null>(null);
126
+ const contentWrapperRef = useRef<HTMLDivElement | null>(null);
127
+
128
+ // Monitor content size changes
129
+ useEffect(() => {
130
+ if (!onContentSizeChange) return;
131
+ const element = contentWrapperRef.current;
132
+ if (!element) return;
133
+
134
+ const notify = () => {
135
+ // Use scroll dimensions to get full size including overflow
136
+ onContentSizeChange({
137
+ width: element.scrollWidth,
138
+ height: element.scrollHeight,
139
+ });
140
+ };
141
+
142
+ const observer = new ResizeObserver(() => {
143
+ notify();
144
+ });
145
+
146
+ // Emit initial size
147
+ notify();
148
+ observer.observe(element);
149
+ return () => observer.disconnect();
150
+ }, [onContentSizeChange]);
124
151
 
125
152
  // State to force DynamicComponent reload when updates are received
126
153
  const [reloadKey, setReloadKey] = useState<string | number>(0);
@@ -749,28 +776,35 @@ const EncoreApp = ({
749
776
  return (
750
777
  <div
751
778
  ref={containerRef}
752
- style={{ width: "100%", height: "100%", position: "relative" }}
779
+ style={{
780
+ width: "100%",
781
+ height: "100%",
782
+ position: "relative",
783
+ overflow: "hidden",
784
+ }}
753
785
  >
754
- <Suspense fallback={fallback || <div />}>
755
- <EncoreComponentIdContext.Provider value={{ componentId }}>
756
- <EncoreActionContext.Provider value={{ onAction }}>
757
- <EncoreRepeatingContainerContext.Provider
758
- value={repeatingContainerContextValue}
759
- >
760
- <EncoreBindingContext.Provider value={context}>
761
- <DynamicComponent
762
- name={`${appId}/draft/components/${pageId}`}
763
- fallback={fallback}
764
- reloadKey={reloadKey}
765
- componentCode={componentCode}
766
- >
767
- {" "}
768
- </DynamicComponent>
769
- </EncoreBindingContext.Provider>
770
- </EncoreRepeatingContainerContext.Provider>
771
- </EncoreActionContext.Provider>
772
- </EncoreComponentIdContext.Provider>
773
- </Suspense>
786
+ <div ref={contentWrapperRef} style={{ width: "100%", minHeight: "100%" }}>
787
+ <Suspense fallback={fallback || <div />}>
788
+ <EncoreComponentIdContext.Provider value={{ componentId }}>
789
+ <EncoreActionContext.Provider value={{ onAction }}>
790
+ <EncoreRepeatingContainerContext.Provider
791
+ value={repeatingContainerContextValue}
792
+ >
793
+ <EncoreBindingContext.Provider value={context}>
794
+ <DynamicComponent
795
+ name={`${appId}/draft/components/${pageId}`}
796
+ fallback={fallback}
797
+ reloadKey={reloadKey}
798
+ componentCode={componentCode}
799
+ >
800
+ {" "}
801
+ </DynamicComponent>
802
+ </EncoreBindingContext.Provider>
803
+ </EncoreRepeatingContainerContext.Provider>
804
+ </EncoreActionContext.Provider>
805
+ </EncoreComponentIdContext.Provider>
806
+ </Suspense>
807
+ </div>
774
808
  </div>
775
809
  );
776
810
  };