@builder.io/sdk-react-native 2.0.11 → 2.0.13

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 (164) hide show
  1. package/lib/browser/commonjs/blocks/slot/component-info.js +2 -1
  2. package/lib/browser/commonjs/blocks/slot/component-info.js.map +1 -1
  3. package/lib/browser/commonjs/blocks/slot/slot.js +1 -0
  4. package/lib/browser/commonjs/blocks/slot/slot.js.map +1 -1
  5. package/lib/browser/commonjs/components/block/block.helpers.js +2 -11
  6. package/lib/browser/commonjs/components/block/block.helpers.js.map +1 -1
  7. package/lib/browser/commonjs/components/block/block.js +31 -12
  8. package/lib/browser/commonjs/components/block/block.js.map +1 -1
  9. package/lib/browser/commonjs/components/block/components/block-styles.js +2 -17
  10. package/lib/browser/commonjs/components/block/components/block-styles.js.map +1 -1
  11. package/lib/browser/commonjs/constants/sdk-version.js +1 -1
  12. package/lib/browser/commonjs/functions/evaluate/evaluate.js +14 -1
  13. package/lib/browser/commonjs/functions/evaluate/evaluate.js.map +1 -1
  14. package/lib/browser/commonjs/functions/evaluate/node-runtime/init.js +1 -0
  15. package/lib/browser/commonjs/functions/evaluate/node-runtime/init.js.map +1 -1
  16. package/lib/browser/commonjs/functions/evaluate/node-runtime/node-runtime.js +2 -2
  17. package/lib/browser/commonjs/functions/evaluate/node-runtime/node-runtime.js.map +1 -1
  18. package/lib/browser/commonjs/functions/get-processed-block.js +52 -10
  19. package/lib/browser/commonjs/functions/get-processed-block.js.map +1 -1
  20. package/lib/browser/module/blocks/slot/component-info.js +2 -1
  21. package/lib/browser/module/blocks/slot/component-info.js.map +1 -1
  22. package/lib/browser/module/blocks/slot/slot.js +1 -0
  23. package/lib/browser/module/blocks/slot/slot.js.map +1 -1
  24. package/lib/browser/module/components/block/block.helpers.js +2 -11
  25. package/lib/browser/module/components/block/block.helpers.js.map +1 -1
  26. package/lib/browser/module/components/block/block.js +32 -13
  27. package/lib/browser/module/components/block/block.js.map +1 -1
  28. package/lib/browser/module/components/block/components/block-styles.js +2 -17
  29. package/lib/browser/module/components/block/components/block-styles.js.map +1 -1
  30. package/lib/browser/module/constants/sdk-version.js +1 -1
  31. package/lib/browser/module/functions/evaluate/evaluate.js +15 -1
  32. package/lib/browser/module/functions/evaluate/evaluate.js.map +1 -1
  33. package/lib/browser/module/functions/evaluate/node-runtime/init.js +1 -0
  34. package/lib/browser/module/functions/evaluate/node-runtime/init.js.map +1 -1
  35. package/lib/browser/module/functions/evaluate/node-runtime/node-runtime.js +2 -2
  36. package/lib/browser/module/functions/evaluate/node-runtime/node-runtime.js.map +1 -1
  37. package/lib/browser/module/functions/get-processed-block.js +52 -10
  38. package/lib/browser/module/functions/get-processed-block.js.map +1 -1
  39. package/lib/browser/typescript/blocks/slot/component-info.d.ts.map +1 -1
  40. package/lib/browser/typescript/blocks/slot/slot.d.ts +2 -2
  41. package/lib/browser/typescript/blocks/slot/slot.d.ts.map +1 -1
  42. package/lib/browser/typescript/components/block/block.d.ts.map +1 -1
  43. package/lib/browser/typescript/components/block/block.helpers.d.ts +1 -2
  44. package/lib/browser/typescript/components/block/block.helpers.d.ts.map +1 -1
  45. package/lib/browser/typescript/components/block/components/block-styles.d.ts.map +1 -1
  46. package/lib/browser/typescript/constants/sdk-version.d.ts +1 -1
  47. package/lib/browser/typescript/functions/evaluate/evaluate.d.ts.map +1 -1
  48. package/lib/browser/typescript/functions/get-processed-block.d.ts +1 -0
  49. package/lib/browser/typescript/functions/get-processed-block.d.ts.map +1 -1
  50. package/lib/browser/typescript/helpers/omit.d.ts +2 -0
  51. package/lib/browser/typescript/helpers/omit.d.ts.map +1 -0
  52. package/lib/edge/commonjs/blocks/slot/component-info.js +2 -1
  53. package/lib/edge/commonjs/blocks/slot/component-info.js.map +1 -1
  54. package/lib/edge/commonjs/blocks/slot/slot.js +1 -0
  55. package/lib/edge/commonjs/blocks/slot/slot.js.map +1 -1
  56. package/lib/edge/commonjs/components/block/block.helpers.js +2 -11
  57. package/lib/edge/commonjs/components/block/block.helpers.js.map +1 -1
  58. package/lib/edge/commonjs/components/block/block.js +31 -12
  59. package/lib/edge/commonjs/components/block/block.js.map +1 -1
  60. package/lib/edge/commonjs/components/block/components/block-styles.js +2 -17
  61. package/lib/edge/commonjs/components/block/components/block-styles.js.map +1 -1
  62. package/lib/edge/commonjs/constants/sdk-version.js +1 -1
  63. package/lib/edge/commonjs/functions/evaluate/evaluate.js +14 -1
  64. package/lib/edge/commonjs/functions/evaluate/evaluate.js.map +1 -1
  65. package/lib/edge/commonjs/functions/evaluate/node-runtime/init.js +1 -0
  66. package/lib/edge/commonjs/functions/evaluate/node-runtime/init.js.map +1 -1
  67. package/lib/edge/commonjs/functions/evaluate/node-runtime/node-runtime.js +2 -2
  68. package/lib/edge/commonjs/functions/evaluate/node-runtime/node-runtime.js.map +1 -1
  69. package/lib/edge/commonjs/functions/get-processed-block.js +52 -10
  70. package/lib/edge/commonjs/functions/get-processed-block.js.map +1 -1
  71. package/lib/edge/module/blocks/slot/component-info.js +2 -1
  72. package/lib/edge/module/blocks/slot/component-info.js.map +1 -1
  73. package/lib/edge/module/blocks/slot/slot.js +1 -0
  74. package/lib/edge/module/blocks/slot/slot.js.map +1 -1
  75. package/lib/edge/module/components/block/block.helpers.js +2 -11
  76. package/lib/edge/module/components/block/block.helpers.js.map +1 -1
  77. package/lib/edge/module/components/block/block.js +32 -13
  78. package/lib/edge/module/components/block/block.js.map +1 -1
  79. package/lib/edge/module/components/block/components/block-styles.js +2 -17
  80. package/lib/edge/module/components/block/components/block-styles.js.map +1 -1
  81. package/lib/edge/module/constants/sdk-version.js +1 -1
  82. package/lib/edge/module/functions/evaluate/evaluate.js +15 -1
  83. package/lib/edge/module/functions/evaluate/evaluate.js.map +1 -1
  84. package/lib/edge/module/functions/evaluate/node-runtime/init.js +1 -0
  85. package/lib/edge/module/functions/evaluate/node-runtime/init.js.map +1 -1
  86. package/lib/edge/module/functions/evaluate/node-runtime/node-runtime.js +2 -2
  87. package/lib/edge/module/functions/evaluate/node-runtime/node-runtime.js.map +1 -1
  88. package/lib/edge/module/functions/get-processed-block.js +52 -10
  89. package/lib/edge/module/functions/get-processed-block.js.map +1 -1
  90. package/lib/edge/typescript/blocks/slot/component-info.d.ts.map +1 -1
  91. package/lib/edge/typescript/blocks/slot/slot.d.ts +2 -2
  92. package/lib/edge/typescript/blocks/slot/slot.d.ts.map +1 -1
  93. package/lib/edge/typescript/components/block/block.d.ts.map +1 -1
  94. package/lib/edge/typescript/components/block/block.helpers.d.ts +1 -2
  95. package/lib/edge/typescript/components/block/block.helpers.d.ts.map +1 -1
  96. package/lib/edge/typescript/components/block/components/block-styles.d.ts.map +1 -1
  97. package/lib/edge/typescript/constants/sdk-version.d.ts +1 -1
  98. package/lib/edge/typescript/functions/evaluate/evaluate.d.ts.map +1 -1
  99. package/lib/edge/typescript/functions/get-processed-block.d.ts +1 -0
  100. package/lib/edge/typescript/functions/get-processed-block.d.ts.map +1 -1
  101. package/lib/edge/typescript/helpers/omit.d.ts +2 -0
  102. package/lib/edge/typescript/helpers/omit.d.ts.map +1 -0
  103. package/lib/node/commonjs/blocks/slot/component-info.js +2 -1
  104. package/lib/node/commonjs/blocks/slot/component-info.js.map +1 -1
  105. package/lib/node/commonjs/blocks/slot/slot.js +1 -0
  106. package/lib/node/commonjs/blocks/slot/slot.js.map +1 -1
  107. package/lib/node/commonjs/components/block/block.helpers.js +2 -11
  108. package/lib/node/commonjs/components/block/block.helpers.js.map +1 -1
  109. package/lib/node/commonjs/components/block/block.js +31 -12
  110. package/lib/node/commonjs/components/block/block.js.map +1 -1
  111. package/lib/node/commonjs/components/block/components/block-styles.js +2 -17
  112. package/lib/node/commonjs/components/block/components/block-styles.js.map +1 -1
  113. package/lib/node/commonjs/constants/sdk-version.js +1 -1
  114. package/lib/node/commonjs/functions/evaluate/evaluate.js +14 -1
  115. package/lib/node/commonjs/functions/evaluate/evaluate.js.map +1 -1
  116. package/lib/node/commonjs/functions/evaluate/node-runtime/init.js +1 -0
  117. package/lib/node/commonjs/functions/evaluate/node-runtime/init.js.map +1 -1
  118. package/lib/node/commonjs/functions/evaluate/node-runtime/node-runtime.js +2 -2
  119. package/lib/node/commonjs/functions/evaluate/node-runtime/node-runtime.js.map +1 -1
  120. package/lib/node/commonjs/functions/get-processed-block.js +52 -10
  121. package/lib/node/commonjs/functions/get-processed-block.js.map +1 -1
  122. package/lib/node/module/blocks/slot/component-info.js +2 -1
  123. package/lib/node/module/blocks/slot/component-info.js.map +1 -1
  124. package/lib/node/module/blocks/slot/slot.js +1 -0
  125. package/lib/node/module/blocks/slot/slot.js.map +1 -1
  126. package/lib/node/module/components/block/block.helpers.js +2 -11
  127. package/lib/node/module/components/block/block.helpers.js.map +1 -1
  128. package/lib/node/module/components/block/block.js +32 -13
  129. package/lib/node/module/components/block/block.js.map +1 -1
  130. package/lib/node/module/components/block/components/block-styles.js +2 -17
  131. package/lib/node/module/components/block/components/block-styles.js.map +1 -1
  132. package/lib/node/module/constants/sdk-version.js +1 -1
  133. package/lib/node/module/functions/evaluate/evaluate.js +15 -1
  134. package/lib/node/module/functions/evaluate/evaluate.js.map +1 -1
  135. package/lib/node/module/functions/evaluate/node-runtime/init.js +1 -0
  136. package/lib/node/module/functions/evaluate/node-runtime/init.js.map +1 -1
  137. package/lib/node/module/functions/evaluate/node-runtime/node-runtime.js +2 -2
  138. package/lib/node/module/functions/evaluate/node-runtime/node-runtime.js.map +1 -1
  139. package/lib/node/module/functions/get-processed-block.js +52 -10
  140. package/lib/node/module/functions/get-processed-block.js.map +1 -1
  141. package/lib/node/typescript/blocks/slot/component-info.d.ts.map +1 -1
  142. package/lib/node/typescript/blocks/slot/slot.d.ts +2 -2
  143. package/lib/node/typescript/blocks/slot/slot.d.ts.map +1 -1
  144. package/lib/node/typescript/components/block/block.d.ts.map +1 -1
  145. package/lib/node/typescript/components/block/block.helpers.d.ts +1 -2
  146. package/lib/node/typescript/components/block/block.helpers.d.ts.map +1 -1
  147. package/lib/node/typescript/components/block/components/block-styles.d.ts.map +1 -1
  148. package/lib/node/typescript/constants/sdk-version.d.ts +1 -1
  149. package/lib/node/typescript/functions/evaluate/evaluate.d.ts.map +1 -1
  150. package/lib/node/typescript/functions/get-processed-block.d.ts +1 -0
  151. package/lib/node/typescript/functions/get-processed-block.d.ts.map +1 -1
  152. package/lib/node/typescript/helpers/omit.d.ts +2 -0
  153. package/lib/node/typescript/helpers/omit.d.ts.map +1 -0
  154. package/package.json +3 -3
  155. package/src/blocks/slot/component-info.ts +2 -1
  156. package/src/blocks/slot/slot.tsx +10 -5
  157. package/src/components/block/block.helpers.ts +1 -11
  158. package/src/components/block/block.tsx +47 -22
  159. package/src/components/block/components/block-styles.tsx +2 -17
  160. package/src/constants/sdk-version.ts +1 -1
  161. package/src/functions/evaluate/evaluate.ts +15 -1
  162. package/src/functions/evaluate/node-runtime/init.ts +1 -0
  163. package/src/functions/evaluate/node-runtime/node-runtime.ts +2 -2
  164. package/src/functions/get-processed-block.ts +52 -10
@@ -13,7 +13,7 @@ import {
13
13
  Button,
14
14
  Linking,
15
15
  } from "react-native";
16
- import { useEffect } from "react";
16
+ import { useState, useEffect } from "react";
17
17
 
18
18
  export type BlockProps = {
19
19
  block: BuilderBlock;
@@ -28,6 +28,7 @@ import type {
28
28
  } from "../../context/types";
29
29
  import { getBlockComponentOptions } from "../../functions/get-block-component-options";
30
30
  import { getProcessedBlock } from "../../functions/get-processed-block";
31
+ import { isPreviewing } from "../../server-index";
31
32
  import type { BuilderBlock } from "../../types/builder-block";
32
33
  import DynamicDiv from "../dynamic-div";
33
34
  import { bindAnimations } from "./animator";
@@ -47,14 +48,6 @@ import ComponentRef from "./components/component-ref/component-ref";
47
48
  import RepeatedBlock from "./components/repeated-block";
48
49
 
49
50
  function Block(props: BlockProps) {
50
- function blockComponent() {
51
- return getComponent({
52
- block: props.block,
53
- context: props.context,
54
- registeredComponents: props.registeredComponents,
55
- });
56
- }
57
-
58
51
  function repeatItem() {
59
52
  return getRepeatItemData({
60
53
  block: props.block,
@@ -62,8 +55,16 @@ function Block(props: BlockProps) {
62
55
  });
63
56
  }
64
57
 
58
+ const [_processedBlock, set_processedBlock] = useState(() => ({
59
+ value: null as BuilderBlock | null,
60
+ update: false,
61
+ }));
62
+
65
63
  function processedBlock() {
66
- return props.block.repeat?.collection
64
+ if (_processedBlock.value && !_processedBlock.update && !isPreviewing()) {
65
+ return _processedBlock.value;
66
+ }
67
+ const blockToUse = props.block.repeat?.collection
67
68
  ? props.block
68
69
  : getProcessedBlock({
69
70
  block: props.block,
@@ -73,6 +74,16 @@ function Block(props: BlockProps) {
73
74
  context: props.context.context,
74
75
  shouldEvaluateBindings: true,
75
76
  });
77
+ _processedBlock.value = blockToUse;
78
+ _processedBlock.update = false;
79
+ return blockToUse;
80
+ }
81
+
82
+ function blockComponent() {
83
+ return getComponent({
84
+ block: processedBlock(),
85
+ registeredComponents: props.registeredComponents,
86
+ });
76
87
  }
77
88
 
78
89
  function Tag() {
@@ -143,11 +154,15 @@ function Block(props: BlockProps) {
143
154
 
144
155
  useEffect(() => {}, []);
145
156
 
157
+ useEffect(() => {
158
+ _processedBlock.update = true;
159
+ });
160
+
146
161
  return (
147
162
  <>
148
163
  {canShowBlock() ? (
149
164
  <>
150
- <BlockStyles block={props.block} context={props.context} />
165
+ <BlockStyles block={processedBlock()} context={props.context} />
151
166
  {!blockComponent?.()?.noWrap ? (
152
167
  <>
153
168
  {!repeatItem() ? (
@@ -201,19 +216,29 @@ function Block(props: BlockProps) {
201
216
  </>
202
217
  )}
203
218
  </>
219
+ ) : !repeatItem() ? (
220
+ <ComponentRef
221
+ componentRef={componentRefProps().componentRef}
222
+ componentOptions={componentRefProps().componentOptions}
223
+ blockChildren={componentRefProps().blockChildren}
224
+ context={componentRefProps().context}
225
+ registeredComponents={componentRefProps().registeredComponents}
226
+ linkComponent={componentRefProps().linkComponent}
227
+ builderBlock={componentRefProps().builderBlock}
228
+ includeBlockProps={componentRefProps().includeBlockProps}
229
+ isInteractive={componentRefProps().isInteractive}
230
+ />
204
231
  ) : (
205
232
  <>
206
- <ComponentRef
207
- componentRef={componentRefProps().componentRef}
208
- componentOptions={componentRefProps().componentOptions}
209
- blockChildren={componentRefProps().blockChildren}
210
- context={componentRefProps().context}
211
- registeredComponents={componentRefProps().registeredComponents}
212
- linkComponent={componentRefProps().linkComponent}
213
- builderBlock={componentRefProps().builderBlock}
214
- includeBlockProps={componentRefProps().includeBlockProps}
215
- isInteractive={componentRefProps().isInteractive}
216
- />
233
+ {repeatItem()?.map((data, index) => (
234
+ <RepeatedBlock
235
+ key={index}
236
+ repeatContext={data.context}
237
+ block={data.block}
238
+ registeredComponents={props.registeredComponents}
239
+ linkComponent={props.linkComponent}
240
+ />
241
+ ))}
217
242
  </>
218
243
  )}
219
244
  </>
@@ -24,7 +24,6 @@ import {
24
24
  import { TARGET } from "../../../constants/target";
25
25
  import type { BuilderContextInterface } from "../../../context/types";
26
26
  import { camelToKebabCase } from "../../../functions/camel-to-kebab-case";
27
- import { getProcessedBlock } from "../../../functions/get-processed-block";
28
27
  import { createCssClass } from "../../../helpers/css";
29
28
  import { checkIsDefined } from "../../../helpers/nullable";
30
29
  import type { BuilderBlock } from "../../../types/builder-block";
@@ -32,14 +31,7 @@ import InlinedStyles from "../../inlined-styles";
32
31
 
33
32
  function BlockStyles(props: BlockStylesProps) {
34
33
  function canShowBlock() {
35
- const processedBlock = getProcessedBlock({
36
- block: props.block,
37
- localState: props.context.localState,
38
- rootState: props.context.rootState,
39
- rootSetState: props.context.rootSetState,
40
- context: props.context.context,
41
- shouldEvaluateBindings: true,
42
- });
34
+ const processedBlock = props.block;
43
35
  // only render styles for blocks that are visible
44
36
  if (checkIsDefined(processedBlock.hide)) {
45
37
  return !processedBlock.hide;
@@ -51,14 +43,7 @@ function BlockStyles(props: BlockStylesProps) {
51
43
  }
52
44
 
53
45
  function css() {
54
- const processedBlock = getProcessedBlock({
55
- block: props.block,
56
- localState: props.context.localState,
57
- rootState: props.context.rootState,
58
- rootSetState: props.context.rootSetState,
59
- context: props.context.context,
60
- shouldEvaluateBindings: true,
61
- });
46
+ const processedBlock = props.block;
62
47
  const styles = processedBlock.responsiveStyles;
63
48
  const content = props.context.content;
64
49
  const sizesWithUpdatedBreakpoints = getSizesForBreakpoints(
@@ -1 +1 @@
1
- export const SDK_VERSION = "2.0.11"
1
+ export const SDK_VERSION = "2.0.13"
@@ -2,6 +2,20 @@ import { logger } from '../../helpers/logger';
2
2
  import { chooseBrowserOrServerEval } from './choose-eval';
3
3
  import type { EvaluatorArgs, ExecutorArgs } from './helpers';
4
4
  import { getBuilderGlobals, parseCode } from './helpers';
5
+
6
+ // Caching is dangerous for several reasons
7
+ // - JSON.stringify is not safe to run on things like `context`
8
+ // because anything can be passed, including non-stringifiable objects,
9
+ // circiular references, etc.
10
+ // - JSON.stringify is expensive to run as a cache key
11
+ // - This likely only helped because we were running processBlock multiple times
12
+ // but that is not fixed, and this will cause bugs and issues if enabled
13
+ //
14
+ // Perhaps the best approach is to allow users to configure if caching is enabled or not
15
+ // for instance on edge runtimes with slower evaluation times via the interpreter
16
+ // That said, the repeat processBLock calls was making any evaluation time 10x+ slower
17
+ // which is now fixed, so this still may not be necessary
18
+ const DISABLE_CACHE = true;
5
19
  type EvalValue = unknown;
6
20
  class EvalCache {
7
21
  static cacheLimit = 20;
@@ -53,7 +67,7 @@ export function evaluate({
53
67
  rootState,
54
68
  localState
55
69
  };
56
- if (enableCache) {
70
+ if (enableCache && !DISABLE_CACHE) {
57
71
  const cacheKey = EvalCache.getCacheKey(args);
58
72
  const cachedValue = EvalCache.getCachedValue(cacheKey);
59
73
  if (cachedValue) {
@@ -22,6 +22,7 @@ import type { IsolateOptions } from 'isolated-vm';
22
22
  * from a server-only location, such as:
23
23
  * - The NextJS Pages router's `_document.tsx`
24
24
  * - Your Remix route's `loader`
25
+ * - Qwik's `entry.ssr.tsx` file
25
26
  */
26
27
  export const initializeNodeRuntime = (args?: {
27
28
  ivmIsolateOptions?: IsolateOptions;
@@ -80,7 +80,7 @@ export const setIvm = (ivm: IsolatedVMImport, options: IsolateOptions = {}) => {
80
80
  };
81
81
 
82
82
  // only mention the script for SDKs that have it.
83
- const SHOULD_MENTION_INITIALIZE_SCRIPT = SDK_NAME === '@builder.io/sdk-react-nextjs' || SDK_NAME === '@builder.io/sdk-react';
83
+ const SHOULD_MENTION_INITIALIZE_SCRIPT = SDK_NAME === '@builder.io/sdk-react-nextjs' || SDK_NAME === '@builder.io/sdk-react' || SDK_NAME === '@builder.io/sdk-qwik';
84
84
  const getIvm = (): IsolatedVMImport => {
85
85
  try {
86
86
  if (IVM_INSTANCE) return IVM_INSTANCE;
@@ -93,7 +93,7 @@ const getIvm = (): IsolatedVMImport => {
93
93
 
94
94
  SOLUTION: In a server-only execution path within your application, do one of the following:
95
95
 
96
- ${SHOULD_MENTION_INITIALIZE_SCRIPT ? '- import and call `initializeNodeRuntime()` from "${SDK_NAME}/node/init".' : ''}
96
+ ${SHOULD_MENTION_INITIALIZE_SCRIPT ? `- import and call \`initializeNodeRuntime()\` from "${SDK_NAME}/node/init".` : ''}
97
97
  - add the following import: \`await import('isolated-vm')\`.
98
98
 
99
99
  For more information, visit https://builder.io/c/docs/integration-tips#enabling-data-bindings-in-node-environments`;
@@ -1,9 +1,60 @@
1
+ import { TARGET } from '../constants/target';
1
2
  import type { BuilderContextInterface } from '../context/types';
3
+ import { omit } from '../helpers/omit';
2
4
  import type { BuilderBlock } from '../types/builder-block';
3
5
  import { evaluate } from './evaluate/index';
4
6
  import { fastClone } from './fast-clone';
5
7
  import { set } from './set';
6
8
  import { transformBlock } from './transform-block';
9
+
10
+ // Deep clone a block but without cloning any child blocks
11
+ export function deepCloneWithConditions<T = any>(obj: T): T {
12
+ if (obj === null || typeof obj !== 'object') {
13
+ return obj;
14
+ }
15
+ if (Array.isArray(obj)) {
16
+ return (obj.map((item: any) => deepCloneWithConditions(item)) as T);
17
+ }
18
+ if ((obj as any)['@type'] === '@builder.io/sdk:Element') {
19
+ return obj;
20
+ }
21
+ const clonedObj: any = {};
22
+ for (const key in obj) {
23
+ if (key !== 'meta' && Object.prototype.hasOwnProperty.call(obj, key)) {
24
+ clonedObj[key] = deepCloneWithConditions(obj[key]);
25
+ }
26
+ }
27
+ return clonedObj;
28
+ }
29
+ const IS_SDK_WITHOUT_CACHED_PROCESSED_BLOCK = ['svelte', 'vue', 'angular', 'qwik', 'solid'].includes(TARGET);
30
+ const getCopy = (block: BuilderBlock): BuilderBlock => {
31
+ if (IS_SDK_WITHOUT_CACHED_PROCESSED_BLOCK) {
32
+ const copy = fastClone(block);
33
+ const copied = {
34
+ ...copy,
35
+ properties: {
36
+ ...copy.properties
37
+ },
38
+ actions: {
39
+ ...copy.actions
40
+ }
41
+ };
42
+ return copied;
43
+ } else {
44
+ const copy = (deepCloneWithConditions(omit(block, 'children', 'meta')) as BuilderBlock);
45
+ return {
46
+ ...copy,
47
+ properties: {
48
+ ...copy.properties
49
+ },
50
+ actions: {
51
+ ...copy.actions
52
+ },
53
+ children: block.children,
54
+ meta: block.meta
55
+ };
56
+ }
57
+ };
7
58
  const evaluateBindings = ({
8
59
  block,
9
60
  context,
@@ -16,16 +67,7 @@ const evaluateBindings = ({
16
67
  if (!block.bindings) {
17
68
  return block;
18
69
  }
19
- const copy = fastClone(block);
20
- const copied = {
21
- ...copy,
22
- properties: {
23
- ...copy.properties
24
- },
25
- actions: {
26
- ...copy.actions
27
- }
28
- };
70
+ const copied = getCopy(block);
29
71
  for (const binding in block.bindings) {
30
72
  const expression = block.bindings[binding];
31
73
  const value = evaluate({