You're Invited:Meet the Socket Team at RSAC and BSidesSF 2026, March 23–26.RSVP
Socket
Book a DemoSign in
Socket

@webflow/data-types

Package Overview
Dependencies
Maintainers
14
Versions
21
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@webflow/data-types - npm Package Compare versions

Comparing version
1.0.4
to
1.1.0
+6
-0
CHANGELOG.md
# @webflow/data-types
## 1.1.0
### Minor Changes
- Added support for Code Components Decorators
## 1.0.4

@@ -4,0 +10,0 @@

+1
-1

@@ -1,1 +0,1 @@

'use strict';var f=(o=>(o.FEDERATION="FEDERATION",o.SSR="SSR",o))(f||{}),d=(n=>(n.React="React",n))(d||{}),m=(o=>(o.Client="Client",o.Server="Server",o))(m||{}),l=(a=>(a.Id="Id",a.Text="Text",a.RichText="RichText",a.Link="Link",a.Image="Image",a.Visibility="Visibility",a.Slot="Slot",a.Number="Number",a.Variant="Variant",a.Boolean="Boolean",a.TextNode="TextNode",a))(l||{});var r={Text:e=>({...u(e),type:"Text",defaultValue:e.defaultValue}),Id:e=>({...u(e),type:"Id"}),Link:e=>({...u(e),type:"Link"}),Image:e=>({...u(e),type:"Image"}),Visibility:e=>({...u(e),type:"Visibility",defaultValue:e.defaultValue}),Slot:e=>({...u(e),type:"Slot"}),RichText:e=>({...u(e),type:"RichText",defaultValue:e.defaultValue}),Number:e=>({...u(e),type:"Number",defaultValue:e.defaultValue,settings:{min:e.min,max:e.max,decimals:e.decimals}}),Variant:e=>({...u(e),type:"Variant",defaultValue:e.defaultValue,settings:{options:e.options}}),Boolean:e=>({...u(e),type:"Boolean",defaultValue:e.defaultValue,settings:{trueLabel:e.trueLabel,falseLabel:e.falseLabel}}),TextNode:e=>({...u(e),type:"TextNode",defaultValue:e.defaultValue,settings:{multiline:e.multiline}})},y={Text:r.Text,String:r.Text,Id:r.Id,Link:r.Link,Image:r.Image,Visibility:r.Visibility,Slot:r.Slot,Children:r.Slot,RichText:r.RichText,Number:r.Number,Variant:r.Variant,Boolean:r.Boolean,TextNode:r.TextNode};function u(e){return {displayName:[e.group,e.name.replaceAll("/","-")].filter(Boolean).join("/"),...e.tooltip?{tooltip:e.tooltip}:{}}}var t=class extends Error{constructor(n){super(`Invalid ComponentData: ${n}`),this.name="InvalidComponentDataError";}};function b(e){return typeof e=="string"&&Object.values(l).includes(e)}function p(e,n){if(typeof e!="string")throw new t(`prop "${n}" 'name' must be a string`);if(e==="")throw new t(`prop "${n}" 'name' cannot be empty`);return e}function c(e,n){if(e!=null){if(typeof e!="string")throw new t(`prop "${n}" defaultValue must be a string for Text type`);return e}}function w(e,n){if(e!=null){if(typeof e!="boolean")throw new t(`prop "${n}" defaultValue must be a boolean for Visibility type`);return e}}function T(e,n){if(e!=null){if(typeof e!="number")throw new t(`prop "${n}" defaultValue must be a number for Number type`);return e}}function g(e,n){if(e!=null){if(typeof e!="string")throw new t(`prop "${n}" defaultValue must be a string for Variant type`);return e}}function x(e,n){if(e!=null){if(typeof e!="boolean")throw new t(`prop "${n}" defaultValue must be a boolean for Boolean type`);return e}}function P(e,n){if(e!=null){if(typeof e!="string")throw new t(`prop "${n}" defaultValue must be a string for TextNode type`);return e}}function h(e,n){if(e!=null){if(typeof e!="string")throw new t(`prop "${n}" defaultValue must be a string for RichText type`);return e}}function V(e,n){if(e){if(typeof e!="object")throw new t(`prop "${n}" settings is not valid`);if(!("options"in e))throw new t(`prop "${n}" settings must have an array of options for Variant type`);if(!Array.isArray(e.options))throw new t(`prop "${n}" settings must have an array of options for Variant type`);if(e.options.some(o=>typeof o!="string"))throw new t(`prop "${n}" settings must have an array of strings for Variant type`);return e}}function C(e,n){if(!e)return;if(typeof e!="object")throw new t(`prop "${n}" settings is not valid`);let o={};if("min"in e&&e.min!==void 0){if(typeof e.min!="number")throw new t(`prop "${n}" settings "min" must be a number for Number type`);if("max"in e&&typeof e.max=="number"&&e.min>e.max)throw new t(`prop "${n}" settings "min" must be less than "max" for Number type`);o.min=e.min;}if("max"in e&&e.max!==void 0){if(typeof e.max!="number")throw new t(`prop "${n}" settings "max" must be a number for Number type`);if("min"in e&&typeof e.min=="number"&&e.min>e.max)throw new t(`prop "${n}" settings "min" must be less than "max" for Number type`);o.max=e.max;}if("decimals"in e&&e.decimals!==void 0){if(typeof e.decimals!="number")throw new t(`prop "${n}" settings "decimals" must be a number for Number type`);if(!Number.isInteger(e.decimals))throw new t(`prop "${n}" settings "decimals" must be an integer number for Number type`);o.decimals=e.decimals;}return o}function S(e,n){if(!e)return;if(typeof e!="object")throw new t(`prop "${n}" settings is not valid`);let o={};if("trueLabel"in e&&e.trueLabel!==void 0){if(typeof e.trueLabel!="string")throw new t(`prop "${n}" settings "trueLabel" must be a string for Boolean type`);o.trueLabel=e.trueLabel;}if("falseLabel"in e&&e.falseLabel!==void 0){if(typeof e.falseLabel!="string")throw new t(`prop "${n}" settings "falseLabel" must be a string for Boolean type`);o.falseLabel=e.falseLabel;}return o}function N(e,n){if(!e)return;if(typeof e!="object")throw new t(`prop "${n}" settings is not valid`);let o={};if("multiline"in e&&e.multiline!==void 0){if(typeof e.multiline!="boolean")throw new t(`prop "${n}" settings "multiline" must be a boolean for TextNode type`);o.multiline=e.multiline;}return o}function $(e,n,o){if(e!==void 0)throw new t(`prop "${n}" defaultValue is not supported for ${o} type`)}function s(e){if(e!=null){if(typeof e!="string")throw new t("tooltip must be a string");return e}}function k(e,n){let o=e.type;switch(o){case "Text":return {type:"Text",displayName:p(e.displayName,n),defaultValue:c(e.defaultValue,n),tooltip:s(e.tooltip)};case "Visibility":return {type:"Visibility",displayName:p(e.displayName,n),defaultValue:w(e.defaultValue,n),tooltip:s(e.tooltip)};case "Number":return {type:"Number",displayName:p(e.displayName,n),defaultValue:T(e.defaultValue,n),settings:C(e.settings,n),tooltip:s(e.tooltip)};case "Variant":return {type:"Variant",displayName:p(e.displayName,n),defaultValue:g(e.defaultValue,n),settings:V(e.settings,n),tooltip:s(e.tooltip)};case "Boolean":return {type:"Boolean",displayName:p(e.displayName,n),defaultValue:x(e.defaultValue,n),settings:S(e.settings,n),tooltip:s(e.tooltip)};case "TextNode":return {type:"TextNode",displayName:p(e.displayName,n),defaultValue:P(e.defaultValue,n),settings:N(e.settings,n)};case "RichText":return {type:o,displayName:p(e.displayName,n),defaultValue:h(e.defaultValue,n),tooltip:s(e.tooltip)};case "Id":case "Link":case "Image":case "Slot":return {type:o,displayName:p(e.displayName,n),defaultValue:$(e.defaultValue,n,o),tooltip:s(e.tooltip)};default:let i=o;throw new t(`prop "${n}" has invalid type: ${i}`)}}function D(e){if(!e||typeof e!="object")throw new t("props must be an object");let n={};for(let[o,i]of Object.entries(e)){if(!i||typeof i!="object")throw new t(`prop "${o}" must be an object`);if(!("type"in i))throw new t(`prop "${o}" is missing required field: type`);if(!b(i.type))throw new t(`prop "${o}" has invalid type: ${String(i.type)}`);n[o]=k(i,o);}return n}var O={ssr:true};function R(e){if(!e||typeof e!="object")throw new t("options must be an object");let n={...O};for(let[o,i]of Object.entries(e)){if(o==="applyTagSelectors"){if(typeof i!="boolean")throw new t('option "applyTagSelectors" must be a boolean');n.applyTagSelectors=i;}if(o==="ssr"){if(typeof i!="boolean")throw new t('option "ssr" must be a boolean');n.ssr=i;}}return n}function v(e){if(!e||typeof e!="object")throw new t("input must be an object");if(!("name"in e))throw new t("missing required field: 'name'");if(typeof e.name!="string")throw new t("'name' must be a string");if(e.name==="")throw new t("'name' cannot be empty");let n={name:e.name};if("description"in e){if(typeof e.description!="string")throw new t("'description' must be a string when provided");n.description=e.description;}if("group"in e){if(typeof e.group!="string")throw new t("'group' must be a string when provided");n.group=e.group;}"props"in e&&(n.props=D(e.props));let o="options"in e?e.options||{}:{};return n.options=R(o),n}exports.Environment=m;exports.Framework=d;exports.ModuleLoader=f;exports.PropType=l;exports.parseComponentData=v;exports.props=y;
'use strict';var f=(o=>(o.FEDERATION="FEDERATION",o.SSR="SSR",o))(f||{}),d=(n=>(n.React="React",n))(d||{}),m=(o=>(o.Client="Client",o.Server="Server",o))(m||{}),l=(a=>(a.Id="Id",a.Text="Text",a.RichText="RichText",a.Link="Link",a.Image="Image",a.Visibility="Visibility",a.Slot="Slot",a.Number="Number",a.Variant="Variant",a.Boolean="Boolean",a.TextNode="TextNode",a))(l||{});var r={Text:e=>({...u(e),type:"Text",defaultValue:e.defaultValue}),Id:e=>({...u(e),type:"Id"}),Link:e=>({...u(e),type:"Link"}),Image:e=>({...u(e),type:"Image"}),Visibility:e=>({...u(e),type:"Visibility",defaultValue:e.defaultValue}),Slot:e=>({...u(e),type:"Slot"}),RichText:e=>({...u(e),type:"RichText",defaultValue:e.defaultValue}),Number:e=>({...u(e),type:"Number",defaultValue:e.defaultValue,settings:{min:e.min,max:e.max,decimals:e.decimals}}),Variant:e=>({...u(e),type:"Variant",defaultValue:e.defaultValue,settings:{options:e.options}}),Boolean:e=>({...u(e),type:"Boolean",defaultValue:e.defaultValue,settings:{trueLabel:e.trueLabel,falseLabel:e.falseLabel}}),TextNode:e=>({...u(e),type:"TextNode",defaultValue:e.defaultValue,settings:{multiline:e.multiline}})},y={Text:r.Text,String:r.Text,Id:r.Id,Link:r.Link,Image:r.Image,Visibility:r.Visibility,Slot:r.Slot,Children:r.Slot,RichText:r.RichText,Number:r.Number,Variant:r.Variant,Boolean:r.Boolean,TextNode:r.TextNode};function u(e){return {displayName:[e.group,e.name.replaceAll("/","-")].filter(Boolean).join("/"),...e.tooltip?{tooltip:e.tooltip}:{}}}var t=class extends Error{constructor(n){super(`Invalid ComponentData: ${n}`),this.name="InvalidComponentDataError";}};function b(e){return typeof e=="string"&&Object.values(l).includes(e)}function p(e,n){if(typeof e!="string")throw new t(`prop "${n}" 'name' must be a string`);if(e==="")throw new t(`prop "${n}" 'name' cannot be empty`);return e}function c(e,n){if(e!=null){if(typeof e!="string")throw new t(`prop "${n}" defaultValue must be a string for Text type`);return e}}function w(e,n){if(e!=null){if(typeof e!="boolean")throw new t(`prop "${n}" defaultValue must be a boolean for Visibility type`);return e}}function T(e,n){if(e!=null){if(typeof e!="number")throw new t(`prop "${n}" defaultValue must be a number for Number type`);return e}}function g(e,n){if(e!=null){if(typeof e!="string")throw new t(`prop "${n}" defaultValue must be a string for Variant type`);return e}}function x(e,n){if(e!=null){if(typeof e!="boolean")throw new t(`prop "${n}" defaultValue must be a boolean for Boolean type`);return e}}function P(e,n){if(e!=null){if(typeof e!="string")throw new t(`prop "${n}" defaultValue must be a string for TextNode type`);return e}}function h(e,n){if(e!=null){if(typeof e!="string")throw new t(`prop "${n}" defaultValue must be a string for RichText type`);return e}}function V(e,n){if(e){if(typeof e!="object")throw new t(`prop "${n}" settings is not valid`);if(!("options"in e))throw new t(`prop "${n}" settings must have an array of options for Variant type`);if(!Array.isArray(e.options))throw new t(`prop "${n}" settings must have an array of options for Variant type`);if(e.options.some(o=>typeof o!="string"))throw new t(`prop "${n}" settings must have an array of strings for Variant type`);return e}}function C(e,n){if(!e)return;if(typeof e!="object")throw new t(`prop "${n}" settings is not valid`);let o={};if("min"in e&&e.min!==void 0){if(typeof e.min!="number")throw new t(`prop "${n}" settings "min" must be a number for Number type`);if("max"in e&&typeof e.max=="number"&&e.min>e.max)throw new t(`prop "${n}" settings "min" must be less than "max" for Number type`);o.min=e.min;}if("max"in e&&e.max!==void 0){if(typeof e.max!="number")throw new t(`prop "${n}" settings "max" must be a number for Number type`);if("min"in e&&typeof e.min=="number"&&e.min>e.max)throw new t(`prop "${n}" settings "min" must be less than "max" for Number type`);o.max=e.max;}if("decimals"in e&&e.decimals!==void 0){if(typeof e.decimals!="number")throw new t(`prop "${n}" settings "decimals" must be a number for Number type`);if(!Number.isInteger(e.decimals))throw new t(`prop "${n}" settings "decimals" must be an integer number for Number type`);o.decimals=e.decimals;}return o}function S(e,n){if(!e)return;if(typeof e!="object")throw new t(`prop "${n}" settings is not valid`);let o={};if("trueLabel"in e&&e.trueLabel!==void 0){if(typeof e.trueLabel!="string")throw new t(`prop "${n}" settings "trueLabel" must be a string for Boolean type`);o.trueLabel=e.trueLabel;}if("falseLabel"in e&&e.falseLabel!==void 0){if(typeof e.falseLabel!="string")throw new t(`prop "${n}" settings "falseLabel" must be a string for Boolean type`);o.falseLabel=e.falseLabel;}return o}function N(e,n){if(!e)return;if(typeof e!="object")throw new t(`prop "${n}" settings is not valid`);let o={};if("multiline"in e&&e.multiline!==void 0){if(typeof e.multiline!="boolean")throw new t(`prop "${n}" settings "multiline" must be a boolean for TextNode type`);o.multiline=e.multiline;}return o}function $(e,n,o){if(e!==void 0)throw new t(`prop "${n}" defaultValue is not supported for ${o} type`)}function s(e){if(e!=null){if(typeof e!="string")throw new t("tooltip must be a string");return e}}function D(e,n){let o=e.type;switch(o){case "Text":return {type:"Text",displayName:p(e.displayName,n),defaultValue:c(e.defaultValue,n),tooltip:s(e.tooltip)};case "Visibility":return {type:"Visibility",displayName:p(e.displayName,n),defaultValue:w(e.defaultValue,n),tooltip:s(e.tooltip)};case "Number":return {type:"Number",displayName:p(e.displayName,n),defaultValue:T(e.defaultValue,n),settings:C(e.settings,n),tooltip:s(e.tooltip)};case "Variant":return {type:"Variant",displayName:p(e.displayName,n),defaultValue:g(e.defaultValue,n),settings:V(e.settings,n),tooltip:s(e.tooltip)};case "Boolean":return {type:"Boolean",displayName:p(e.displayName,n),defaultValue:x(e.defaultValue,n),settings:S(e.settings,n),tooltip:s(e.tooltip)};case "TextNode":return {type:"TextNode",displayName:p(e.displayName,n),defaultValue:P(e.defaultValue,n),settings:N(e.settings,n)};case "RichText":return {type:o,displayName:p(e.displayName,n),defaultValue:h(e.defaultValue,n),tooltip:s(e.tooltip)};case "Id":case "Link":case "Image":case "Slot":return {type:o,displayName:p(e.displayName,n),defaultValue:$(e.defaultValue,n,o),tooltip:s(e.tooltip)};default:let i=o;throw new t(`prop "${n}" has invalid type: ${i}`)}}function k(e){if(!e||typeof e!="object")throw new t("props must be an object");let n={};for(let[o,i]of Object.entries(e)){if(!i||typeof i!="object")throw new t(`prop "${o}" must be an object`);if(!("type"in i))throw new t(`prop "${o}" is missing required field: type`);if(!b(i.type))throw new t(`prop "${o}" has invalid type: ${String(i.type)}`);n[o]=D(i,o);}return n}var O={ssr:true};function R(e){if(!e||typeof e!="object")throw new t("options must be an object");let n={...O};for(let[o,i]of Object.entries(e)){if(o==="applyTagSelectors"){if(typeof i!="boolean")throw new t('option "applyTagSelectors" must be a boolean');n.applyTagSelectors=i;}if(o==="ssr"){if(typeof i!="boolean")throw new t('option "ssr" must be a boolean');n.ssr=i;}}return n}function v(e){if(!e||typeof e!="object")throw new t("input must be an object");if(!("name"in e))throw new t("missing required field: 'name'");if(typeof e.name!="string")throw new t("'name' must be a string");if(e.name==="")throw new t("'name' cannot be empty");let n={name:e.name};if("description"in e){if(typeof e.description!="string")throw new t("'description' must be a string when provided");n.description=e.description;}if("group"in e){if(typeof e.group!="string")throw new t("'group' must be a string when provided");n.group=e.group;}"props"in e&&(n.props=k(e.props));let o="options"in e?e.options||{}:{};return n.options=R(o),n}exports.Environment=m;exports.Framework=d;exports.ModuleLoader=f;exports.PropType=l;exports.parseComponentData=v;exports.props=y;

@@ -144,3 +144,17 @@ /**

};
type ComponentData<P extends {}, NodeType> = {
/**
* A decorator function that wraps a component with additional functionality. *
* The ComponentType parameter represents the component type (e.g., React.ComponentType<P>).
*
* @example
* ```tsx
* const myDecorator: ComponentDecorator<React.ComponentType<any>> = (Component) => (props) => (
* <Provider>
* <Component {...props} />
* </Provider>
* );
* ```
*/
type ComponentDecorator<ComponentType> = (Component: ComponentType) => ComponentType;
type ComponentData<P extends {}, NodeType, ComponentType> = {
/** The display name of the code component */

@@ -156,4 +170,6 @@ name: string;

options?: ComponentOptions;
/** An optional array of decorator functions to wrap the component */
decorators?: ComponentDecorator<ComponentType>[];
};
type ComponentDefinition<ComponentType, NodeType, Props extends {}> = ComponentData<Props, NodeType> & {
type ComponentDefinition<ComponentType, NodeType, Props extends {}> = ComponentData<Props, NodeType, ComponentType> & {
component: ComponentType;

@@ -223,2 +239,4 @@ framework: Framework;

*
* @see {@link props.String} for an alias to this prop constructor.
*
* @param opts Configuration options for the text prop

@@ -295,2 +313,4 @@ * @param opts.name The display name of the prop in the Properties panel

*
* @see {@link props.Children} for an alias to this prop constructor.
*
* @param opts Configuration options for the slot prop

@@ -382,3 +402,3 @@ * @param opts.name The display name of the prop in the Properties panel

*/
declare function parseComponentData<P extends {}, NodeType>(input: unknown): ComponentData<P, NodeType>;
declare function parseComponentData<P extends {}, NodeType, ComponentType>(input: unknown): ComponentData<P, NodeType, ComponentType>;

@@ -401,2 +421,2 @@ type ComponentsManifest = {

export { type BundleManifest, type ComponentClientRendererFactory, type ComponentData, type ComponentDefinition, type ComponentOptions, type ComponentProps, type ComponentRendererInterface, type ComponentRendererRuntimeModule, type ComponentRuntimeError, type ComponentRuntimeOptions, type ComponentRuntimeProps, type ComponentServerRendererFactory, type ComponentsManifest, Environment, Framework, ModuleLoader, PropType, type PropValues, type WebflowContext, parseComponentData, props };
export { type BundleManifest, type ComponentClientRendererFactory, type ComponentData, type ComponentDecorator, type ComponentDefinition, type ComponentOptions, type ComponentProps, type ComponentRendererInterface, type ComponentRendererRuntimeModule, type ComponentRuntimeError, type ComponentRuntimeOptions, type ComponentRuntimeProps, type ComponentServerRendererFactory, type ComponentsManifest, Environment, Framework, ModuleLoader, PropType, type PropValues, type WebflowContext, parseComponentData, props };

@@ -1,1 +0,1 @@

var f=(o=>(o.FEDERATION="FEDERATION",o.SSR="SSR",o))(f||{}),d=(n=>(n.React="React",n))(d||{}),m=(o=>(o.Client="Client",o.Server="Server",o))(m||{}),l=(a=>(a.Id="Id",a.Text="Text",a.RichText="RichText",a.Link="Link",a.Image="Image",a.Visibility="Visibility",a.Slot="Slot",a.Number="Number",a.Variant="Variant",a.Boolean="Boolean",a.TextNode="TextNode",a))(l||{});var r={Text:e=>({...u(e),type:"Text",defaultValue:e.defaultValue}),Id:e=>({...u(e),type:"Id"}),Link:e=>({...u(e),type:"Link"}),Image:e=>({...u(e),type:"Image"}),Visibility:e=>({...u(e),type:"Visibility",defaultValue:e.defaultValue}),Slot:e=>({...u(e),type:"Slot"}),RichText:e=>({...u(e),type:"RichText",defaultValue:e.defaultValue}),Number:e=>({...u(e),type:"Number",defaultValue:e.defaultValue,settings:{min:e.min,max:e.max,decimals:e.decimals}}),Variant:e=>({...u(e),type:"Variant",defaultValue:e.defaultValue,settings:{options:e.options}}),Boolean:e=>({...u(e),type:"Boolean",defaultValue:e.defaultValue,settings:{trueLabel:e.trueLabel,falseLabel:e.falseLabel}}),TextNode:e=>({...u(e),type:"TextNode",defaultValue:e.defaultValue,settings:{multiline:e.multiline}})},y={Text:r.Text,String:r.Text,Id:r.Id,Link:r.Link,Image:r.Image,Visibility:r.Visibility,Slot:r.Slot,Children:r.Slot,RichText:r.RichText,Number:r.Number,Variant:r.Variant,Boolean:r.Boolean,TextNode:r.TextNode};function u(e){return {displayName:[e.group,e.name.replaceAll("/","-")].filter(Boolean).join("/"),...e.tooltip?{tooltip:e.tooltip}:{}}}var t=class extends Error{constructor(n){super(`Invalid ComponentData: ${n}`),this.name="InvalidComponentDataError";}};function b(e){return typeof e=="string"&&Object.values(l).includes(e)}function p(e,n){if(typeof e!="string")throw new t(`prop "${n}" 'name' must be a string`);if(e==="")throw new t(`prop "${n}" 'name' cannot be empty`);return e}function c(e,n){if(e!=null){if(typeof e!="string")throw new t(`prop "${n}" defaultValue must be a string for Text type`);return e}}function w(e,n){if(e!=null){if(typeof e!="boolean")throw new t(`prop "${n}" defaultValue must be a boolean for Visibility type`);return e}}function T(e,n){if(e!=null){if(typeof e!="number")throw new t(`prop "${n}" defaultValue must be a number for Number type`);return e}}function g(e,n){if(e!=null){if(typeof e!="string")throw new t(`prop "${n}" defaultValue must be a string for Variant type`);return e}}function x(e,n){if(e!=null){if(typeof e!="boolean")throw new t(`prop "${n}" defaultValue must be a boolean for Boolean type`);return e}}function P(e,n){if(e!=null){if(typeof e!="string")throw new t(`prop "${n}" defaultValue must be a string for TextNode type`);return e}}function h(e,n){if(e!=null){if(typeof e!="string")throw new t(`prop "${n}" defaultValue must be a string for RichText type`);return e}}function V(e,n){if(e){if(typeof e!="object")throw new t(`prop "${n}" settings is not valid`);if(!("options"in e))throw new t(`prop "${n}" settings must have an array of options for Variant type`);if(!Array.isArray(e.options))throw new t(`prop "${n}" settings must have an array of options for Variant type`);if(e.options.some(o=>typeof o!="string"))throw new t(`prop "${n}" settings must have an array of strings for Variant type`);return e}}function C(e,n){if(!e)return;if(typeof e!="object")throw new t(`prop "${n}" settings is not valid`);let o={};if("min"in e&&e.min!==void 0){if(typeof e.min!="number")throw new t(`prop "${n}" settings "min" must be a number for Number type`);if("max"in e&&typeof e.max=="number"&&e.min>e.max)throw new t(`prop "${n}" settings "min" must be less than "max" for Number type`);o.min=e.min;}if("max"in e&&e.max!==void 0){if(typeof e.max!="number")throw new t(`prop "${n}" settings "max" must be a number for Number type`);if("min"in e&&typeof e.min=="number"&&e.min>e.max)throw new t(`prop "${n}" settings "min" must be less than "max" for Number type`);o.max=e.max;}if("decimals"in e&&e.decimals!==void 0){if(typeof e.decimals!="number")throw new t(`prop "${n}" settings "decimals" must be a number for Number type`);if(!Number.isInteger(e.decimals))throw new t(`prop "${n}" settings "decimals" must be an integer number for Number type`);o.decimals=e.decimals;}return o}function S(e,n){if(!e)return;if(typeof e!="object")throw new t(`prop "${n}" settings is not valid`);let o={};if("trueLabel"in e&&e.trueLabel!==void 0){if(typeof e.trueLabel!="string")throw new t(`prop "${n}" settings "trueLabel" must be a string for Boolean type`);o.trueLabel=e.trueLabel;}if("falseLabel"in e&&e.falseLabel!==void 0){if(typeof e.falseLabel!="string")throw new t(`prop "${n}" settings "falseLabel" must be a string for Boolean type`);o.falseLabel=e.falseLabel;}return o}function N(e,n){if(!e)return;if(typeof e!="object")throw new t(`prop "${n}" settings is not valid`);let o={};if("multiline"in e&&e.multiline!==void 0){if(typeof e.multiline!="boolean")throw new t(`prop "${n}" settings "multiline" must be a boolean for TextNode type`);o.multiline=e.multiline;}return o}function $(e,n,o){if(e!==void 0)throw new t(`prop "${n}" defaultValue is not supported for ${o} type`)}function s(e){if(e!=null){if(typeof e!="string")throw new t("tooltip must be a string");return e}}function k(e,n){let o=e.type;switch(o){case "Text":return {type:"Text",displayName:p(e.displayName,n),defaultValue:c(e.defaultValue,n),tooltip:s(e.tooltip)};case "Visibility":return {type:"Visibility",displayName:p(e.displayName,n),defaultValue:w(e.defaultValue,n),tooltip:s(e.tooltip)};case "Number":return {type:"Number",displayName:p(e.displayName,n),defaultValue:T(e.defaultValue,n),settings:C(e.settings,n),tooltip:s(e.tooltip)};case "Variant":return {type:"Variant",displayName:p(e.displayName,n),defaultValue:g(e.defaultValue,n),settings:V(e.settings,n),tooltip:s(e.tooltip)};case "Boolean":return {type:"Boolean",displayName:p(e.displayName,n),defaultValue:x(e.defaultValue,n),settings:S(e.settings,n),tooltip:s(e.tooltip)};case "TextNode":return {type:"TextNode",displayName:p(e.displayName,n),defaultValue:P(e.defaultValue,n),settings:N(e.settings,n)};case "RichText":return {type:o,displayName:p(e.displayName,n),defaultValue:h(e.defaultValue,n),tooltip:s(e.tooltip)};case "Id":case "Link":case "Image":case "Slot":return {type:o,displayName:p(e.displayName,n),defaultValue:$(e.defaultValue,n,o),tooltip:s(e.tooltip)};default:let i=o;throw new t(`prop "${n}" has invalid type: ${i}`)}}function D(e){if(!e||typeof e!="object")throw new t("props must be an object");let n={};for(let[o,i]of Object.entries(e)){if(!i||typeof i!="object")throw new t(`prop "${o}" must be an object`);if(!("type"in i))throw new t(`prop "${o}" is missing required field: type`);if(!b(i.type))throw new t(`prop "${o}" has invalid type: ${String(i.type)}`);n[o]=k(i,o);}return n}var O={ssr:true};function R(e){if(!e||typeof e!="object")throw new t("options must be an object");let n={...O};for(let[o,i]of Object.entries(e)){if(o==="applyTagSelectors"){if(typeof i!="boolean")throw new t('option "applyTagSelectors" must be a boolean');n.applyTagSelectors=i;}if(o==="ssr"){if(typeof i!="boolean")throw new t('option "ssr" must be a boolean');n.ssr=i;}}return n}function v(e){if(!e||typeof e!="object")throw new t("input must be an object");if(!("name"in e))throw new t("missing required field: 'name'");if(typeof e.name!="string")throw new t("'name' must be a string");if(e.name==="")throw new t("'name' cannot be empty");let n={name:e.name};if("description"in e){if(typeof e.description!="string")throw new t("'description' must be a string when provided");n.description=e.description;}if("group"in e){if(typeof e.group!="string")throw new t("'group' must be a string when provided");n.group=e.group;}"props"in e&&(n.props=D(e.props));let o="options"in e?e.options||{}:{};return n.options=R(o),n}export{m as Environment,d as Framework,f as ModuleLoader,l as PropType,v as parseComponentData,y as props};
var f=(o=>(o.FEDERATION="FEDERATION",o.SSR="SSR",o))(f||{}),d=(n=>(n.React="React",n))(d||{}),m=(o=>(o.Client="Client",o.Server="Server",o))(m||{}),l=(a=>(a.Id="Id",a.Text="Text",a.RichText="RichText",a.Link="Link",a.Image="Image",a.Visibility="Visibility",a.Slot="Slot",a.Number="Number",a.Variant="Variant",a.Boolean="Boolean",a.TextNode="TextNode",a))(l||{});var r={Text:e=>({...u(e),type:"Text",defaultValue:e.defaultValue}),Id:e=>({...u(e),type:"Id"}),Link:e=>({...u(e),type:"Link"}),Image:e=>({...u(e),type:"Image"}),Visibility:e=>({...u(e),type:"Visibility",defaultValue:e.defaultValue}),Slot:e=>({...u(e),type:"Slot"}),RichText:e=>({...u(e),type:"RichText",defaultValue:e.defaultValue}),Number:e=>({...u(e),type:"Number",defaultValue:e.defaultValue,settings:{min:e.min,max:e.max,decimals:e.decimals}}),Variant:e=>({...u(e),type:"Variant",defaultValue:e.defaultValue,settings:{options:e.options}}),Boolean:e=>({...u(e),type:"Boolean",defaultValue:e.defaultValue,settings:{trueLabel:e.trueLabel,falseLabel:e.falseLabel}}),TextNode:e=>({...u(e),type:"TextNode",defaultValue:e.defaultValue,settings:{multiline:e.multiline}})},y={Text:r.Text,String:r.Text,Id:r.Id,Link:r.Link,Image:r.Image,Visibility:r.Visibility,Slot:r.Slot,Children:r.Slot,RichText:r.RichText,Number:r.Number,Variant:r.Variant,Boolean:r.Boolean,TextNode:r.TextNode};function u(e){return {displayName:[e.group,e.name.replaceAll("/","-")].filter(Boolean).join("/"),...e.tooltip?{tooltip:e.tooltip}:{}}}var t=class extends Error{constructor(n){super(`Invalid ComponentData: ${n}`),this.name="InvalidComponentDataError";}};function b(e){return typeof e=="string"&&Object.values(l).includes(e)}function p(e,n){if(typeof e!="string")throw new t(`prop "${n}" 'name' must be a string`);if(e==="")throw new t(`prop "${n}" 'name' cannot be empty`);return e}function c(e,n){if(e!=null){if(typeof e!="string")throw new t(`prop "${n}" defaultValue must be a string for Text type`);return e}}function w(e,n){if(e!=null){if(typeof e!="boolean")throw new t(`prop "${n}" defaultValue must be a boolean for Visibility type`);return e}}function T(e,n){if(e!=null){if(typeof e!="number")throw new t(`prop "${n}" defaultValue must be a number for Number type`);return e}}function g(e,n){if(e!=null){if(typeof e!="string")throw new t(`prop "${n}" defaultValue must be a string for Variant type`);return e}}function x(e,n){if(e!=null){if(typeof e!="boolean")throw new t(`prop "${n}" defaultValue must be a boolean for Boolean type`);return e}}function P(e,n){if(e!=null){if(typeof e!="string")throw new t(`prop "${n}" defaultValue must be a string for TextNode type`);return e}}function h(e,n){if(e!=null){if(typeof e!="string")throw new t(`prop "${n}" defaultValue must be a string for RichText type`);return e}}function V(e,n){if(e){if(typeof e!="object")throw new t(`prop "${n}" settings is not valid`);if(!("options"in e))throw new t(`prop "${n}" settings must have an array of options for Variant type`);if(!Array.isArray(e.options))throw new t(`prop "${n}" settings must have an array of options for Variant type`);if(e.options.some(o=>typeof o!="string"))throw new t(`prop "${n}" settings must have an array of strings for Variant type`);return e}}function C(e,n){if(!e)return;if(typeof e!="object")throw new t(`prop "${n}" settings is not valid`);let o={};if("min"in e&&e.min!==void 0){if(typeof e.min!="number")throw new t(`prop "${n}" settings "min" must be a number for Number type`);if("max"in e&&typeof e.max=="number"&&e.min>e.max)throw new t(`prop "${n}" settings "min" must be less than "max" for Number type`);o.min=e.min;}if("max"in e&&e.max!==void 0){if(typeof e.max!="number")throw new t(`prop "${n}" settings "max" must be a number for Number type`);if("min"in e&&typeof e.min=="number"&&e.min>e.max)throw new t(`prop "${n}" settings "min" must be less than "max" for Number type`);o.max=e.max;}if("decimals"in e&&e.decimals!==void 0){if(typeof e.decimals!="number")throw new t(`prop "${n}" settings "decimals" must be a number for Number type`);if(!Number.isInteger(e.decimals))throw new t(`prop "${n}" settings "decimals" must be an integer number for Number type`);o.decimals=e.decimals;}return o}function S(e,n){if(!e)return;if(typeof e!="object")throw new t(`prop "${n}" settings is not valid`);let o={};if("trueLabel"in e&&e.trueLabel!==void 0){if(typeof e.trueLabel!="string")throw new t(`prop "${n}" settings "trueLabel" must be a string for Boolean type`);o.trueLabel=e.trueLabel;}if("falseLabel"in e&&e.falseLabel!==void 0){if(typeof e.falseLabel!="string")throw new t(`prop "${n}" settings "falseLabel" must be a string for Boolean type`);o.falseLabel=e.falseLabel;}return o}function N(e,n){if(!e)return;if(typeof e!="object")throw new t(`prop "${n}" settings is not valid`);let o={};if("multiline"in e&&e.multiline!==void 0){if(typeof e.multiline!="boolean")throw new t(`prop "${n}" settings "multiline" must be a boolean for TextNode type`);o.multiline=e.multiline;}return o}function $(e,n,o){if(e!==void 0)throw new t(`prop "${n}" defaultValue is not supported for ${o} type`)}function s(e){if(e!=null){if(typeof e!="string")throw new t("tooltip must be a string");return e}}function D(e,n){let o=e.type;switch(o){case "Text":return {type:"Text",displayName:p(e.displayName,n),defaultValue:c(e.defaultValue,n),tooltip:s(e.tooltip)};case "Visibility":return {type:"Visibility",displayName:p(e.displayName,n),defaultValue:w(e.defaultValue,n),tooltip:s(e.tooltip)};case "Number":return {type:"Number",displayName:p(e.displayName,n),defaultValue:T(e.defaultValue,n),settings:C(e.settings,n),tooltip:s(e.tooltip)};case "Variant":return {type:"Variant",displayName:p(e.displayName,n),defaultValue:g(e.defaultValue,n),settings:V(e.settings,n),tooltip:s(e.tooltip)};case "Boolean":return {type:"Boolean",displayName:p(e.displayName,n),defaultValue:x(e.defaultValue,n),settings:S(e.settings,n),tooltip:s(e.tooltip)};case "TextNode":return {type:"TextNode",displayName:p(e.displayName,n),defaultValue:P(e.defaultValue,n),settings:N(e.settings,n)};case "RichText":return {type:o,displayName:p(e.displayName,n),defaultValue:h(e.defaultValue,n),tooltip:s(e.tooltip)};case "Id":case "Link":case "Image":case "Slot":return {type:o,displayName:p(e.displayName,n),defaultValue:$(e.defaultValue,n,o),tooltip:s(e.tooltip)};default:let i=o;throw new t(`prop "${n}" has invalid type: ${i}`)}}function k(e){if(!e||typeof e!="object")throw new t("props must be an object");let n={};for(let[o,i]of Object.entries(e)){if(!i||typeof i!="object")throw new t(`prop "${o}" must be an object`);if(!("type"in i))throw new t(`prop "${o}" is missing required field: type`);if(!b(i.type))throw new t(`prop "${o}" has invalid type: ${String(i.type)}`);n[o]=D(i,o);}return n}var O={ssr:true};function R(e){if(!e||typeof e!="object")throw new t("options must be an object");let n={...O};for(let[o,i]of Object.entries(e)){if(o==="applyTagSelectors"){if(typeof i!="boolean")throw new t('option "applyTagSelectors" must be a boolean');n.applyTagSelectors=i;}if(o==="ssr"){if(typeof i!="boolean")throw new t('option "ssr" must be a boolean');n.ssr=i;}}return n}function v(e){if(!e||typeof e!="object")throw new t("input must be an object");if(!("name"in e))throw new t("missing required field: 'name'");if(typeof e.name!="string")throw new t("'name' must be a string");if(e.name==="")throw new t("'name' cannot be empty");let n={name:e.name};if("description"in e){if(typeof e.description!="string")throw new t("'description' must be a string when provided");n.description=e.description;}if("group"in e){if(typeof e.group!="string")throw new t("'group' must be a string when provided");n.group=e.group;}"props"in e&&(n.props=k(e.props));let o="options"in e?e.options||{}:{};return n.options=R(o),n}export{m as Environment,d as Framework,f as ModuleLoader,l as PropType,v as parseComponentData,y as props};
{
"name": "@webflow/data-types",
"version": "1.0.4",
"version": "1.1.0",
"license": "MIT",

@@ -5,0 +5,0 @@ "main": "./dist/index.cjs",