@builder.io/sdk-svelte 1.0.11 → 1.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 (133) hide show
  1. package/lib/browser/blocks/BaseText.svelte +1 -3
  2. package/lib/browser/blocks/button/button.svelte +2 -3
  3. package/lib/browser/blocks/columns/columns.svelte +3 -5
  4. package/lib/browser/blocks/form/form/form.svelte +5 -7
  5. package/lib/browser/blocks/form/submit-button/submit-button.svelte +2 -4
  6. package/lib/browser/blocks/image/image.svelte +4 -7
  7. package/lib/browser/blocks/symbol/symbol.svelte +1 -1
  8. package/lib/browser/blocks/video/video.svelte +2 -5
  9. package/lib/browser/components/block/block.helpers.d.ts +4 -0
  10. package/lib/browser/components/block/block.helpers.js +14 -1
  11. package/lib/browser/components/block/block.svelte +4 -10
  12. package/lib/browser/components/block/components/block-wrapper.svelte +2 -4
  13. package/lib/browser/components/block/components/interactive-element.svelte +2 -4
  14. package/lib/browser/components/blocks/blocks-wrapper.svelte +1 -3
  15. package/lib/browser/components/blocks/blocks.svelte +2 -2
  16. package/lib/browser/components/content/components/enable-editor.svelte +8 -5
  17. package/lib/browser/components/content/components/enable-editor.svelte.d.ts +1 -1
  18. package/lib/browser/components/content/components/styles.helpers.d.ts +1 -0
  19. package/lib/browser/components/content/components/styles.helpers.js +21 -0
  20. package/lib/browser/components/content/components/styles.svelte +3 -18
  21. package/lib/browser/components/content/components/styles.svelte.d.ts +2 -0
  22. package/lib/browser/components/content/content.svelte +5 -5
  23. package/lib/browser/components/content/content.svelte.d.ts +1 -0
  24. package/lib/browser/components/content/contentProps.types.d.ts +6 -1
  25. package/lib/browser/components/content-variants/content-variants.svelte +4 -4
  26. package/lib/browser/components/content-variants/content-variants.svelte.d.ts +2 -2
  27. package/lib/browser/components/dynamic-renderer/dynamic-renderer.svelte +4 -6
  28. package/lib/browser/constants/sdk-version.d.ts +1 -1
  29. package/lib/browser/constants/sdk-version.js +1 -1
  30. package/lib/browser/functions/evaluate/browser-runtime/browser.js +1 -1
  31. package/lib/browser/functions/evaluate/evaluate.d.ts +3 -1
  32. package/lib/browser/functions/evaluate/evaluate.js +39 -3
  33. package/lib/browser/functions/evaluate/helpers.d.ts +1 -0
  34. package/lib/browser/functions/get-block-actions-handler.js +2 -1
  35. package/lib/browser/functions/get-processed-block.js +2 -1
  36. package/lib/edge/blocks/BaseText.svelte +1 -3
  37. package/lib/edge/blocks/button/button.svelte +2 -3
  38. package/lib/edge/blocks/columns/columns.svelte +3 -5
  39. package/lib/edge/blocks/form/form/form.svelte +5 -7
  40. package/lib/edge/blocks/form/submit-button/submit-button.svelte +2 -4
  41. package/lib/edge/blocks/image/image.svelte +4 -7
  42. package/lib/edge/blocks/symbol/symbol.svelte +1 -1
  43. package/lib/edge/blocks/video/video.svelte +2 -5
  44. package/lib/edge/components/block/block.helpers.d.ts +4 -0
  45. package/lib/edge/components/block/block.helpers.js +14 -1
  46. package/lib/edge/components/block/block.svelte +4 -10
  47. package/lib/edge/components/block/components/block-wrapper.svelte +2 -4
  48. package/lib/edge/components/block/components/interactive-element.svelte +2 -4
  49. package/lib/edge/components/blocks/blocks-wrapper.svelte +1 -3
  50. package/lib/edge/components/blocks/blocks.svelte +2 -2
  51. package/lib/edge/components/content/components/enable-editor.svelte +8 -5
  52. package/lib/edge/components/content/components/enable-editor.svelte.d.ts +1 -1
  53. package/lib/edge/components/content/components/styles.helpers.d.ts +1 -0
  54. package/lib/edge/components/content/components/styles.helpers.js +21 -0
  55. package/lib/edge/components/content/components/styles.svelte +3 -18
  56. package/lib/edge/components/content/components/styles.svelte.d.ts +2 -0
  57. package/lib/edge/components/content/content.svelte +5 -5
  58. package/lib/edge/components/content/content.svelte.d.ts +1 -0
  59. package/lib/edge/components/content/contentProps.types.d.ts +6 -1
  60. package/lib/edge/components/content-variants/content-variants.svelte +4 -4
  61. package/lib/edge/components/content-variants/content-variants.svelte.d.ts +2 -2
  62. package/lib/edge/components/dynamic-renderer/dynamic-renderer.svelte +4 -6
  63. package/lib/edge/constants/sdk-version.d.ts +1 -1
  64. package/lib/edge/constants/sdk-version.js +1 -1
  65. package/lib/edge/functions/evaluate/browser-runtime/browser.js +1 -1
  66. package/lib/edge/functions/evaluate/evaluate.d.ts +3 -1
  67. package/lib/edge/functions/evaluate/evaluate.js +39 -3
  68. package/lib/edge/functions/evaluate/helpers.d.ts +1 -0
  69. package/lib/edge/functions/get-block-actions-handler.js +2 -1
  70. package/lib/edge/functions/get-processed-block.js +2 -1
  71. package/lib/node/blocks/BaseText.svelte +1 -3
  72. package/lib/node/blocks/button/button.svelte +2 -3
  73. package/lib/node/blocks/columns/columns.svelte +3 -5
  74. package/lib/node/blocks/form/form/form.svelte +5 -7
  75. package/lib/node/blocks/form/submit-button/submit-button.svelte +2 -4
  76. package/lib/node/blocks/image/image.svelte +4 -7
  77. package/lib/node/blocks/symbol/symbol.svelte +1 -1
  78. package/lib/node/blocks/video/video.svelte +2 -5
  79. package/lib/node/components/block/block.helpers.d.ts +4 -0
  80. package/lib/node/components/block/block.helpers.js +14 -1
  81. package/lib/node/components/block/block.svelte +4 -10
  82. package/lib/node/components/block/components/block-wrapper.svelte +2 -4
  83. package/lib/node/components/block/components/interactive-element.svelte +2 -4
  84. package/lib/node/components/blocks/blocks-wrapper.svelte +1 -3
  85. package/lib/node/components/blocks/blocks.svelte +2 -2
  86. package/lib/node/components/content/components/enable-editor.svelte +8 -5
  87. package/lib/node/components/content/components/enable-editor.svelte.d.ts +1 -1
  88. package/lib/node/components/content/components/styles.helpers.d.ts +1 -0
  89. package/lib/node/components/content/components/styles.helpers.js +21 -0
  90. package/lib/node/components/content/components/styles.svelte +3 -18
  91. package/lib/node/components/content/components/styles.svelte.d.ts +2 -0
  92. package/lib/node/components/content/content.svelte +5 -5
  93. package/lib/node/components/content/content.svelte.d.ts +1 -0
  94. package/lib/node/components/content/contentProps.types.d.ts +6 -1
  95. package/lib/node/components/content-variants/content-variants.svelte +4 -4
  96. package/lib/node/components/content-variants/content-variants.svelte.d.ts +2 -2
  97. package/lib/node/components/dynamic-renderer/dynamic-renderer.svelte +4 -6
  98. package/lib/node/constants/sdk-version.d.ts +1 -1
  99. package/lib/node/constants/sdk-version.js +1 -1
  100. package/lib/node/functions/evaluate/browser-runtime/browser.js +1 -1
  101. package/lib/node/functions/evaluate/evaluate.d.ts +3 -1
  102. package/lib/node/functions/evaluate/evaluate.js +39 -3
  103. package/lib/node/functions/evaluate/helpers.d.ts +1 -0
  104. package/lib/node/functions/get-block-actions-handler.js +2 -1
  105. package/lib/node/functions/get-processed-block.js +2 -1
  106. package/package.json +1 -1
  107. package/src/blocks/BaseText.svelte +1 -3
  108. package/src/blocks/button/button.svelte +2 -3
  109. package/src/blocks/columns/columns.svelte +3 -5
  110. package/src/blocks/form/form/form.svelte +5 -7
  111. package/src/blocks/form/submit-button/submit-button.svelte +2 -4
  112. package/src/blocks/image/image.svelte +4 -7
  113. package/src/blocks/symbol/symbol.svelte +1 -1
  114. package/src/blocks/video/video.svelte +2 -5
  115. package/src/components/block/block.helpers.ts +20 -1
  116. package/src/components/block/block.svelte +8 -11
  117. package/src/components/block/components/block-wrapper.svelte +2 -4
  118. package/src/components/block/components/interactive-element.svelte +2 -4
  119. package/src/components/blocks/blocks-wrapper.svelte +1 -3
  120. package/src/components/blocks/blocks.svelte +2 -2
  121. package/src/components/content/components/enable-editor.svelte +22 -10
  122. package/src/components/content/components/styles.helpers.ts +21 -0
  123. package/src/components/content/components/styles.svelte +4 -18
  124. package/src/components/content/content.svelte +5 -5
  125. package/src/components/content/contentProps.types.ts +6 -1
  126. package/src/components/content-variants/content-variants.svelte +5 -5
  127. package/src/components/dynamic-renderer/dynamic-renderer.svelte +4 -6
  128. package/src/constants/sdk-version.ts +1 -1
  129. package/src/functions/evaluate/browser-runtime/browser.ts +1 -1
  130. package/src/functions/evaluate/evaluate.ts +44 -4
  131. package/src/functions/evaluate/helpers.ts +1 -0
  132. package/src/functions/get-block-actions-handler.ts +2 -1
  133. package/src/functions/get-processed-block.ts +2 -1
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * For internal use only. Do not provide this prop.
5
5
  */
6
- __isNestedRender?: boolean;
6
+ isNestedRender?: boolean;
7
7
  };
8
8
  </script>
9
9
 
@@ -26,7 +26,7 @@
26
26
 
27
27
  export let canTrack: VariantsProviderProps["canTrack"] = undefined;
28
28
  export let content: VariantsProviderProps["content"] = undefined;
29
- export let __isNestedRender: VariantsProviderProps["__isNestedRender"] =
29
+ export let isNestedRender: VariantsProviderProps["isNestedRender"] =
30
30
  undefined;
31
31
  export let model: VariantsProviderProps["model"] = undefined;
32
32
  export let data: VariantsProviderProps["data"] = undefined;
@@ -86,7 +86,7 @@
86
86
  });
87
87
  </script>
88
88
 
89
- {#if !__isNestedRender && TARGET !== "reactNative"}
89
+ {#if !isNestedRender && TARGET !== "reactNative"}
90
90
  <InlinedScript scriptStr={getScriptString()} />
91
91
  {/if}
92
92
 
@@ -95,11 +95,11 @@
95
95
  id={`variants-styles-${content?.id}`}
96
96
  styles={hideVariantsStyleString()}
97
97
  />
98
-
99
98
  <InlinedScript scriptStr={updateCookieAndStylesScriptStr()} />
100
99
 
101
100
  {#each getVariants(content) as variant (variant.testVariationId)}
102
101
  <ContentComponent
102
+ {isNestedRender}
103
103
  content={variant}
104
104
  showContent={false}
105
105
  {model}
@@ -121,8 +121,8 @@
121
121
  />
122
122
  {/each}
123
123
  {/if}
124
-
125
124
  <ContentComponent
125
+ {isNestedRender}
126
126
  {...{}}
127
127
  content={defaultContent()}
128
128
  showContent={true}
@@ -21,14 +21,12 @@
21
21
  <svelte:element
22
22
  this={TagName}
23
23
  {...attributes}
24
- use:setAttrs={actionAttributes}
24
+ use:setAttrs={actionAttributes}><slot /></svelte:element
25
25
  >
26
- <slot />
27
- </svelte:element>
28
26
  {:else}
29
- <svelte:component this={TagName} {...attributes} {...actionAttributes}>
30
- <slot />
31
- </svelte:component>
27
+ <svelte:component this={TagName} {...attributes} {...actionAttributes}
28
+ ><slot /></svelte:component
29
+ >
32
30
  {/if}
33
31
  {:else}
34
32
  <svelte:element
@@ -1 +1 @@
1
- export const SDK_VERSION = "1.0.11"
1
+ export const SDK_VERSION = "1.0.13"
@@ -37,7 +37,7 @@ export function flattenState({
37
37
  return localState[prop];
38
38
  }
39
39
  const val = target[prop];
40
- if (typeof val === 'object') {
40
+ if (typeof val === 'object' && val !== null) {
41
41
  return flattenState({
42
42
  rootState: val,
43
43
  localState: undefined,
@@ -2,6 +2,33 @@ import { logger } from '../../helpers/logger.js';
2
2
  import { chooseBrowserOrServerEval } from './choose-eval.js';
3
3
  import type { EvaluatorArgs, ExecutorArgs } from './helpers.js';
4
4
  import { getBuilderGlobals, parseCode } from './helpers.js';
5
+ type EvalValue = unknown;
6
+ class EvalCache {
7
+ static cacheLimit = 20;
8
+ static cache = new Map<string, {
9
+ value: EvalValue;
10
+ } | undefined>();
11
+ static getCacheKey(args: ExecutorArgs) {
12
+ return JSON.stringify({
13
+ ...args,
14
+ // replace the event with a random number to break cache
15
+ // thats because we can't serialize the event object due to circular refs in DOM node refs.
16
+ event: args.event ? Math.random() : undefined
17
+ });
18
+ }
19
+ static getCachedValue(key: string) {
20
+ const cachedVal = EvalCache.cache.get(key);
21
+ return cachedVal;
22
+ }
23
+ static setCachedValue(key: string, value: EvalValue) {
24
+ if (EvalCache.cache.size > 20) {
25
+ EvalCache.cache.delete(EvalCache.cache.keys().next().value);
26
+ }
27
+ EvalCache.cache.set(key, {
28
+ value
29
+ });
30
+ }
31
+ }
5
32
  export function evaluate({
6
33
  code,
7
34
  context,
@@ -9,11 +36,12 @@ export function evaluate({
9
36
  rootState,
10
37
  rootSetState,
11
38
  event,
12
- isExpression = true
13
- }: EvaluatorArgs): any {
39
+ isExpression = true,
40
+ enableCache
41
+ }: EvaluatorArgs): EvalValue {
14
42
  if (code === '') {
15
43
  logger.warn('Skipping evaluation of empty code block.');
16
- return;
44
+ return undefined;
17
45
  }
18
46
  const args: ExecutorArgs = {
19
47
  code: parseCode(code, {
@@ -26,8 +54,20 @@ export function evaluate({
26
54
  rootState,
27
55
  localState
28
56
  };
57
+ if (enableCache) {
58
+ const cacheKey = EvalCache.getCacheKey(args);
59
+ const cachedValue = EvalCache.getCachedValue(cacheKey);
60
+ if (cachedValue) {
61
+ return cachedValue.value;
62
+ }
63
+ }
29
64
  try {
30
- return chooseBrowserOrServerEval(args);
65
+ const newEval = chooseBrowserOrServerEval(args);
66
+ if (enableCache) {
67
+ const cacheKey = EvalCache.getCacheKey(args);
68
+ EvalCache.setCachedValue(cacheKey, newEval);
69
+ }
70
+ return newEval;
31
71
  } catch (e: any) {
32
72
  logger.error('Failed code evaluation: ' + e.message, {
33
73
  code
@@ -5,6 +5,7 @@ import { getUserAttributes } from '../track/helpers.js';
5
5
  export type EvaluatorArgs = Omit<ExecutorArgs, 'builder' | 'event'> & {
6
6
  event?: Event;
7
7
  isExpression?: boolean;
8
+ enableCache: boolean;
8
9
  };
9
10
  export type BuilderGlobals = {
10
11
  isEditing: boolean | undefined;
@@ -12,5 +12,6 @@ export const createEventHandler = (value: string, options: Options): EventHandle
12
12
  rootState: options.rootState,
13
13
  rootSetState: options.rootSetState,
14
14
  event,
15
- isExpression: false
15
+ isExpression: false,
16
+ enableCache: true
16
17
  })
@@ -33,7 +33,8 @@ const evaluateBindings = ({
33
33
  localState,
34
34
  rootState,
35
35
  rootSetState,
36
- context
36
+ context,
37
+ enableCache: true
37
38
  });
38
39
  set(copied, binding, value);
39
40
  }