@builder.io/sdk-svelte 4.2.1 → 4.2.4

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 (125) hide show
  1. package/lib/browser/blocks/form/form/form.svelte +4 -5
  2. package/lib/browser/blocks/img/component-info.js +33 -3
  3. package/lib/browser/blocks/img/img.svelte +18 -6
  4. package/lib/browser/blocks/symbol/symbol.svelte +5 -2
  5. package/lib/browser/blocks/symbol/symbol.svelte.d.ts +1 -1
  6. package/lib/browser/blocks/symbol/symbol.types.d.ts +1 -2
  7. package/lib/browser/blocks/tabs/tabs.svelte +5 -4
  8. package/lib/browser/blocks/tabs/tabs.svelte.d.ts +1 -1
  9. package/lib/browser/blocks/text/component-info.js +0 -1
  10. package/lib/browser/components/awaiter.types.d.ts +7 -0
  11. package/lib/browser/components/awaiter.types.js +1 -0
  12. package/lib/browser/components/block/block.svelte +2 -2
  13. package/lib/browser/components/block/components/component-ref/component-ref.svelte +8 -8
  14. package/lib/browser/components/block/components/component-ref/component-ref.svelte.d.ts +2 -2
  15. package/lib/browser/components/block/components/interactive-element.svelte +8 -1
  16. package/lib/browser/components/block/components/live-edit-block-styles.svelte +114 -0
  17. package/lib/browser/components/block/components/live-edit-block-styles.svelte.d.ts +22 -0
  18. package/lib/browser/components/block/components/style-wrapper.svelte +25 -0
  19. package/lib/browser/components/block/components/style-wrapper.svelte.d.ts +23 -0
  20. package/lib/browser/components/content/components/enable-editor.svelte +30 -9
  21. package/lib/browser/components/live-edit.svelte +20 -0
  22. package/lib/browser/components/live-edit.svelte.d.ts +26 -0
  23. package/lib/browser/constants/sdk-version.d.ts +1 -1
  24. package/lib/browser/constants/sdk-version.js +1 -1
  25. package/lib/browser/functions/get-builder-search-params/index.d.ts +8 -2
  26. package/lib/browser/functions/get-builder-search-params/index.js +8 -2
  27. package/lib/browser/functions/get-content/generate-content-url.js +3 -8
  28. package/lib/browser/functions/get-content/index.js +8 -0
  29. package/lib/browser/functions/is-previewing.d.ts +11 -1
  30. package/lib/browser/functions/is-previewing.js +14 -4
  31. package/lib/browser/helpers/find-block.d.ts +18 -0
  32. package/lib/browser/helpers/find-block.js +41 -0
  33. package/lib/browser/helpers/subscribe-to-editor.d.ts +3 -2
  34. package/lib/browser/helpers/subscribe-to-editor.js +4 -2
  35. package/lib/edge/blocks/form/form/form.svelte +4 -5
  36. package/lib/edge/blocks/img/component-info.js +33 -3
  37. package/lib/edge/blocks/img/img.svelte +18 -6
  38. package/lib/edge/blocks/symbol/symbol.svelte +5 -2
  39. package/lib/edge/blocks/symbol/symbol.svelte.d.ts +1 -1
  40. package/lib/edge/blocks/symbol/symbol.types.d.ts +1 -2
  41. package/lib/edge/blocks/tabs/tabs.svelte +5 -4
  42. package/lib/edge/blocks/tabs/tabs.svelte.d.ts +1 -1
  43. package/lib/edge/blocks/text/component-info.js +0 -1
  44. package/lib/edge/components/awaiter.types.d.ts +7 -0
  45. package/lib/edge/components/awaiter.types.js +1 -0
  46. package/lib/edge/components/block/block.svelte +2 -2
  47. package/lib/edge/components/block/components/component-ref/component-ref.svelte +8 -8
  48. package/lib/edge/components/block/components/component-ref/component-ref.svelte.d.ts +2 -2
  49. package/lib/edge/components/block/components/interactive-element.svelte +8 -1
  50. package/lib/edge/components/block/components/live-edit-block-styles.svelte +114 -0
  51. package/lib/edge/components/block/components/live-edit-block-styles.svelte.d.ts +22 -0
  52. package/lib/edge/components/block/components/style-wrapper.svelte +25 -0
  53. package/lib/edge/components/block/components/style-wrapper.svelte.d.ts +23 -0
  54. package/lib/edge/components/content/components/enable-editor.svelte +30 -9
  55. package/lib/edge/components/live-edit.svelte +20 -0
  56. package/lib/edge/components/live-edit.svelte.d.ts +26 -0
  57. package/lib/edge/constants/sdk-version.d.ts +1 -1
  58. package/lib/edge/constants/sdk-version.js +1 -1
  59. package/lib/edge/functions/get-builder-search-params/index.d.ts +8 -2
  60. package/lib/edge/functions/get-builder-search-params/index.js +8 -2
  61. package/lib/edge/functions/get-content/generate-content-url.js +3 -8
  62. package/lib/edge/functions/get-content/index.js +8 -0
  63. package/lib/edge/functions/is-previewing.d.ts +11 -1
  64. package/lib/edge/functions/is-previewing.js +14 -4
  65. package/lib/edge/helpers/find-block.d.ts +18 -0
  66. package/lib/edge/helpers/find-block.js +41 -0
  67. package/lib/edge/helpers/subscribe-to-editor.d.ts +3 -2
  68. package/lib/edge/helpers/subscribe-to-editor.js +4 -2
  69. package/lib/node/blocks/form/form/form.svelte +4 -5
  70. package/lib/node/blocks/img/component-info.js +33 -3
  71. package/lib/node/blocks/img/img.svelte +18 -6
  72. package/lib/node/blocks/symbol/symbol.svelte +5 -2
  73. package/lib/node/blocks/symbol/symbol.svelte.d.ts +1 -1
  74. package/lib/node/blocks/symbol/symbol.types.d.ts +1 -2
  75. package/lib/node/blocks/tabs/tabs.svelte +5 -4
  76. package/lib/node/blocks/tabs/tabs.svelte.d.ts +1 -1
  77. package/lib/node/blocks/text/component-info.js +0 -1
  78. package/lib/node/components/awaiter.types.d.ts +7 -0
  79. package/lib/node/components/awaiter.types.js +1 -0
  80. package/lib/node/components/block/block.svelte +2 -2
  81. package/lib/node/components/block/components/component-ref/component-ref.svelte +8 -8
  82. package/lib/node/components/block/components/component-ref/component-ref.svelte.d.ts +2 -2
  83. package/lib/node/components/block/components/interactive-element.svelte +8 -1
  84. package/lib/node/components/block/components/live-edit-block-styles.svelte +114 -0
  85. package/lib/node/components/block/components/live-edit-block-styles.svelte.d.ts +22 -0
  86. package/lib/node/components/block/components/style-wrapper.svelte +25 -0
  87. package/lib/node/components/block/components/style-wrapper.svelte.d.ts +23 -0
  88. package/lib/node/components/content/components/enable-editor.svelte +30 -9
  89. package/lib/node/components/live-edit.svelte +20 -0
  90. package/lib/node/components/live-edit.svelte.d.ts +26 -0
  91. package/lib/node/constants/sdk-version.d.ts +1 -1
  92. package/lib/node/constants/sdk-version.js +1 -1
  93. package/lib/node/functions/get-builder-search-params/index.d.ts +8 -2
  94. package/lib/node/functions/get-builder-search-params/index.js +8 -2
  95. package/lib/node/functions/get-content/generate-content-url.js +3 -8
  96. package/lib/node/functions/get-content/index.js +8 -0
  97. package/lib/node/functions/is-previewing.d.ts +11 -1
  98. package/lib/node/functions/is-previewing.js +14 -4
  99. package/lib/node/helpers/find-block.d.ts +18 -0
  100. package/lib/node/helpers/find-block.js +41 -0
  101. package/lib/node/helpers/subscribe-to-editor.d.ts +3 -2
  102. package/lib/node/helpers/subscribe-to-editor.js +4 -2
  103. package/package.json +1 -1
  104. package/src/blocks/form/form/form.svelte +4 -5
  105. package/src/blocks/img/component-info.ts +33 -3
  106. package/src/blocks/img/img.svelte +22 -6
  107. package/src/blocks/symbol/symbol.svelte +5 -2
  108. package/src/blocks/symbol/symbol.types.ts +1 -1
  109. package/src/blocks/tabs/tabs.svelte +5 -4
  110. package/src/blocks/text/component-info.ts +0 -1
  111. package/src/components/awaiter.types.ts +7 -0
  112. package/src/components/block/block.svelte +2 -2
  113. package/src/components/block/components/component-ref/component-ref.svelte +8 -10
  114. package/src/components/block/components/interactive-element.svelte +7 -0
  115. package/src/components/block/components/live-edit-block-styles.svelte +146 -0
  116. package/src/components/block/components/style-wrapper.svelte +41 -0
  117. package/src/components/content/components/enable-editor.svelte +32 -9
  118. package/src/components/live-edit.svelte +32 -0
  119. package/src/constants/sdk-version.ts +1 -1
  120. package/src/functions/get-builder-search-params/index.ts +8 -2
  121. package/src/functions/get-content/generate-content-url.ts +3 -8
  122. package/src/functions/get-content/index.ts +8 -0
  123. package/src/functions/is-previewing.ts +15 -4
  124. package/src/helpers/find-block.ts +40 -0
  125. package/src/helpers/subscribe-to-editor.ts +7 -4
@@ -6,13 +6,15 @@
6
6
  <script>import { isEditing } from "../../functions/is-editing";
7
7
  import { filterAttrs } from "../helpers";
8
8
  import { getSrcSet } from "../image/image.helpers";
9
- import { setAttrs } from "../helpers";
9
+ import { getClassPropName } from "../../functions/get-class-prop-name";
10
10
  export let imgSrc = undefined;
11
11
  export let image = undefined;
12
+ export let attributes = undefined;
13
+ export let altText = undefined;
14
+ export let title = undefined;
12
15
  export let backgroundSize = undefined;
13
16
  export let backgroundPosition = undefined;
14
- export let altText = undefined;
15
- export let attributes = undefined;
17
+ export let aspectRatio = undefined;
16
18
  function stringifyStyles(stylesObj) {
17
19
  let styles = "";
18
20
  for (let key in stylesObj) {
@@ -34,6 +36,15 @@ $: srcSetToUse = () => {
34
36
  }
35
37
  return getSrcSet(url);
36
38
  };
39
+ $: imgAttrs = () => {
40
+ const attrs = {
41
+ ...filterAttrs(attributes, "on:", false),
42
+ ...filterAttrs(attributes, "on:", true),
43
+ [getClassPropName()]: `builder-raw-img ${attributes[getClassPropName()] || ""}`,
44
+ };
45
+ delete attrs.style;
46
+ return attrs;
47
+ };
37
48
  </script>
38
49
 
39
50
  {#key (isEditing() && imgSrc) || "default-key"}
@@ -41,12 +52,13 @@ $: srcSetToUse = () => {
41
52
  style={stringifyStyles({
42
53
  objectFit: backgroundSize || "cover",
43
54
  objectPosition: backgroundPosition || "center",
55
+ aspectRatio: aspectRatio || undefined,
56
+ ...(attributes?.style || {}),
44
57
  })}
45
58
  loading="lazy"
46
59
  alt={altText}
60
+ {title}
47
61
  src={imgSrc || image}
48
- srcSet={srcSetToUse()}
49
- {...filterAttrs(attributes, "on:", false)}
50
- use:setAttrs={filterAttrs(attributes, "on:", true)}
62
+ {...imgAttrs()}
51
63
  />
52
64
  {/key}
@@ -6,11 +6,11 @@ import { getClassPropName } from "../../functions/get-class-prop-name";
6
6
  import { setAttrs } from "../helpers";
7
7
  import { fetchSymbolContent } from "./symbol.helpers";
8
8
  export let symbol = undefined;
9
+ export let builderComponents;
9
10
  export let attributes = undefined;
10
11
  export let dynamic = undefined;
11
12
  export let builderContext;
12
13
  export let builderBlock;
13
- export let builderComponents;
14
14
  export let builderLinkComponent = undefined;
15
15
  function setContent() {
16
16
  if (contentToUse && symbolEntry === symbol?.entry)
@@ -31,6 +31,9 @@ $: blocksWrapper = () => {
31
31
  $: contentWrapper = () => {
32
32
  return "div";
33
33
  };
34
+ $: customComponents = () => {
35
+ return Object.values(builderComponents);
36
+ };
34
37
  $: className = () => {
35
38
  return [
36
39
  ...[attributes[getClassPropName()]],
@@ -67,7 +70,7 @@ $: onUpdateFn_0(...[symbol]);
67
70
  ...$builderContext.context,
68
71
  symbolId: builderBlock?.id,
69
72
  }}
70
- customComponents={Object.values(builderComponents)}
73
+ customComponents={customComponents()}
71
74
  data={{
72
75
  ...symbol?.data,
73
76
  ...$builderContext.localState,
@@ -3,11 +3,11 @@ import type { SymbolProps } from "./symbol.types";
3
3
  declare const __propDef: {
4
4
  props: {
5
5
  symbol?: SymbolProps["symbol"];
6
+ builderComponents: SymbolProps["builderComponents"];
6
7
  attributes?: SymbolProps["attributes"];
7
8
  dynamic?: SymbolProps["dynamic"];
8
9
  builderContext: SymbolProps["builderContext"];
9
10
  builderBlock: SymbolProps["builderBlock"];
10
- builderComponents: SymbolProps["builderComponents"];
11
11
  builderLinkComponent?: SymbolProps["builderLinkComponent"];
12
12
  };
13
13
  events: {
@@ -1,6 +1,6 @@
1
1
  import type { BuilderContent } from '../../types/builder-content';
2
2
  import type { BuilderComponentsProp, BuilderDataProps, BuilderLinkComponentProp } from '../../types/builder-props';
3
- interface SymbolInfo {
3
+ export interface SymbolInfo {
4
4
  model?: string;
5
5
  entry?: string;
6
6
  data?: any;
@@ -16,4 +16,3 @@ export interface SymbolProps extends BuilderComponentsProp, BuilderDataProps, Bu
16
16
  inheritState?: boolean;
17
17
  renderToLiquid?: boolean;
18
18
  }
19
- export {};
@@ -1,9 +1,9 @@
1
1
  <script>import Blocks from "../../components/blocks/blocks.svelte";
2
2
  export let defaultActiveTab = undefined;
3
3
  export let tabs;
4
+ export let activeTabStyle = undefined;
4
5
  export let collapsible = undefined;
5
6
  export let tabHeaderLayout = undefined;
6
- export let activeTabStyle = undefined;
7
7
  export let builderBlock;
8
8
  export let builderContext;
9
9
  export let builderComponents;
@@ -21,6 +21,9 @@ function stringifyStyles(stylesObj) {
21
21
  function activeTabContent(active) {
22
22
  return tabs && tabs[active].content;
23
23
  }
24
+ function getTabStyle(index) {
25
+ return index === activeTab ? activeTabStyle : {};
26
+ }
24
27
  function onClick(index) {
25
28
  if (index === activeTab && collapsible) {
26
29
  activeTab = -1;
@@ -44,9 +47,7 @@ let activeTab = defaultActiveTab ? defaultActiveTab - 1 : 0;
44
47
  >
45
48
  {#each tabs as tab, index (index)}
46
49
  <span
47
- style={stringifyStyles({
48
- ...(activeTab === index ? activeTabStyle : {}),
49
- })}
50
+ style={stringifyStyles(getTabStyle(index))}
50
51
  class={`builder-tab-wrap ${
51
52
  activeTab === index ? "builder-tab-active" : ""
52
53
  }`}
@@ -4,9 +4,9 @@ declare const __propDef: {
4
4
  props: {
5
5
  defaultActiveTab?: TabsProps["defaultActiveTab"];
6
6
  tabs: TabsProps["tabs"];
7
+ activeTabStyle?: TabsProps["activeTabStyle"];
7
8
  collapsible?: TabsProps["collapsible"];
8
9
  tabHeaderLayout?: TabsProps["tabHeaderLayout"];
9
- activeTabStyle?: TabsProps["activeTabStyle"];
10
10
  builderBlock: TabsProps["builderBlock"];
11
11
  builderContext: TabsProps["builderContext"];
12
12
  builderComponents: TabsProps["builderComponents"];
@@ -6,7 +6,6 @@ export const componentInfo = {
6
6
  } : {},
7
7
  name: 'Text',
8
8
  static: true,
9
- isRSC: true,
10
9
  image: 'https://firebasestorage.googleapis.com/v0/b/builder-3b0a2.appspot.com/o/images%2Fbaseline-text_fields-24px%20(1).svg?alt=media&token=12177b73-0ee3-42ca-98c6-0dd003de1929',
11
10
  inputs: [{
12
11
  name: 'text',
@@ -0,0 +1,7 @@
1
+ export type AwaiterProps = {
2
+ load: () => Promise<any>;
3
+ props?: any;
4
+ attributes?: any;
5
+ fallback?: any;
6
+ children?: any;
7
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -8,10 +8,10 @@ import "../../server-index";
8
8
  import "../dynamic-div.svelte";
9
9
  import { bindAnimations } from "./animator";
10
10
  import { generateKey, getComponent, getRepeatItemData, provideBuilderBlock, provideBuilderContext, provideLinkComponent, provideRegisteredComponents, } from "./block.helpers";
11
- import BlockStyles from "./components/block-styles.svelte";
12
11
  import BlockWrapper from "./components/block-wrapper.svelte";
13
12
  import ComponentRef from "./components/component-ref/component-ref.svelte";
14
13
  import RepeatedBlock from "./components/repeated-block.svelte";
14
+ import StyleWrapper from "./components/style-wrapper.svelte";
15
15
  export let block;
16
16
  export let context;
17
17
  export let registeredComponents;
@@ -109,7 +109,7 @@ afterUpdate(() => { });
109
109
  </script>
110
110
 
111
111
  {#if canShowBlock()}
112
- <BlockStyles block={processedBlock()} context={$context} />
112
+ <StyleWrapper block={processedBlock()} context={$context} id={block.id} />
113
113
 
114
114
  {#if !blockComponent?.()?.noWrap}
115
115
  {#if !repeatItem()}
@@ -2,19 +2,17 @@
2
2
  import Block from "../../block.svelte";
3
3
  import InteractiveElement from "../interactive-element.svelte";
4
4
  import { getWrapperProps } from "./component-ref.helpers";
5
- export let componentOptions;
6
- export let blockChildren;
7
5
  export let isInteractive;
8
6
  export let componentRef;
7
+ export let componentOptions;
9
8
  export let builderBlock;
10
9
  export let context;
11
10
  export let linkComponent;
12
11
  export let includeBlockProps;
12
+ export let blockChildren;
13
13
  export let registeredComponents;
14
14
  let shouldUpdate = false;
15
15
  let Wrapper = isInteractive ? InteractiveElement : componentRef;
16
- function onUpdateFn_0(..._args) { }
17
- $: onUpdateFn_0(...[componentOptions, blockChildren]);
18
16
  </script>
19
17
 
20
18
  {#if componentRef}
@@ -31,8 +29,10 @@ $: onUpdateFn_0(...[componentOptions, blockChildren]);
31
29
  contextValue: $context,
32
30
  })}
33
31
  >
34
- {#each blockChildren as child (child.id)}
35
- <Block block={child} {context} {registeredComponents} {linkComponent} />
36
- {/each}
37
- </svelte:component>
32
+ {#if componentRef}
33
+ {#each blockChildren as child (child.id)}
34
+ <Block block={child} {context} {registeredComponents} {linkComponent} />
35
+ {/each}
36
+ {/if}</svelte:component
37
+ >
38
38
  {/if}
@@ -2,14 +2,14 @@ import { SvelteComponent } from "svelte";
2
2
  import type { ComponentProps } from "./component-ref.helpers";
3
3
  declare const __propDef: {
4
4
  props: {
5
- componentOptions: ComponentProps["componentOptions"];
6
- blockChildren: ComponentProps["blockChildren"];
7
5
  isInteractive: ComponentProps["isInteractive"];
8
6
  componentRef: ComponentProps["componentRef"];
7
+ componentOptions: ComponentProps["componentOptions"];
9
8
  builderBlock: ComponentProps["builderBlock"];
10
9
  context: ComponentProps["context"];
11
10
  linkComponent: ComponentProps["linkComponent"];
12
11
  includeBlockProps: ComponentProps["includeBlockProps"];
12
+ blockChildren: ComponentProps["blockChildren"];
13
13
  registeredComponents: ComponentProps["registeredComponents"];
14
14
  };
15
15
  events: {
@@ -1,8 +1,11 @@
1
1
  <script context="module"></script>
2
2
 
3
- <script>import { getBlockActions } from "../../../functions/get-block-actions";
3
+ <script>import { TARGET } from "../../../constants/target";
4
+ import { getBlockActions } from "../../../functions/get-block-actions";
4
5
  import { getBlockProperties } from "../../../functions/get-block-properties";
6
+ import { isEditing } from "../../../server-index";
5
7
  import Awaiter from "../../awaiter.svelte";
8
+ import LiveEdit from "../../live-edit.svelte";
6
9
  export let wrapperProps;
7
10
  export let block;
8
11
  export let includeBlockProps;
@@ -40,6 +43,10 @@ $: onUpdateFn_0(...[wrapperProps, block?.component?.options]);
40
43
  props={wrapperProps}
41
44
  attributes={attributes()}><slot /></Awaiter
42
45
  >
46
+ {:else if TARGET === "rsc" && isEditing()}
47
+ <LiveEdit {Wrapper} id={block.id || ""} attributes={attributes()}
48
+ ><slot /></LiveEdit
49
+ >
43
50
  {:else}
44
51
  <svelte:component
45
52
  this={Wrapper}
@@ -0,0 +1,114 @@
1
+ <script context="module"></script>
2
+
3
+ <script>import { getMaxWidthQueryForSize, getSizesForBreakpoints, } from "../../../constants/device-sizes";
4
+ import { TARGET } from "../../../constants/target";
5
+ import { camelToKebabCase } from "../../../functions/camel-to-kebab-case";
6
+ import { getProcessedBlock } from "../../../functions/get-processed-block";
7
+ import { createCssClass } from "../../../helpers/css";
8
+ import { findBlockById } from "../../../helpers/find-block";
9
+ import { checkIsDefined } from "../../../helpers/nullable";
10
+ import InlinedStyles from "../../inlined-styles.svelte";
11
+ export let contextProvider;
12
+ export let id = undefined;
13
+ $: block = () => {
14
+ return findBlockById(contextProvider.content, id);
15
+ };
16
+ $: processedBlock = () => {
17
+ const foundBlock = block();
18
+ if (!foundBlock) {
19
+ return null;
20
+ }
21
+ const blockToUse = foundBlock.repeat?.collection
22
+ ? foundBlock
23
+ : getProcessedBlock({
24
+ block: foundBlock,
25
+ localState: contextProvider.localState,
26
+ rootState: contextProvider.rootState,
27
+ rootSetState: contextProvider.rootSetState,
28
+ context: contextProvider.context,
29
+ });
30
+ return blockToUse;
31
+ };
32
+ $: canShowBlock = () => {
33
+ if (checkIsDefined(processedBlock?.()?.hide)) {
34
+ return !processedBlock?.()?.hide;
35
+ }
36
+ if (checkIsDefined(processedBlock?.()?.show)) {
37
+ return processedBlock?.()?.show;
38
+ }
39
+ return true;
40
+ };
41
+ $: css = () => {
42
+ const styles = processedBlock?.()?.responsiveStyles;
43
+ const content = contextProvider.content;
44
+ const sizesWithUpdatedBreakpoints = getSizesForBreakpoints(content?.meta?.breakpoints || {});
45
+ const contentHasXSmallBreakpoint = Boolean(content?.meta?.breakpoints?.xsmall);
46
+ const largeStyles = styles?.large;
47
+ const mediumStyles = styles?.medium;
48
+ const smallStyles = styles?.small;
49
+ const xsmallStyles = styles?.xsmall;
50
+ const className = processedBlock?.()?.id;
51
+ if (!className) {
52
+ return "";
53
+ }
54
+ const largeStylesClass = largeStyles
55
+ ? createCssClass({
56
+ className,
57
+ styles: largeStyles,
58
+ })
59
+ : "";
60
+ const mediumStylesClass = mediumStyles
61
+ ? createCssClass({
62
+ className,
63
+ styles: mediumStyles,
64
+ mediaQuery: getMaxWidthQueryForSize("medium", sizesWithUpdatedBreakpoints),
65
+ })
66
+ : "";
67
+ const smallStylesClass = smallStyles
68
+ ? createCssClass({
69
+ className,
70
+ styles: smallStyles,
71
+ mediaQuery: getMaxWidthQueryForSize("small", sizesWithUpdatedBreakpoints),
72
+ })
73
+ : "";
74
+ const xsmallStylesClass = xsmallStyles && contentHasXSmallBreakpoint
75
+ ? createCssClass({
76
+ className,
77
+ styles: xsmallStyles,
78
+ mediaQuery: getMaxWidthQueryForSize("xsmall", sizesWithUpdatedBreakpoints),
79
+ })
80
+ : "";
81
+ const hoverAnimation = processedBlock().animations &&
82
+ processedBlock().animations.find((item) => item.trigger === "hover");
83
+ let hoverStylesClass = "";
84
+ if (hoverAnimation) {
85
+ const hoverStyles = hoverAnimation.steps?.[1]?.styles || {};
86
+ hoverStylesClass =
87
+ createCssClass({
88
+ className: `${className}:hover`,
89
+ styles: {
90
+ ...hoverStyles,
91
+ transition: `all ${hoverAnimation.duration}s ${camelToKebabCase(hoverAnimation.easing)}`,
92
+ transitionDelay: hoverAnimation.delay
93
+ ? `${hoverAnimation.delay}s`
94
+ : "0s",
95
+ },
96
+ }) || "";
97
+ }
98
+ return [
99
+ largeStylesClass,
100
+ mediumStylesClass,
101
+ smallStylesClass,
102
+ xsmallStylesClass,
103
+ hoverStylesClass,
104
+ ].join(" ");
105
+ };
106
+ </script>
107
+
108
+ {#if TARGET === "rsc" && css() && canShowBlock()}
109
+ <InlinedStyles
110
+ id="builderio-block"
111
+ styles={css()}
112
+ nonce={contextProvider.nonce}
113
+ />
114
+ {/if}
@@ -0,0 +1,22 @@
1
+ import { SvelteComponent } from "svelte";
2
+ type LiveEditBlockStylesProps = {
3
+ id?: any;
4
+ contextProvider: BuilderContextInterface;
5
+ };
6
+ import type { BuilderContextInterface } from "../../../server-index";
7
+ declare const __propDef: {
8
+ props: {
9
+ contextProvider: LiveEditBlockStylesProps["contextProvider"];
10
+ id?: LiveEditBlockStylesProps["id"];
11
+ };
12
+ events: {
13
+ [evt: string]: CustomEvent<any>;
14
+ };
15
+ slots: {};
16
+ };
17
+ type LiveEditBlockStylesProps_ = typeof __propDef.props;
18
+ export { LiveEditBlockStylesProps_ as LiveEditBlockStylesProps };
19
+ export type LiveEditBlockStylesEvents = typeof __propDef.events;
20
+ export type LiveEditBlockStylesSlots = typeof __propDef.slots;
21
+ export default class LiveEditBlockStyles extends SvelteComponent<LiveEditBlockStylesProps, LiveEditBlockStylesEvents, LiveEditBlockStylesSlots> {
22
+ }
@@ -0,0 +1,25 @@
1
+ <script context="module"></script>
2
+
3
+ <script>import { getContext, onMount } from "svelte";
4
+ import { TARGET } from "../../../constants/target";
5
+ import { BuilderContext } from "../../../context/index";
6
+ import "../../../server-index";
7
+ import BlockStyles from "./block-styles.svelte";
8
+ import LiveEditBlockStyles from "./live-edit-block-styles.svelte";
9
+ export let block;
10
+ export let context;
11
+ let contextProvider = getContext(BuilderContext.key);
12
+ let isClientEditing = false;
13
+ let isHydrated = false;
14
+ onMount(() => { });
15
+ </script>
16
+
17
+ {#if isHydrated}
18
+ {#if TARGET === "rsc" && isClientEditing}
19
+ <LiveEditBlockStyles id={block.id} contextProvider={$contextProvider} />
20
+ {:else}
21
+ <BlockStyles {block} {context} />
22
+ {/if}
23
+ {:else}
24
+ <BlockStyles {block} {context} />
25
+ {/if}
@@ -0,0 +1,23 @@
1
+ import { SvelteComponent } from "svelte";
2
+ type StyleWrapperProps = {
3
+ block: BuilderBlock;
4
+ context: BuilderContextInterface;
5
+ id?: string;
6
+ };
7
+ import { BuilderBlock, BuilderContextInterface } from "../../../server-index";
8
+ declare const __propDef: {
9
+ props: {
10
+ block: StyleWrapperProps["block"];
11
+ context: StyleWrapperProps["context"];
12
+ };
13
+ events: {
14
+ [evt: string]: CustomEvent<any>;
15
+ };
16
+ slots: {};
17
+ };
18
+ type StyleWrapperProps_ = typeof __propDef.props;
19
+ export { StyleWrapperProps_ as StyleWrapperProps };
20
+ export type StyleWrapperEvents = typeof __propDef.events;
21
+ export type StyleWrapperSlots = typeof __propDef.slots;
22
+ export default class StyleWrapper extends SvelteComponent<StyleWrapperProps, StyleWrapperEvents, StyleWrapperSlots> {
23
+ }
@@ -15,7 +15,7 @@ import { getInteractionPropertiesForEvent } from "../../../functions/track/inter
15
15
  import { getDefaultCanTrack } from "../../../helpers/canTrack";
16
16
  import { getCookieSync } from "../../../helpers/cookie";
17
17
  import "../../../helpers/preview-lru-cache/set";
18
- import { createEditorListener } from "../../../helpers/subscribe-to-editor";
18
+ import { createEditorListener, } from "../../../helpers/subscribe-to-editor";
19
19
  import { setupBrowserForEditing } from "../../../scripts/init-editing";
20
20
  import { triggerAnimation } from "../../block/animator";
21
21
  import "../../dynamic-div.svelte";
@@ -46,7 +46,7 @@ function stringifyStyles(stylesObj) {
46
46
  }
47
47
  return styles;
48
48
  }
49
- function mergeNewRootState(newData) {
49
+ function mergeNewRootState(newData, editType) {
50
50
  const combinedState = {
51
51
  ...$builderContextSignal.rootState,
52
52
  ...newData,
@@ -57,8 +57,14 @@ function mergeNewRootState(newData) {
57
57
  else {
58
58
  $builderContextSignal.rootState = combinedState;
59
59
  }
60
+ if ($builderContextSignal.rootSetState) {
61
+ $builderContextSignal.rootSetState(combinedState);
62
+ }
63
+ else {
64
+ $builderContextSignal.rootState = combinedState;
65
+ }
60
66
  }
61
- function mergeNewContent(newContent) {
67
+ function mergeNewContent(newContent, editType) {
62
68
  const newContentValue = {
63
69
  ...$builderContextSignal.content,
64
70
  ...newContent,
@@ -96,11 +102,11 @@ function processMessage(event) {
96
102
  animation: (animation) => {
97
103
  triggerAnimation(animation);
98
104
  },
99
- contentUpdate: (newContent) => {
100
- mergeNewContent(newContent);
105
+ contentUpdate: (newContent, editType) => {
106
+ mergeNewContent(newContent, editType);
101
107
  },
102
- stateUpdate: (newState) => {
103
- mergeNewRootState(newState);
108
+ stateUpdate: (newState, editType) => {
109
+ mergeNewRootState(newState, editType);
104
110
  },
105
111
  },
106
112
  })(event);
@@ -160,11 +166,15 @@ function runHttpRequests() {
160
166
  method: "GET",
161
167
  };
162
168
  logFetch(JSON.stringify(fetchRequestObj));
163
- fetch(fetchRequestObj.url, {
169
+ const fetchOptions = {
164
170
  method: fetchRequestObj.method,
165
171
  headers: fetchRequestObj.headers,
166
172
  body: fetchRequestObj.body,
167
- })
173
+ };
174
+ if (fetchRequestObj.method === "GET") {
175
+ delete fetchOptions.body;
176
+ }
177
+ fetch(fetchRequestObj.url, fetchOptions)
168
178
  .then((response) => response.json())
169
179
  .then((json) => {
170
180
  mergeNewRootState({
@@ -268,6 +278,9 @@ $: showContentProps = () => {
268
278
  };
269
279
  let elementRef;
270
280
  let hasExecuted = false;
281
+ let contextValue = $builderContextSignal;
282
+ let prevData = null;
283
+ let prevLocale = "";
271
284
  let ContentWrapper = contentWrapper || "div";
272
285
  let httpReqsData = {};
273
286
  let httpReqsPending = {};
@@ -324,15 +337,23 @@ $: onUpdateFn_1_builderContextSignal_rootState =
324
337
  $: onUpdateFn_1(...[onUpdateFn_1_builderContextSignal_rootState]);
325
338
  function onUpdateFn_2(..._args) {
326
339
  if (data) {
340
+ if (prevData === data) {
341
+ return;
342
+ }
327
343
  mergeNewRootState(data);
344
+ prevData = data;
328
345
  }
329
346
  }
330
347
  $: onUpdateFn_2(...[data]);
331
348
  function onUpdateFn_3(..._args) {
332
349
  if (locale) {
350
+ if (prevLocale === locale) {
351
+ return;
352
+ }
333
353
  mergeNewRootState({
334
354
  locale: locale,
335
355
  });
356
+ prevLocale = locale;
336
357
  }
337
358
  }
338
359
  $: onUpdateFn_3(...[locale]);
@@ -0,0 +1,20 @@
1
+ <script context="module"></script>
2
+
3
+ <script>import { getContext } from "svelte";
4
+ import { BuilderContext } from "../context/index";
5
+ import { findBlockById } from "../helpers/find-block";
6
+ export let id = undefined;
7
+ export let attributes = undefined;
8
+ export let Wrapper = undefined;
9
+ let context = getContext(BuilderContext.key);
10
+ $: block = () => {
11
+ return findBlockById($context.content, id);
12
+ };
13
+ $: options = () => {
14
+ return block?.()?.component?.options || {};
15
+ };
16
+ </script>
17
+
18
+ <svelte:component this={Wrapper} {...options()} {attributes}
19
+ ><slot /></svelte:component
20
+ >
@@ -0,0 +1,26 @@
1
+ import { SvelteComponent } from "svelte";
2
+ type LiveEditProps = {
3
+ children?: any;
4
+ id?: any;
5
+ Wrapper?: any;
6
+ attributes?: any;
7
+ };
8
+ declare const __propDef: {
9
+ props: {
10
+ id?: LiveEditProps["id"];
11
+ attributes?: LiveEditProps["attributes"];
12
+ Wrapper?: LiveEditProps["Wrapper"];
13
+ };
14
+ events: {
15
+ [evt: string]: CustomEvent<any>;
16
+ };
17
+ slots: {
18
+ default: {};
19
+ };
20
+ };
21
+ type LiveEditProps_ = typeof __propDef.props;
22
+ export { LiveEditProps_ as LiveEditProps };
23
+ export type LiveEditEvents = typeof __propDef.events;
24
+ export type LiveEditSlots = typeof __propDef.slots;
25
+ export default class LiveEdit extends SvelteComponent<LiveEditProps, LiveEditEvents, LiveEditSlots> {
26
+ }
@@ -1 +1 @@
1
- export declare const SDK_VERSION = "4.2.1";
1
+ export declare const SDK_VERSION = "4.2.4";
@@ -1 +1 @@
1
- export const SDK_VERSION = "4.2.1";
1
+ export const SDK_VERSION = "4.2.4";
@@ -1,7 +1,13 @@
1
1
  import type { QueryObject } from '../../helpers/search/search';
2
2
  /**
3
- * Receives a `URLSearchParams` object or a regular query object, and returns the subset of query params that are
4
- * relevant to the Builder SDK.
3
+ * Receives a `URLSearchParams` object or a regular query object, and returns
4
+ * the subset of query params that are relevant to the Builder SDK.
5
+ *
6
+ * Outputs a key-value object to be passed to `fetchOneEntry` or `fetchEntries`
7
+ * functions as the `options` argument.
8
+ *
9
+ * NOTE: This function is generally not needed. Instead, it is recommended to use `isPreviewing()`
10
+ * to check if the current page requires previewed content.
5
11
  *
6
12
  * @returns
7
13
  */
@@ -3,8 +3,14 @@ import { isBrowser } from '../is-browser';
3
3
  const BUILDER_SEARCHPARAMS_PREFIX = 'builder.';
4
4
  const BUILDER_OPTIONS_PREFIX = 'options.';
5
5
  /**
6
- * Receives a `URLSearchParams` object or a regular query object, and returns the subset of query params that are
7
- * relevant to the Builder SDK.
6
+ * Receives a `URLSearchParams` object or a regular query object, and returns
7
+ * the subset of query params that are relevant to the Builder SDK.
8
+ *
9
+ * Outputs a key-value object to be passed to `fetchOneEntry` or `fetchEntries`
10
+ * functions as the `options` argument.
11
+ *
12
+ * NOTE: This function is generally not needed. Instead, it is recommended to use `isPreviewing()`
13
+ * to check if the current page requires previewed content.
8
14
  *
9
15
  * @returns
10
16
  */