@builder.io/sdk-solid 3.0.0 → 3.0.1
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.
- package/dist/index.d.ts +5 -0
- package/lib/browser/dev.js +132 -44
- package/lib/browser/dev.jsx +133 -40
- package/lib/browser/index.js +129 -44
- package/lib/browser/index.jsx +132 -40
- package/lib/edge/dev.js +132 -44
- package/lib/edge/dev.jsx +133 -40
- package/lib/edge/index.js +129 -44
- package/lib/edge/index.jsx +132 -40
- package/lib/node/dev.js +132 -44
- package/lib/node/dev.jsx +133 -40
- package/lib/node/index.js +129 -44
- package/lib/node/index.jsx +132 -40
- package/package.json +1 -1
package/lib/node/index.jsx
CHANGED
|
@@ -95,7 +95,8 @@ var builder_context_default = createContext({
|
|
|
95
95
|
inheritedStyles: {},
|
|
96
96
|
BlocksWrapper: "div",
|
|
97
97
|
BlocksWrapperProps: {},
|
|
98
|
-
nonce: ""
|
|
98
|
+
nonce: "",
|
|
99
|
+
model: ""
|
|
99
100
|
});
|
|
100
101
|
|
|
101
102
|
// src/context/components.context.ts
|
|
@@ -576,6 +577,76 @@ function evaluate({
|
|
|
576
577
|
}
|
|
577
578
|
}
|
|
578
579
|
|
|
580
|
+
// src/functions/traverse.ts
|
|
581
|
+
function traverse(obj, callback, parent2 = null, key = null, visited = /* @__PURE__ */ new WeakSet()) {
|
|
582
|
+
if (obj == null || typeof obj !== "object") {
|
|
583
|
+
callback(obj, (newValue) => {
|
|
584
|
+
if (parent2 !== null && key !== null) {
|
|
585
|
+
parent2[key] = newValue;
|
|
586
|
+
}
|
|
587
|
+
});
|
|
588
|
+
return;
|
|
589
|
+
}
|
|
590
|
+
if (visited.has(obj)) {
|
|
591
|
+
return;
|
|
592
|
+
}
|
|
593
|
+
visited.add(obj);
|
|
594
|
+
if (Array.isArray(obj)) {
|
|
595
|
+
obj.forEach((item, index) => {
|
|
596
|
+
const update = (newValue) => {
|
|
597
|
+
obj[index] = newValue;
|
|
598
|
+
};
|
|
599
|
+
callback(item, update);
|
|
600
|
+
traverse(item, callback, obj, index, visited);
|
|
601
|
+
});
|
|
602
|
+
} else {
|
|
603
|
+
Object.entries(obj).forEach(([key2, value]) => {
|
|
604
|
+
const update = (newValue) => {
|
|
605
|
+
obj[key2] = newValue;
|
|
606
|
+
};
|
|
607
|
+
callback(value, update);
|
|
608
|
+
traverse(value, callback, obj, key2, visited);
|
|
609
|
+
});
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
|
|
613
|
+
// src/functions/extract-localized-values.ts
|
|
614
|
+
function isLocalizedField(value) {
|
|
615
|
+
return value && typeof value === "object" && value["@type"] === "@builder.io/core:LocalizedValue";
|
|
616
|
+
}
|
|
617
|
+
function containsLocalizedValues(data) {
|
|
618
|
+
if (!data || !Object.getOwnPropertyNames(data).length) {
|
|
619
|
+
return false;
|
|
620
|
+
}
|
|
621
|
+
let hasLocalizedValues = false;
|
|
622
|
+
traverse(data, (value) => {
|
|
623
|
+
if (isLocalizedField(value)) {
|
|
624
|
+
hasLocalizedValues = true;
|
|
625
|
+
return;
|
|
626
|
+
}
|
|
627
|
+
});
|
|
628
|
+
return hasLocalizedValues;
|
|
629
|
+
}
|
|
630
|
+
function extractLocalizedValues(data, locale) {
|
|
631
|
+
if (!data || !Object.getOwnPropertyNames(data).length) {
|
|
632
|
+
return {};
|
|
633
|
+
}
|
|
634
|
+
traverse(data, (value, update) => {
|
|
635
|
+
if (isLocalizedField(value)) {
|
|
636
|
+
update(value[locale] ?? void 0);
|
|
637
|
+
}
|
|
638
|
+
});
|
|
639
|
+
return data;
|
|
640
|
+
}
|
|
641
|
+
function resolveLocalizedValues(block, locale) {
|
|
642
|
+
if (block.component?.options && containsLocalizedValues(block.component?.options)) {
|
|
643
|
+
if (!locale) {
|
|
644
|
+
}
|
|
645
|
+
block.component.options = extractLocalizedValues(block.component.options, locale ?? "Default");
|
|
646
|
+
}
|
|
647
|
+
return block;
|
|
648
|
+
}
|
|
649
|
+
|
|
579
650
|
// src/functions/transform-block.ts
|
|
580
651
|
function transformBlock(block) {
|
|
581
652
|
return block;
|
|
@@ -661,7 +732,8 @@ function getProcessedBlock({
|
|
|
661
732
|
rootState,
|
|
662
733
|
rootSetState
|
|
663
734
|
}) {
|
|
664
|
-
|
|
735
|
+
let transformedBlock = resolveLocalizedValues(block, rootState.locale);
|
|
736
|
+
transformedBlock = transformBlock(transformedBlock);
|
|
665
737
|
if (shouldEvaluateBindings) {
|
|
666
738
|
return evaluateBindings({
|
|
667
739
|
block: transformedBlock,
|
|
@@ -918,16 +990,24 @@ function mapStyleObjToStrIfNeeded(style) {
|
|
|
918
990
|
}
|
|
919
991
|
|
|
920
992
|
// src/components/block/block.helpers.ts
|
|
993
|
+
var checkIsComponentRestricted = (component, model) => {
|
|
994
|
+
if (!component)
|
|
995
|
+
return true;
|
|
996
|
+
if (!model)
|
|
997
|
+
return false;
|
|
998
|
+
return component.models && component.models.length > 0 && !component.models.includes(model);
|
|
999
|
+
};
|
|
921
1000
|
var getComponent = ({
|
|
922
1001
|
block,
|
|
923
|
-
registeredComponents
|
|
1002
|
+
registeredComponents,
|
|
1003
|
+
model
|
|
924
1004
|
}) => {
|
|
925
1005
|
const componentName = block.component?.name;
|
|
926
1006
|
if (!componentName) {
|
|
927
1007
|
return null;
|
|
928
1008
|
}
|
|
929
1009
|
const ref = registeredComponents[componentName];
|
|
930
|
-
if (!ref) {
|
|
1010
|
+
if (!ref || checkIsComponentRestricted(ref, model)) {
|
|
931
1011
|
return void 0;
|
|
932
1012
|
} else {
|
|
933
1013
|
return ref;
|
|
@@ -978,11 +1058,15 @@ var provideLinkComponent = (block, linkComponent) => {
|
|
|
978
1058
|
};
|
|
979
1059
|
return {};
|
|
980
1060
|
};
|
|
981
|
-
var provideRegisteredComponents = (block, registeredComponents) => {
|
|
982
|
-
if (block?.shouldReceiveBuilderProps?.builderComponents)
|
|
1061
|
+
var provideRegisteredComponents = (block, registeredComponents, model) => {
|
|
1062
|
+
if (block?.shouldReceiveBuilderProps?.builderComponents) {
|
|
1063
|
+
const filteredRegisteredComponents = Object.fromEntries(Object.entries(registeredComponents).filter(([_, component]) => {
|
|
1064
|
+
return !checkIsComponentRestricted(component, model);
|
|
1065
|
+
}));
|
|
983
1066
|
return {
|
|
984
|
-
builderComponents:
|
|
1067
|
+
builderComponents: filteredRegisteredComponents
|
|
985
1068
|
};
|
|
1069
|
+
}
|
|
986
1070
|
return {};
|
|
987
1071
|
};
|
|
988
1072
|
var provideBuilderBlock = (block, builderBlock) => {
|
|
@@ -1386,7 +1470,8 @@ function Block(props) {
|
|
|
1386
1470
|
const blockComponent = createMemo5(() => {
|
|
1387
1471
|
return getComponent({
|
|
1388
1472
|
block: processedBlock(),
|
|
1389
|
-
registeredComponents: props.registeredComponents
|
|
1473
|
+
registeredComponents: props.registeredComponents,
|
|
1474
|
+
model: props.context.model
|
|
1390
1475
|
});
|
|
1391
1476
|
});
|
|
1392
1477
|
const Tag = createMemo5(() => {
|
|
@@ -1421,7 +1506,8 @@ function Block(props) {
|
|
|
1421
1506
|
...provideLinkComponent(blockComponent(), props.linkComponent),
|
|
1422
1507
|
...provideRegisteredComponents(
|
|
1423
1508
|
blockComponent(),
|
|
1424
|
-
props.registeredComponents
|
|
1509
|
+
props.registeredComponents,
|
|
1510
|
+
props.context.model
|
|
1425
1511
|
)
|
|
1426
1512
|
},
|
|
1427
1513
|
context: props.context,
|
|
@@ -1845,7 +1931,7 @@ function Image(props) {
|
|
|
1845
1931
|
const url = imageToUse;
|
|
1846
1932
|
if (!url || // We can auto add srcset for cdn.builder.io and shopify
|
|
1847
1933
|
// images, otherwise you can supply this prop manually
|
|
1848
|
-
!(url.match(/builder\.io/) || url.match(/cdn\.shopify\.com/))) {
|
|
1934
|
+
!(typeof url === "string" && (url.match(/builder\.io/) || url.match(/cdn\.shopify\.com/)))) {
|
|
1849
1935
|
return props.srcset;
|
|
1850
1936
|
}
|
|
1851
1937
|
if (props.noWebp) {
|
|
@@ -1885,7 +1971,7 @@ function Image(props) {
|
|
|
1885
1971
|
<picture>
|
|
1886
1972
|
<Show8 when={webpSrcSet()}><source type="image/webp" srcset={webpSrcSet()} /></Show8>
|
|
1887
1973
|
<img
|
|
1888
|
-
class={"builder-image" + (props.className ? " " + props.className : "") + " img-
|
|
1974
|
+
class={"builder-image" + (props.className ? " " + props.className : "") + " img-070d7e88"}
|
|
1889
1975
|
loading={props.highPriority ? "eager" : "lazy"}
|
|
1890
1976
|
fetchpriority={props.highPriority ? "high" : "auto"}
|
|
1891
1977
|
alt={props.altText}
|
|
@@ -1903,22 +1989,22 @@ function Image(props) {
|
|
|
1903
1989
|
<Show8
|
|
1904
1990
|
when={props.aspectRatio && !(props.builderBlock?.children?.length && props.fitContent)}
|
|
1905
1991
|
><div
|
|
1906
|
-
class="builder-image-sizer div-
|
|
1992
|
+
class="builder-image-sizer div-070d7e88"
|
|
1907
1993
|
style={{
|
|
1908
1994
|
"padding-top": props.aspectRatio * 100 + "%"
|
|
1909
1995
|
}}
|
|
1910
1996
|
/></Show8>
|
|
1911
1997
|
<Show8 when={props.builderBlock?.children?.length && props.fitContent}>{props.children}</Show8>
|
|
1912
|
-
<Show8 when={!props.fitContent && props.builderBlock?.children?.length}><div class="div-
|
|
1998
|
+
<Show8 when={!props.fitContent && props.builderBlock?.children?.length}><div class="div-070d7e88-2">{props.children}</div></Show8>
|
|
1913
1999
|
</>
|
|
1914
|
-
<style>{`.img-
|
|
2000
|
+
<style>{`.img-070d7e88 {
|
|
1915
2001
|
opacity: 1;
|
|
1916
2002
|
transition: opacity 0.2s ease-in-out;
|
|
1917
|
-
}.div-
|
|
2003
|
+
}.div-070d7e88 {
|
|
1918
2004
|
width: 100%;
|
|
1919
2005
|
pointer-events: none;
|
|
1920
2006
|
font-size: 0;
|
|
1921
|
-
}.div-
|
|
2007
|
+
}.div-070d7e88-2 {
|
|
1922
2008
|
display: flex;
|
|
1923
2009
|
flex-direction: column;
|
|
1924
2010
|
align-items: stretch;
|
|
@@ -2711,6 +2797,10 @@ var componentInfo4 = {
|
|
|
2711
2797
|
noWrap: true
|
|
2712
2798
|
};
|
|
2713
2799
|
|
|
2800
|
+
// src/constants/file-types.ts
|
|
2801
|
+
var IMAGE_FILE_TYPES = ["jpeg", "jpg", "png", "svg", "webp", "gif", "jfif", "pjpeg", "pjp", "apng", "avif", "tif", "tiff", "heif", "bmp", "eps", "raw", "cr2", "nef", "orf", "sr2", "psd", "heic", "dib", "ai"];
|
|
2802
|
+
var VIDEO_FILE_TYPES = ["mp4", "webm", "mkv", "flv", "vob", "ogv", "ogg", "drc", "gif", "gifv", "mng", "avi", "mov", "qt", "mts", "m2ts", "ts", "wmv", "yuv", "rm", "rmvb", "viv", "asf", "amv", "m4p", "mpeg", "mpe", "m2v", "m4v", "svi", "3gp", "3g2", "mxf", "roq", "nsv", "f4v", "f4p", "f4a", "f4b"];
|
|
2803
|
+
|
|
2714
2804
|
// src/blocks/image/component-info.ts
|
|
2715
2805
|
var componentInfo5 = {
|
|
2716
2806
|
name: "Image",
|
|
@@ -2727,7 +2817,7 @@ var componentInfo5 = {
|
|
|
2727
2817
|
name: "image",
|
|
2728
2818
|
type: "file",
|
|
2729
2819
|
bubble: true,
|
|
2730
|
-
allowedFileTypes:
|
|
2820
|
+
allowedFileTypes: IMAGE_FILE_TYPES,
|
|
2731
2821
|
required: true,
|
|
2732
2822
|
defaultValue: "https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F72c80f114dc149019051b6852a9e3b7a",
|
|
2733
2823
|
onChange: (options) => {
|
|
@@ -4084,7 +4174,7 @@ var componentInfo18 = {
|
|
|
4084
4174
|
name: "image",
|
|
4085
4175
|
bubble: true,
|
|
4086
4176
|
type: "file",
|
|
4087
|
-
allowedFileTypes:
|
|
4177
|
+
allowedFileTypes: IMAGE_FILE_TYPES,
|
|
4088
4178
|
required: true
|
|
4089
4179
|
}],
|
|
4090
4180
|
noWrap: true,
|
|
@@ -4119,14 +4209,14 @@ var componentInfo19 = {
|
|
|
4119
4209
|
inputs: [{
|
|
4120
4210
|
name: "video",
|
|
4121
4211
|
type: "file",
|
|
4122
|
-
allowedFileTypes:
|
|
4212
|
+
allowedFileTypes: VIDEO_FILE_TYPES,
|
|
4123
4213
|
bubble: true,
|
|
4124
4214
|
defaultValue: "https://cdn.builder.io/o/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fd27731a526464deba0016216f5f9e570%2Fcompressed?apiKey=YJIGb4i01jvw0SRdL5Bt&token=d27731a526464deba0016216f5f9e570&alt=media&optimized=true",
|
|
4125
4215
|
required: true
|
|
4126
4216
|
}, {
|
|
4127
4217
|
name: "posterImage",
|
|
4128
4218
|
type: "file",
|
|
4129
|
-
allowedFileTypes:
|
|
4219
|
+
allowedFileTypes: IMAGE_FILE_TYPES,
|
|
4130
4220
|
helperText: "Image to show before the video plays"
|
|
4131
4221
|
}, {
|
|
4132
4222
|
name: "autoPlay",
|
|
@@ -4352,7 +4442,7 @@ var createRegisterComponentMessage = (info) => ({
|
|
|
4352
4442
|
var serializeFn = (fnValue) => {
|
|
4353
4443
|
const fnStr = fnValue.toString().trim();
|
|
4354
4444
|
const isArrowWithoutParens = /^[a-zA-Z0-9_]+\s*=>/i.test(fnStr);
|
|
4355
|
-
const appendFunction = !fnStr.startsWith("function") && !fnStr.startsWith("(") && !isArrowWithoutParens;
|
|
4445
|
+
const appendFunction = !fnStr.startsWith("function") && !fnStr.startsWith("async") && !fnStr.startsWith("(") && !isArrowWithoutParens;
|
|
4356
4446
|
return `return (${appendFunction ? "function " : ""}${fnStr}).apply(this, arguments)`;
|
|
4357
4447
|
};
|
|
4358
4448
|
function serializeIncludingFunctions(info) {
|
|
@@ -4437,7 +4527,7 @@ function getPreviewContent(_searchParams) {
|
|
|
4437
4527
|
}
|
|
4438
4528
|
|
|
4439
4529
|
// src/constants/sdk-version.ts
|
|
4440
|
-
var SDK_VERSION = "3.0.
|
|
4530
|
+
var SDK_VERSION = "3.0.1";
|
|
4441
4531
|
|
|
4442
4532
|
// src/helpers/sdk-headers.ts
|
|
4443
4533
|
var getSdkHeaders = () => ({
|
|
@@ -5149,6 +5239,12 @@ var subscribeToEditor = (model, callback, options) => {
|
|
|
5149
5239
|
};
|
|
5150
5240
|
};
|
|
5151
5241
|
|
|
5242
|
+
// src/components/content/components/enable-editor.helpers.ts
|
|
5243
|
+
var SDKS_USING_ELEMENT_REF_APPROACH = ["svelte", "qwik", "vue"];
|
|
5244
|
+
var needsElementRefDivForEditing = () => {
|
|
5245
|
+
return SDKS_USING_ELEMENT_REF_APPROACH.includes(TARGET) && (isEditing() || isPreviewing());
|
|
5246
|
+
};
|
|
5247
|
+
|
|
5152
5248
|
// src/components/content/components/styles.helpers.ts
|
|
5153
5249
|
var getCssFromFont = (font) => {
|
|
5154
5250
|
const family = font.family + (font.kind && !font.kind.includes("#") ? ", " + font.kind : "");
|
|
@@ -5394,8 +5490,10 @@ function EnableEditor(props) {
|
|
|
5394
5490
|
Object.values(
|
|
5395
5491
|
props.builderContextSignal.componentInfos
|
|
5396
5492
|
).forEach((registeredComponent) => {
|
|
5397
|
-
|
|
5398
|
-
|
|
5493
|
+
if (!props.model || !registeredComponent.models?.length || registeredComponent.models.includes(props.model)) {
|
|
5494
|
+
const message = createRegisterComponentMessage(registeredComponent);
|
|
5495
|
+
window.parent?.postMessage(message, "*");
|
|
5496
|
+
}
|
|
5399
5497
|
});
|
|
5400
5498
|
window.addEventListener(
|
|
5401
5499
|
"builder:component:stateChangeListenerActivated",
|
|
@@ -5472,7 +5570,9 @@ function EnableEditor(props) {
|
|
|
5472
5570
|
}
|
|
5473
5571
|
}
|
|
5474
5572
|
createEffect3(on3(() => [onUpdateFn_3_props_locale()], onUpdateFn_3));
|
|
5475
|
-
return <><builder_context_default.Provider value={props.builderContextSignal}><Show13
|
|
5573
|
+
return <><builder_context_default.Provider value={props.builderContextSignal}><Show13
|
|
5574
|
+
when={props.builderContextSignal.content || needsElementRefDivForEditing()}
|
|
5575
|
+
><Dynamic5
|
|
5476
5576
|
class={getWrapperClassName(
|
|
5477
5577
|
props.content?.testVariationId || props.content?.id
|
|
5478
5578
|
)}
|
|
@@ -5481,6 +5581,9 @@ function EnableEditor(props) {
|
|
|
5481
5581
|
onClick={(event) => onClick(event)}
|
|
5482
5582
|
builder-content-id={props.builderContextSignal.content?.id}
|
|
5483
5583
|
builder-model={props.model}
|
|
5584
|
+
style={{
|
|
5585
|
+
display: !props.builderContextSignal.content && needsElementRefDivForEditing() ? "none" : void 0
|
|
5586
|
+
}}
|
|
5484
5587
|
{...{}}
|
|
5485
5588
|
{...showContentProps()}
|
|
5486
5589
|
{...props.contentWrapperProps}
|
|
@@ -5561,13 +5664,7 @@ function ContentComponent(props) {
|
|
|
5561
5664
|
const [registeredComponents, setRegisteredComponents] = createSignal18(
|
|
5562
5665
|
[
|
|
5563
5666
|
...getDefaultRegisteredComponents(),
|
|
5564
|
-
...props.customComponents
|
|
5565
|
-
if (!models?.length)
|
|
5566
|
-
return true;
|
|
5567
|
-
if (!props.model)
|
|
5568
|
-
return true;
|
|
5569
|
-
return models.includes(props.model);
|
|
5570
|
-
}) || []
|
|
5667
|
+
...props.customComponents || []
|
|
5571
5668
|
].reduce(
|
|
5572
5669
|
(acc, { component, ...info }) => ({
|
|
5573
5670
|
...acc,
|
|
@@ -5597,13 +5694,7 @@ function ContentComponent(props) {
|
|
|
5597
5694
|
apiVersion: props.apiVersion,
|
|
5598
5695
|
componentInfos: [
|
|
5599
5696
|
...getDefaultRegisteredComponents(),
|
|
5600
|
-
...props.customComponents
|
|
5601
|
-
if (!models?.length)
|
|
5602
|
-
return true;
|
|
5603
|
-
if (!props.model)
|
|
5604
|
-
return true;
|
|
5605
|
-
return models.includes(props.model);
|
|
5606
|
-
}) || []
|
|
5697
|
+
...props.customComponents || []
|
|
5607
5698
|
].reduce(
|
|
5608
5699
|
(acc, { component: _, ...info }) => ({
|
|
5609
5700
|
...acc,
|
|
@@ -5614,7 +5705,8 @@ function ContentComponent(props) {
|
|
|
5614
5705
|
inheritedStyles: {},
|
|
5615
5706
|
BlocksWrapper: props.blocksWrapper || "div",
|
|
5616
5707
|
BlocksWrapperProps: props.blocksWrapperProps || {},
|
|
5617
|
-
nonce: props.nonce || ""
|
|
5708
|
+
nonce: props.nonce || "",
|
|
5709
|
+
model: props.model || ""
|
|
5618
5710
|
});
|
|
5619
5711
|
function contentSetState(newRootState) {
|
|
5620
5712
|
setBuilderContextSignal((PREVIOUS_VALUE) => ({
|