@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.js
CHANGED
|
@@ -120,7 +120,8 @@ var builder_context_default = createContext({
|
|
|
120
120
|
inheritedStyles: {},
|
|
121
121
|
BlocksWrapper: "div",
|
|
122
122
|
BlocksWrapperProps: {},
|
|
123
|
-
nonce: ""
|
|
123
|
+
nonce: "",
|
|
124
|
+
model: ""
|
|
124
125
|
});
|
|
125
126
|
var components_context_default = createContext({ registeredComponents: {} });
|
|
126
127
|
|
|
@@ -3582,6 +3583,74 @@ function evaluate({
|
|
|
3582
3583
|
}
|
|
3583
3584
|
}
|
|
3584
3585
|
|
|
3586
|
+
// src/functions/traverse.ts
|
|
3587
|
+
function traverse(obj, callback, parent2 = null, key = null, visited = /* @__PURE__ */ new WeakSet()) {
|
|
3588
|
+
if (obj == null || typeof obj !== "object") {
|
|
3589
|
+
callback(obj, (newValue) => {
|
|
3590
|
+
if (parent2 !== null && key !== null) {
|
|
3591
|
+
parent2[key] = newValue;
|
|
3592
|
+
}
|
|
3593
|
+
});
|
|
3594
|
+
return;
|
|
3595
|
+
}
|
|
3596
|
+
if (visited.has(obj)) {
|
|
3597
|
+
return;
|
|
3598
|
+
}
|
|
3599
|
+
visited.add(obj);
|
|
3600
|
+
if (Array.isArray(obj)) {
|
|
3601
|
+
obj.forEach((item, index) => {
|
|
3602
|
+
const update = (newValue) => {
|
|
3603
|
+
obj[index] = newValue;
|
|
3604
|
+
};
|
|
3605
|
+
callback(item, update);
|
|
3606
|
+
traverse(item, callback, obj, index, visited);
|
|
3607
|
+
});
|
|
3608
|
+
} else {
|
|
3609
|
+
Object.entries(obj).forEach(([key2, value]) => {
|
|
3610
|
+
const update = (newValue) => {
|
|
3611
|
+
obj[key2] = newValue;
|
|
3612
|
+
};
|
|
3613
|
+
callback(value, update);
|
|
3614
|
+
traverse(value, callback, obj, key2, visited);
|
|
3615
|
+
});
|
|
3616
|
+
}
|
|
3617
|
+
}
|
|
3618
|
+
|
|
3619
|
+
// src/functions/extract-localized-values.ts
|
|
3620
|
+
function isLocalizedField(value) {
|
|
3621
|
+
return value && typeof value === "object" && value["@type"] === "@builder.io/core:LocalizedValue";
|
|
3622
|
+
}
|
|
3623
|
+
function containsLocalizedValues(data) {
|
|
3624
|
+
if (!data || !Object.getOwnPropertyNames(data).length) {
|
|
3625
|
+
return false;
|
|
3626
|
+
}
|
|
3627
|
+
let hasLocalizedValues = false;
|
|
3628
|
+
traverse(data, (value) => {
|
|
3629
|
+
if (isLocalizedField(value)) {
|
|
3630
|
+
hasLocalizedValues = true;
|
|
3631
|
+
return;
|
|
3632
|
+
}
|
|
3633
|
+
});
|
|
3634
|
+
return hasLocalizedValues;
|
|
3635
|
+
}
|
|
3636
|
+
function extractLocalizedValues(data, locale) {
|
|
3637
|
+
if (!data || !Object.getOwnPropertyNames(data).length) {
|
|
3638
|
+
return {};
|
|
3639
|
+
}
|
|
3640
|
+
traverse(data, (value, update) => {
|
|
3641
|
+
if (isLocalizedField(value)) {
|
|
3642
|
+
update(value[locale] ?? void 0);
|
|
3643
|
+
}
|
|
3644
|
+
});
|
|
3645
|
+
return data;
|
|
3646
|
+
}
|
|
3647
|
+
function resolveLocalizedValues(block, locale) {
|
|
3648
|
+
if (block.component?.options && containsLocalizedValues(block.component?.options)) {
|
|
3649
|
+
block.component.options = extractLocalizedValues(block.component.options, locale ?? "Default");
|
|
3650
|
+
}
|
|
3651
|
+
return block;
|
|
3652
|
+
}
|
|
3653
|
+
|
|
3585
3654
|
// src/functions/fast-clone.ts
|
|
3586
3655
|
var fastClone = (obj) => JSON.parse(JSON.stringify(obj));
|
|
3587
3656
|
|
|
@@ -3680,7 +3749,8 @@ function getProcessedBlock({
|
|
|
3680
3749
|
rootState,
|
|
3681
3750
|
rootSetState
|
|
3682
3751
|
}) {
|
|
3683
|
-
|
|
3752
|
+
let transformedBlock = resolveLocalizedValues(block, rootState.locale);
|
|
3753
|
+
transformedBlock = transformBlock(transformedBlock);
|
|
3684
3754
|
if (shouldEvaluateBindings) {
|
|
3685
3755
|
return evaluateBindings({
|
|
3686
3756
|
block: transformedBlock,
|
|
@@ -3937,16 +4007,24 @@ function mapStyleObjToStrIfNeeded(style) {
|
|
|
3937
4007
|
}
|
|
3938
4008
|
|
|
3939
4009
|
// src/components/block/block.helpers.ts
|
|
4010
|
+
var checkIsComponentRestricted = (component, model) => {
|
|
4011
|
+
if (!component)
|
|
4012
|
+
return true;
|
|
4013
|
+
if (!model)
|
|
4014
|
+
return false;
|
|
4015
|
+
return component.models && component.models.length > 0 && !component.models.includes(model);
|
|
4016
|
+
};
|
|
3940
4017
|
var getComponent = ({
|
|
3941
4018
|
block,
|
|
3942
|
-
registeredComponents
|
|
4019
|
+
registeredComponents,
|
|
4020
|
+
model
|
|
3943
4021
|
}) => {
|
|
3944
4022
|
const componentName = block.component?.name;
|
|
3945
4023
|
if (!componentName) {
|
|
3946
4024
|
return null;
|
|
3947
4025
|
}
|
|
3948
4026
|
const ref = registeredComponents[componentName];
|
|
3949
|
-
if (!ref) {
|
|
4027
|
+
if (!ref || checkIsComponentRestricted(ref, model)) {
|
|
3950
4028
|
return void 0;
|
|
3951
4029
|
} else {
|
|
3952
4030
|
return ref;
|
|
@@ -3997,11 +4075,15 @@ var provideLinkComponent = (block, linkComponent) => {
|
|
|
3997
4075
|
};
|
|
3998
4076
|
return {};
|
|
3999
4077
|
};
|
|
4000
|
-
var provideRegisteredComponents = (block, registeredComponents) => {
|
|
4001
|
-
if (block?.shouldReceiveBuilderProps?.builderComponents)
|
|
4078
|
+
var provideRegisteredComponents = (block, registeredComponents, model) => {
|
|
4079
|
+
if (block?.shouldReceiveBuilderProps?.builderComponents) {
|
|
4080
|
+
const filteredRegisteredComponents = Object.fromEntries(Object.entries(registeredComponents).filter(([_, component]) => {
|
|
4081
|
+
return !checkIsComponentRestricted(component, model);
|
|
4082
|
+
}));
|
|
4002
4083
|
return {
|
|
4003
|
-
builderComponents:
|
|
4084
|
+
builderComponents: filteredRegisteredComponents
|
|
4004
4085
|
};
|
|
4086
|
+
}
|
|
4005
4087
|
return {};
|
|
4006
4088
|
};
|
|
4007
4089
|
var provideBuilderBlock = (block, builderBlock) => {
|
|
@@ -4463,7 +4545,8 @@ function Block(props) {
|
|
|
4463
4545
|
const blockComponent = createMemo(() => {
|
|
4464
4546
|
return getComponent({
|
|
4465
4547
|
block: processedBlock(),
|
|
4466
|
-
registeredComponents: props.registeredComponents
|
|
4548
|
+
registeredComponents: props.registeredComponents,
|
|
4549
|
+
model: props.context.model
|
|
4467
4550
|
});
|
|
4468
4551
|
});
|
|
4469
4552
|
const Tag = createMemo(() => {
|
|
@@ -4496,7 +4579,7 @@ function Block(props) {
|
|
|
4496
4579
|
...provideBuilderBlock(blockComponent(), processedBlock()),
|
|
4497
4580
|
...provideBuilderContext(blockComponent(), props.context),
|
|
4498
4581
|
...provideLinkComponent(blockComponent(), props.linkComponent),
|
|
4499
|
-
...provideRegisteredComponents(blockComponent(), props.registeredComponents)
|
|
4582
|
+
...provideRegisteredComponents(blockComponent(), props.registeredComponents, props.context.model)
|
|
4500
4583
|
},
|
|
4501
4584
|
context: props.context,
|
|
4502
4585
|
linkComponent: props.linkComponent,
|
|
@@ -5094,16 +5177,16 @@ function getSrcSet(url) {
|
|
|
5094
5177
|
// src/blocks/image/image.tsx
|
|
5095
5178
|
var _tmpl$5 = /* @__PURE__ */ template(`<source type=image/webp>`);
|
|
5096
5179
|
var _tmpl$23 = /* @__PURE__ */ template(`<picture><img>`);
|
|
5097
|
-
var _tmpl$32 = /* @__PURE__ */ template(`<div class="builder-image-sizer div-
|
|
5098
|
-
var _tmpl$42 = /* @__PURE__ */ template(`<div class=div-
|
|
5099
|
-
var _tmpl$52 = /* @__PURE__ */ template(`<style>.img-
|
|
5180
|
+
var _tmpl$32 = /* @__PURE__ */ template(`<div class="builder-image-sizer div-070d7e88">`);
|
|
5181
|
+
var _tmpl$42 = /* @__PURE__ */ template(`<div class=div-070d7e88-2>`);
|
|
5182
|
+
var _tmpl$52 = /* @__PURE__ */ template(`<style>.img-070d7e88 {
|
|
5100
5183
|
opacity: 1;
|
|
5101
5184
|
transition: opacity 0.2s ease-in-out;
|
|
5102
|
-
}.div-
|
|
5185
|
+
}.div-070d7e88 {
|
|
5103
5186
|
width: 100%;
|
|
5104
5187
|
pointer-events: none;
|
|
5105
5188
|
font-size: 0;
|
|
5106
|
-
}.div-
|
|
5189
|
+
}.div-070d7e88-2 {
|
|
5107
5190
|
display: flex;
|
|
5108
5191
|
flex-direction: column;
|
|
5109
5192
|
align-items: stretch;
|
|
@@ -5119,7 +5202,7 @@ function Image(props) {
|
|
|
5119
5202
|
const url = imageToUse;
|
|
5120
5203
|
if (!url || // We can auto add srcset for cdn.builder.io and shopify
|
|
5121
5204
|
// images, otherwise you can supply this prop manually
|
|
5122
|
-
!(url.match(/builder\.io/) || url.match(/cdn\.shopify\.com/))) {
|
|
5205
|
+
!(typeof url === "string" && (url.match(/builder\.io/) || url.match(/cdn\.shopify\.com/)))) {
|
|
5123
5206
|
return props.srcset;
|
|
5124
5207
|
}
|
|
5125
5208
|
if (props.noWebp) {
|
|
@@ -5167,7 +5250,7 @@ function Image(props) {
|
|
|
5167
5250
|
}
|
|
5168
5251
|
}), _el$3);
|
|
5169
5252
|
effect((_p$) => {
|
|
5170
|
-
const _v$ = "builder-image" + (props.className ? " " + props.className : "") + " img-
|
|
5253
|
+
const _v$ = "builder-image" + (props.className ? " " + props.className : "") + " img-070d7e88", _v$2 = props.highPriority ? "eager" : "lazy", _v$3 = props.highPriority ? "high" : "auto", _v$4 = props.altText, _v$5 = props.altText ? void 0 : "presentation", _v$6 = {
|
|
5171
5254
|
"object-position": props.backgroundPosition || "center",
|
|
5172
5255
|
"object-fit": props.backgroundSize || "cover",
|
|
5173
5256
|
...aspectRatioCss()
|
|
@@ -6033,6 +6116,10 @@ var componentInfo4 = {
|
|
|
6033
6116
|
noWrap: true
|
|
6034
6117
|
};
|
|
6035
6118
|
|
|
6119
|
+
// src/constants/file-types.ts
|
|
6120
|
+
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"];
|
|
6121
|
+
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"];
|
|
6122
|
+
|
|
6036
6123
|
// src/blocks/image/component-info.ts
|
|
6037
6124
|
var componentInfo5 = {
|
|
6038
6125
|
name: "Image",
|
|
@@ -6049,7 +6136,7 @@ var componentInfo5 = {
|
|
|
6049
6136
|
name: "image",
|
|
6050
6137
|
type: "file",
|
|
6051
6138
|
bubble: true,
|
|
6052
|
-
allowedFileTypes:
|
|
6139
|
+
allowedFileTypes: IMAGE_FILE_TYPES,
|
|
6053
6140
|
required: true,
|
|
6054
6141
|
defaultValue: "https://cdn.builder.io/api/v1/image/assets%2FYJIGb4i01jvw0SRdL5Bt%2F72c80f114dc149019051b6852a9e3b7a",
|
|
6055
6142
|
onChange: (options) => {
|
|
@@ -7578,7 +7665,7 @@ var componentInfo18 = {
|
|
|
7578
7665
|
name: "image",
|
|
7579
7666
|
bubble: true,
|
|
7580
7667
|
type: "file",
|
|
7581
|
-
allowedFileTypes:
|
|
7668
|
+
allowedFileTypes: IMAGE_FILE_TYPES,
|
|
7582
7669
|
required: true
|
|
7583
7670
|
}],
|
|
7584
7671
|
noWrap: true,
|
|
@@ -7622,14 +7709,14 @@ var componentInfo19 = {
|
|
|
7622
7709
|
inputs: [{
|
|
7623
7710
|
name: "video",
|
|
7624
7711
|
type: "file",
|
|
7625
|
-
allowedFileTypes:
|
|
7712
|
+
allowedFileTypes: VIDEO_FILE_TYPES,
|
|
7626
7713
|
bubble: true,
|
|
7627
7714
|
defaultValue: "https://cdn.builder.io/o/assets%2FYJIGb4i01jvw0SRdL5Bt%2Fd27731a526464deba0016216f5f9e570%2Fcompressed?apiKey=YJIGb4i01jvw0SRdL5Bt&token=d27731a526464deba0016216f5f9e570&alt=media&optimized=true",
|
|
7628
7715
|
required: true
|
|
7629
7716
|
}, {
|
|
7630
7717
|
name: "posterImage",
|
|
7631
7718
|
type: "file",
|
|
7632
|
-
allowedFileTypes:
|
|
7719
|
+
allowedFileTypes: IMAGE_FILE_TYPES,
|
|
7633
7720
|
helperText: "Image to show before the video plays"
|
|
7634
7721
|
}, {
|
|
7635
7722
|
name: "autoPlay",
|
|
@@ -7885,7 +7972,7 @@ var createRegisterComponentMessage = (info) => ({
|
|
|
7885
7972
|
var serializeFn = (fnValue) => {
|
|
7886
7973
|
const fnStr = fnValue.toString().trim();
|
|
7887
7974
|
const isArrowWithoutParens = /^[a-zA-Z0-9_]+\s*=>/i.test(fnStr);
|
|
7888
|
-
const appendFunction = !fnStr.startsWith("function") && !fnStr.startsWith("(") && !isArrowWithoutParens;
|
|
7975
|
+
const appendFunction = !fnStr.startsWith("function") && !fnStr.startsWith("async") && !fnStr.startsWith("(") && !isArrowWithoutParens;
|
|
7889
7976
|
return `return (${appendFunction ? "function " : ""}${fnStr}).apply(this, arguments)`;
|
|
7890
7977
|
};
|
|
7891
7978
|
function serializeIncludingFunctions(info) {
|
|
@@ -7968,7 +8055,7 @@ function getPreviewContent(_searchParams) {
|
|
|
7968
8055
|
}
|
|
7969
8056
|
|
|
7970
8057
|
// src/constants/sdk-version.ts
|
|
7971
|
-
var SDK_VERSION = "3.0.
|
|
8058
|
+
var SDK_VERSION = "3.0.1";
|
|
7972
8059
|
|
|
7973
8060
|
// src/helpers/sdk-headers.ts
|
|
7974
8061
|
var getSdkHeaders = () => ({
|
|
@@ -8680,6 +8767,12 @@ var subscribeToEditor = (model, callback, options) => {
|
|
|
8680
8767
|
};
|
|
8681
8768
|
};
|
|
8682
8769
|
|
|
8770
|
+
// src/components/content/components/enable-editor.helpers.ts
|
|
8771
|
+
var SDKS_USING_ELEMENT_REF_APPROACH = ["svelte", "qwik", "vue"];
|
|
8772
|
+
var needsElementRefDivForEditing = () => {
|
|
8773
|
+
return SDKS_USING_ELEMENT_REF_APPROACH.includes(TARGET) && (isEditing() || isPreviewing());
|
|
8774
|
+
};
|
|
8775
|
+
|
|
8683
8776
|
// src/components/content/components/styles.helpers.ts
|
|
8684
8777
|
var getCssFromFont = (font) => {
|
|
8685
8778
|
const family = font.family + (font.kind && !font.kind.includes("#") ? ", " + font.kind : "");
|
|
@@ -8914,8 +9007,10 @@ function EnableEditor(props) {
|
|
|
8914
9007
|
} : {}
|
|
8915
9008
|
});
|
|
8916
9009
|
Object.values(props.builderContextSignal.componentInfos).forEach((registeredComponent) => {
|
|
8917
|
-
|
|
8918
|
-
|
|
9010
|
+
if (!props.model || !registeredComponent.models?.length || registeredComponent.models.includes(props.model)) {
|
|
9011
|
+
const message = createRegisterComponentMessage(registeredComponent);
|
|
9012
|
+
window.parent?.postMessage(message, "*");
|
|
9013
|
+
}
|
|
8919
9014
|
});
|
|
8920
9015
|
window.addEventListener("builder:component:stateChangeListenerActivated", emitStateUpdate);
|
|
8921
9016
|
}
|
|
@@ -8987,7 +9082,7 @@ function EnableEditor(props) {
|
|
|
8987
9082
|
get children() {
|
|
8988
9083
|
return createComponent(Show, {
|
|
8989
9084
|
get when() {
|
|
8990
|
-
return props.builderContextSignal.content;
|
|
9085
|
+
return props.builderContextSignal.content || needsElementRefDivForEditing();
|
|
8991
9086
|
},
|
|
8992
9087
|
get children() {
|
|
8993
9088
|
return createComponent(Dynamic, mergeProps({
|
|
@@ -9005,6 +9100,11 @@ function EnableEditor(props) {
|
|
|
9005
9100
|
},
|
|
9006
9101
|
get ["builder-model"]() {
|
|
9007
9102
|
return props.model;
|
|
9103
|
+
},
|
|
9104
|
+
get style() {
|
|
9105
|
+
return {
|
|
9106
|
+
display: !props.builderContextSignal.content && needsElementRefDivForEditing() ? "none" : void 0
|
|
9107
|
+
};
|
|
9008
9108
|
}
|
|
9009
9109
|
}, {}, showContentProps, () => props.contentWrapperProps, {
|
|
9010
9110
|
get component() {
|
|
@@ -9087,15 +9187,7 @@ function ContentComponent(props) {
|
|
|
9087
9187
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion, @typescript-eslint/no-non-null-asserted-optional-chain
|
|
9088
9188
|
contentId: props.content?.id
|
|
9089
9189
|
}));
|
|
9090
|
-
const [registeredComponents, setRegisteredComponents] = createSignal([...getDefaultRegisteredComponents(), ...props.customComponents
|
|
9091
|
-
models
|
|
9092
|
-
}) => {
|
|
9093
|
-
if (!models?.length)
|
|
9094
|
-
return true;
|
|
9095
|
-
if (!props.model)
|
|
9096
|
-
return true;
|
|
9097
|
-
return models.includes(props.model);
|
|
9098
|
-
}) || []].reduce((acc, {
|
|
9190
|
+
const [registeredComponents, setRegisteredComponents] = createSignal([...getDefaultRegisteredComponents(), ...props.customComponents || []].reduce((acc, {
|
|
9099
9191
|
component,
|
|
9100
9192
|
...info
|
|
9101
9193
|
}) => ({
|
|
@@ -9121,15 +9213,7 @@ function ContentComponent(props) {
|
|
|
9121
9213
|
canTrack: props.canTrack,
|
|
9122
9214
|
apiKey: props.apiKey,
|
|
9123
9215
|
apiVersion: props.apiVersion,
|
|
9124
|
-
componentInfos: [...getDefaultRegisteredComponents(), ...props.customComponents
|
|
9125
|
-
models
|
|
9126
|
-
}) => {
|
|
9127
|
-
if (!models?.length)
|
|
9128
|
-
return true;
|
|
9129
|
-
if (!props.model)
|
|
9130
|
-
return true;
|
|
9131
|
-
return models.includes(props.model);
|
|
9132
|
-
}) || []].reduce((acc, {
|
|
9216
|
+
componentInfos: [...getDefaultRegisteredComponents(), ...props.customComponents || []].reduce((acc, {
|
|
9133
9217
|
component: _,
|
|
9134
9218
|
...info
|
|
9135
9219
|
}) => ({
|
|
@@ -9139,7 +9223,8 @@ function ContentComponent(props) {
|
|
|
9139
9223
|
inheritedStyles: {},
|
|
9140
9224
|
BlocksWrapper: props.blocksWrapper || "div",
|
|
9141
9225
|
BlocksWrapperProps: props.blocksWrapperProps || {},
|
|
9142
|
-
nonce: props.nonce || ""
|
|
9226
|
+
nonce: props.nonce || "",
|
|
9227
|
+
model: props.model || ""
|
|
9143
9228
|
});
|
|
9144
9229
|
function contentSetState(newRootState) {
|
|
9145
9230
|
setBuilderContextSignal((PREVIOUS_VALUE) => ({
|