@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/edge/index.jsx
CHANGED
|
@@ -103,7 +103,8 @@ var builder_context_default = createContext({
|
|
|
103
103
|
inheritedStyles: {},
|
|
104
104
|
BlocksWrapper: "div",
|
|
105
105
|
BlocksWrapperProps: {},
|
|
106
|
-
nonce: ""
|
|
106
|
+
nonce: "",
|
|
107
|
+
model: ""
|
|
107
108
|
});
|
|
108
109
|
|
|
109
110
|
// src/context/components.context.ts
|
|
@@ -3577,6 +3578,76 @@ function evaluate({
|
|
|
3577
3578
|
}
|
|
3578
3579
|
}
|
|
3579
3580
|
|
|
3581
|
+
// src/functions/traverse.ts
|
|
3582
|
+
function traverse(obj, callback, parent2 = null, key = null, visited = /* @__PURE__ */ new WeakSet()) {
|
|
3583
|
+
if (obj == null || typeof obj !== "object") {
|
|
3584
|
+
callback(obj, (newValue) => {
|
|
3585
|
+
if (parent2 !== null && key !== null) {
|
|
3586
|
+
parent2[key] = newValue;
|
|
3587
|
+
}
|
|
3588
|
+
});
|
|
3589
|
+
return;
|
|
3590
|
+
}
|
|
3591
|
+
if (visited.has(obj)) {
|
|
3592
|
+
return;
|
|
3593
|
+
}
|
|
3594
|
+
visited.add(obj);
|
|
3595
|
+
if (Array.isArray(obj)) {
|
|
3596
|
+
obj.forEach((item, index) => {
|
|
3597
|
+
const update = (newValue) => {
|
|
3598
|
+
obj[index] = newValue;
|
|
3599
|
+
};
|
|
3600
|
+
callback(item, update);
|
|
3601
|
+
traverse(item, callback, obj, index, visited);
|
|
3602
|
+
});
|
|
3603
|
+
} else {
|
|
3604
|
+
Object.entries(obj).forEach(([key2, value]) => {
|
|
3605
|
+
const update = (newValue) => {
|
|
3606
|
+
obj[key2] = newValue;
|
|
3607
|
+
};
|
|
3608
|
+
callback(value, update);
|
|
3609
|
+
traverse(value, callback, obj, key2, visited);
|
|
3610
|
+
});
|
|
3611
|
+
}
|
|
3612
|
+
}
|
|
3613
|
+
|
|
3614
|
+
// src/functions/extract-localized-values.ts
|
|
3615
|
+
function isLocalizedField(value) {
|
|
3616
|
+
return value && typeof value === "object" && value["@type"] === "@builder.io/core:LocalizedValue";
|
|
3617
|
+
}
|
|
3618
|
+
function containsLocalizedValues(data) {
|
|
3619
|
+
if (!data || !Object.getOwnPropertyNames(data).length) {
|
|
3620
|
+
return false;
|
|
3621
|
+
}
|
|
3622
|
+
let hasLocalizedValues = false;
|
|
3623
|
+
traverse(data, (value) => {
|
|
3624
|
+
if (isLocalizedField(value)) {
|
|
3625
|
+
hasLocalizedValues = true;
|
|
3626
|
+
return;
|
|
3627
|
+
}
|
|
3628
|
+
});
|
|
3629
|
+
return hasLocalizedValues;
|
|
3630
|
+
}
|
|
3631
|
+
function extractLocalizedValues(data, locale) {
|
|
3632
|
+
if (!data || !Object.getOwnPropertyNames(data).length) {
|
|
3633
|
+
return {};
|
|
3634
|
+
}
|
|
3635
|
+
traverse(data, (value, update) => {
|
|
3636
|
+
if (isLocalizedField(value)) {
|
|
3637
|
+
update(value[locale] ?? void 0);
|
|
3638
|
+
}
|
|
3639
|
+
});
|
|
3640
|
+
return data;
|
|
3641
|
+
}
|
|
3642
|
+
function resolveLocalizedValues(block, locale) {
|
|
3643
|
+
if (block.component?.options && containsLocalizedValues(block.component?.options)) {
|
|
3644
|
+
if (!locale) {
|
|
3645
|
+
}
|
|
3646
|
+
block.component.options = extractLocalizedValues(block.component.options, locale ?? "Default");
|
|
3647
|
+
}
|
|
3648
|
+
return block;
|
|
3649
|
+
}
|
|
3650
|
+
|
|
3580
3651
|
// src/functions/fast-clone.ts
|
|
3581
3652
|
var fastClone = (obj) => JSON.parse(JSON.stringify(obj));
|
|
3582
3653
|
|
|
@@ -3675,7 +3746,8 @@ function getProcessedBlock({
|
|
|
3675
3746
|
rootState,
|
|
3676
3747
|
rootSetState
|
|
3677
3748
|
}) {
|
|
3678
|
-
|
|
3749
|
+
let transformedBlock = resolveLocalizedValues(block, rootState.locale);
|
|
3750
|
+
transformedBlock = transformBlock(transformedBlock);
|
|
3679
3751
|
if (shouldEvaluateBindings) {
|
|
3680
3752
|
return evaluateBindings({
|
|
3681
3753
|
block: transformedBlock,
|
|
@@ -3932,16 +4004,24 @@ function mapStyleObjToStrIfNeeded(style) {
|
|
|
3932
4004
|
}
|
|
3933
4005
|
|
|
3934
4006
|
// src/components/block/block.helpers.ts
|
|
4007
|
+
var checkIsComponentRestricted = (component, model) => {
|
|
4008
|
+
if (!component)
|
|
4009
|
+
return true;
|
|
4010
|
+
if (!model)
|
|
4011
|
+
return false;
|
|
4012
|
+
return component.models && component.models.length > 0 && !component.models.includes(model);
|
|
4013
|
+
};
|
|
3935
4014
|
var getComponent = ({
|
|
3936
4015
|
block,
|
|
3937
|
-
registeredComponents
|
|
4016
|
+
registeredComponents,
|
|
4017
|
+
model
|
|
3938
4018
|
}) => {
|
|
3939
4019
|
const componentName = block.component?.name;
|
|
3940
4020
|
if (!componentName) {
|
|
3941
4021
|
return null;
|
|
3942
4022
|
}
|
|
3943
4023
|
const ref = registeredComponents[componentName];
|
|
3944
|
-
if (!ref) {
|
|
4024
|
+
if (!ref || checkIsComponentRestricted(ref, model)) {
|
|
3945
4025
|
return void 0;
|
|
3946
4026
|
} else {
|
|
3947
4027
|
return ref;
|
|
@@ -3992,11 +4072,15 @@ var provideLinkComponent = (block, linkComponent) => {
|
|
|
3992
4072
|
};
|
|
3993
4073
|
return {};
|
|
3994
4074
|
};
|
|
3995
|
-
var provideRegisteredComponents = (block, registeredComponents) => {
|
|
3996
|
-
if (block?.shouldReceiveBuilderProps?.builderComponents)
|
|
4075
|
+
var provideRegisteredComponents = (block, registeredComponents, model) => {
|
|
4076
|
+
if (block?.shouldReceiveBuilderProps?.builderComponents) {
|
|
4077
|
+
const filteredRegisteredComponents = Object.fromEntries(Object.entries(registeredComponents).filter(([_, component]) => {
|
|
4078
|
+
return !checkIsComponentRestricted(component, model);
|
|
4079
|
+
}));
|
|
3997
4080
|
return {
|
|
3998
|
-
builderComponents:
|
|
4081
|
+
builderComponents: filteredRegisteredComponents
|
|
3999
4082
|
};
|
|
4083
|
+
}
|
|
4000
4084
|
return {};
|
|
4001
4085
|
};
|
|
4002
4086
|
var provideBuilderBlock = (block, builderBlock) => {
|
|
@@ -4400,7 +4484,8 @@ function Block(props) {
|
|
|
4400
4484
|
const blockComponent = createMemo5(() => {
|
|
4401
4485
|
return getComponent({
|
|
4402
4486
|
block: processedBlock(),
|
|
4403
|
-
registeredComponents: props.registeredComponents
|
|
4487
|
+
registeredComponents: props.registeredComponents,
|
|
4488
|
+
model: props.context.model
|
|
4404
4489
|
});
|
|
4405
4490
|
});
|
|
4406
4491
|
const Tag = createMemo5(() => {
|
|
@@ -4435,7 +4520,8 @@ function Block(props) {
|
|
|
4435
4520
|
...provideLinkComponent(blockComponent(), props.linkComponent),
|
|
4436
4521
|
...provideRegisteredComponents(
|
|
4437
4522
|
blockComponent(),
|
|
4438
|
-
props.registeredComponents
|
|
4523
|
+
props.registeredComponents,
|
|
4524
|
+
props.context.model
|
|
4439
4525
|
)
|
|
4440
4526
|
},
|
|
4441
4527
|
context: props.context,
|
|
@@ -4859,7 +4945,7 @@ function Image(props) {
|
|
|
4859
4945
|
const url = imageToUse;
|
|
4860
4946
|
if (!url || // We can auto add srcset for cdn.builder.io and shopify
|
|
4861
4947
|
// images, otherwise you can supply this prop manually
|
|
4862
|
-
!(url.match(/builder\.io/) || url.match(/cdn\.shopify\.com/))) {
|
|
4948
|
+
!(typeof url === "string" && (url.match(/builder\.io/) || url.match(/cdn\.shopify\.com/)))) {
|
|
4863
4949
|
return props.srcset;
|
|
4864
4950
|
}
|
|
4865
4951
|
if (props.noWebp) {
|
|
@@ -4899,7 +4985,7 @@ function Image(props) {
|
|
|
4899
4985
|
<picture>
|
|
4900
4986
|
<Show8 when={webpSrcSet()}><source type="image/webp" srcset={webpSrcSet()} /></Show8>
|
|
4901
4987
|
<img
|
|
4902
|
-
class={"builder-image" + (props.className ? " " + props.className : "") + " img-
|
|
4988
|
+
class={"builder-image" + (props.className ? " " + props.className : "") + " img-070d7e88"}
|
|
4903
4989
|
loading={props.highPriority ? "eager" : "lazy"}
|
|
4904
4990
|
fetchpriority={props.highPriority ? "high" : "auto"}
|
|
4905
4991
|
alt={props.altText}
|
|
@@ -4917,22 +5003,22 @@ function Image(props) {
|
|
|
4917
5003
|
<Show8
|
|
4918
5004
|
when={props.aspectRatio && !(props.builderBlock?.children?.length && props.fitContent)}
|
|
4919
5005
|
><div
|
|
4920
|
-
class="builder-image-sizer div-
|
|
5006
|
+
class="builder-image-sizer div-070d7e88"
|
|
4921
5007
|
style={{
|
|
4922
5008
|
"padding-top": props.aspectRatio * 100 + "%"
|
|
4923
5009
|
}}
|
|
4924
5010
|
/></Show8>
|
|
4925
5011
|
<Show8 when={props.builderBlock?.children?.length && props.fitContent}>{props.children}</Show8>
|
|
4926
|
-
<Show8 when={!props.fitContent && props.builderBlock?.children?.length}><div class="div-
|
|
5012
|
+
<Show8 when={!props.fitContent && props.builderBlock?.children?.length}><div class="div-070d7e88-2">{props.children}</div></Show8>
|
|
4927
5013
|
</>
|
|
4928
|
-
<style>{`.img-
|
|
5014
|
+
<style>{`.img-070d7e88 {
|
|
4929
5015
|
opacity: 1;
|
|
4930
5016
|
transition: opacity 0.2s ease-in-out;
|
|
4931
|
-
}.div-
|
|
5017
|
+
}.div-070d7e88 {
|
|
4932
5018
|
width: 100%;
|
|
4933
5019
|
pointer-events: none;
|
|
4934
5020
|
font-size: 0;
|
|
4935
|
-
}.div-
|
|
5021
|
+
}.div-070d7e88-2 {
|
|
4936
5022
|
display: flex;
|
|
4937
5023
|
flex-direction: column;
|
|
4938
5024
|
align-items: stretch;
|
|
@@ -5725,6 +5811,10 @@ var componentInfo4 = {
|
|
|
5725
5811
|
noWrap: true
|
|
5726
5812
|
};
|
|
5727
5813
|
|
|
5814
|
+
// src/constants/file-types.ts
|
|
5815
|
+
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"];
|
|
5816
|
+
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"];
|
|
5817
|
+
|
|
5728
5818
|
// src/blocks/image/component-info.ts
|
|
5729
5819
|
var componentInfo5 = {
|
|
5730
5820
|
name: "Image",
|
|
@@ -5741,7 +5831,7 @@ var componentInfo5 = {
|
|
|
5741
5831
|
name: "image",
|
|
5742
5832
|
type: "file",
|
|
5743
5833
|
bubble: true,
|
|
5744
|
-
allowedFileTypes:
|
|
5834
|
+
allowedFileTypes: IMAGE_FILE_TYPES,
|
|
5745
5835
|
required: true,
|
|
5746
5836
|
defaultValue: "https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F72c80f114dc149019051b6852a9e3b7a",
|
|
5747
5837
|
onChange: (options) => {
|
|
@@ -7098,7 +7188,7 @@ var componentInfo18 = {
|
|
|
7098
7188
|
name: "image",
|
|
7099
7189
|
bubble: true,
|
|
7100
7190
|
type: "file",
|
|
7101
|
-
allowedFileTypes:
|
|
7191
|
+
allowedFileTypes: IMAGE_FILE_TYPES,
|
|
7102
7192
|
required: true
|
|
7103
7193
|
}],
|
|
7104
7194
|
noWrap: true,
|
|
@@ -7133,14 +7223,14 @@ var componentInfo19 = {
|
|
|
7133
7223
|
inputs: [{
|
|
7134
7224
|
name: "video",
|
|
7135
7225
|
type: "file",
|
|
7136
|
-
allowedFileTypes:
|
|
7226
|
+
allowedFileTypes: VIDEO_FILE_TYPES,
|
|
7137
7227
|
bubble: true,
|
|
7138
7228
|
defaultValue: "https://cdn.builder.io/o/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fd27731a526464deba0016216f5f9e570%2Fcompressed?apiKey=YJIGb4i01jvw0SRdL5Bt&token=d27731a526464deba0016216f5f9e570&alt=media&optimized=true",
|
|
7139
7229
|
required: true
|
|
7140
7230
|
}, {
|
|
7141
7231
|
name: "posterImage",
|
|
7142
7232
|
type: "file",
|
|
7143
|
-
allowedFileTypes:
|
|
7233
|
+
allowedFileTypes: IMAGE_FILE_TYPES,
|
|
7144
7234
|
helperText: "Image to show before the video plays"
|
|
7145
7235
|
}, {
|
|
7146
7236
|
name: "autoPlay",
|
|
@@ -7366,7 +7456,7 @@ var createRegisterComponentMessage = (info) => ({
|
|
|
7366
7456
|
var serializeFn = (fnValue) => {
|
|
7367
7457
|
const fnStr = fnValue.toString().trim();
|
|
7368
7458
|
const isArrowWithoutParens = /^[a-zA-Z0-9_]+\s*=>/i.test(fnStr);
|
|
7369
|
-
const appendFunction = !fnStr.startsWith("function") && !fnStr.startsWith("(") && !isArrowWithoutParens;
|
|
7459
|
+
const appendFunction = !fnStr.startsWith("function") && !fnStr.startsWith("async") && !fnStr.startsWith("(") && !isArrowWithoutParens;
|
|
7370
7460
|
return `return (${appendFunction ? "function " : ""}${fnStr}).apply(this, arguments)`;
|
|
7371
7461
|
};
|
|
7372
7462
|
function serializeIncludingFunctions(info) {
|
|
@@ -7451,7 +7541,7 @@ function getPreviewContent(_searchParams) {
|
|
|
7451
7541
|
}
|
|
7452
7542
|
|
|
7453
7543
|
// src/constants/sdk-version.ts
|
|
7454
|
-
var SDK_VERSION = "3.0.
|
|
7544
|
+
var SDK_VERSION = "3.0.1";
|
|
7455
7545
|
|
|
7456
7546
|
// src/helpers/sdk-headers.ts
|
|
7457
7547
|
var getSdkHeaders = () => ({
|
|
@@ -8163,6 +8253,12 @@ var subscribeToEditor = (model, callback, options) => {
|
|
|
8163
8253
|
};
|
|
8164
8254
|
};
|
|
8165
8255
|
|
|
8256
|
+
// src/components/content/components/enable-editor.helpers.ts
|
|
8257
|
+
var SDKS_USING_ELEMENT_REF_APPROACH = ["svelte", "qwik", "vue"];
|
|
8258
|
+
var needsElementRefDivForEditing = () => {
|
|
8259
|
+
return SDKS_USING_ELEMENT_REF_APPROACH.includes(TARGET) && (isEditing() || isPreviewing());
|
|
8260
|
+
};
|
|
8261
|
+
|
|
8166
8262
|
// src/components/content/components/styles.helpers.ts
|
|
8167
8263
|
var getCssFromFont = (font) => {
|
|
8168
8264
|
const family = font.family + (font.kind && !font.kind.includes("#") ? ", " + font.kind : "");
|
|
@@ -8408,8 +8504,10 @@ function EnableEditor(props) {
|
|
|
8408
8504
|
Object.values(
|
|
8409
8505
|
props.builderContextSignal.componentInfos
|
|
8410
8506
|
).forEach((registeredComponent) => {
|
|
8411
|
-
|
|
8412
|
-
|
|
8507
|
+
if (!props.model || !registeredComponent.models?.length || registeredComponent.models.includes(props.model)) {
|
|
8508
|
+
const message = createRegisterComponentMessage(registeredComponent);
|
|
8509
|
+
window.parent?.postMessage(message, "*");
|
|
8510
|
+
}
|
|
8413
8511
|
});
|
|
8414
8512
|
window.addEventListener(
|
|
8415
8513
|
"builder:component:stateChangeListenerActivated",
|
|
@@ -8486,7 +8584,9 @@ function EnableEditor(props) {
|
|
|
8486
8584
|
}
|
|
8487
8585
|
}
|
|
8488
8586
|
createEffect3(on3(() => [onUpdateFn_3_props_locale()], onUpdateFn_3));
|
|
8489
|
-
return <><builder_context_default.Provider value={props.builderContextSignal}><Show13
|
|
8587
|
+
return <><builder_context_default.Provider value={props.builderContextSignal}><Show13
|
|
8588
|
+
when={props.builderContextSignal.content || needsElementRefDivForEditing()}
|
|
8589
|
+
><Dynamic5
|
|
8490
8590
|
class={getWrapperClassName(
|
|
8491
8591
|
props.content?.testVariationId || props.content?.id
|
|
8492
8592
|
)}
|
|
@@ -8495,6 +8595,9 @@ function EnableEditor(props) {
|
|
|
8495
8595
|
onClick={(event) => onClick(event)}
|
|
8496
8596
|
builder-content-id={props.builderContextSignal.content?.id}
|
|
8497
8597
|
builder-model={props.model}
|
|
8598
|
+
style={{
|
|
8599
|
+
display: !props.builderContextSignal.content && needsElementRefDivForEditing() ? "none" : void 0
|
|
8600
|
+
}}
|
|
8498
8601
|
{...{}}
|
|
8499
8602
|
{...showContentProps()}
|
|
8500
8603
|
{...props.contentWrapperProps}
|
|
@@ -8575,13 +8678,7 @@ function ContentComponent(props) {
|
|
|
8575
8678
|
const [registeredComponents, setRegisteredComponents] = createSignal18(
|
|
8576
8679
|
[
|
|
8577
8680
|
...getDefaultRegisteredComponents(),
|
|
8578
|
-
...props.customComponents
|
|
8579
|
-
if (!models?.length)
|
|
8580
|
-
return true;
|
|
8581
|
-
if (!props.model)
|
|
8582
|
-
return true;
|
|
8583
|
-
return models.includes(props.model);
|
|
8584
|
-
}) || []
|
|
8681
|
+
...props.customComponents || []
|
|
8585
8682
|
].reduce(
|
|
8586
8683
|
(acc, { component, ...info }) => ({
|
|
8587
8684
|
...acc,
|
|
@@ -8611,13 +8708,7 @@ function ContentComponent(props) {
|
|
|
8611
8708
|
apiVersion: props.apiVersion,
|
|
8612
8709
|
componentInfos: [
|
|
8613
8710
|
...getDefaultRegisteredComponents(),
|
|
8614
|
-
...props.customComponents
|
|
8615
|
-
if (!models?.length)
|
|
8616
|
-
return true;
|
|
8617
|
-
if (!props.model)
|
|
8618
|
-
return true;
|
|
8619
|
-
return models.includes(props.model);
|
|
8620
|
-
}) || []
|
|
8711
|
+
...props.customComponents || []
|
|
8621
8712
|
].reduce(
|
|
8622
8713
|
(acc, { component: _, ...info }) => ({
|
|
8623
8714
|
...acc,
|
|
@@ -8628,7 +8719,8 @@ function ContentComponent(props) {
|
|
|
8628
8719
|
inheritedStyles: {},
|
|
8629
8720
|
BlocksWrapper: props.blocksWrapper || "div",
|
|
8630
8721
|
BlocksWrapperProps: props.blocksWrapperProps || {},
|
|
8631
|
-
nonce: props.nonce || ""
|
|
8722
|
+
nonce: props.nonce || "",
|
|
8723
|
+
model: props.model || ""
|
|
8632
8724
|
});
|
|
8633
8725
|
function contentSetState(newRootState) {
|
|
8634
8726
|
setBuilderContextSignal((PREVIOUS_VALUE) => ({
|