@wordpress/element 5.15.0 → 5.17.0
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/CHANGELOG.md +4 -0
- package/build/create-interpolate-element.js +19 -49
- package/build/create-interpolate-element.js.map +1 -1
- package/build/index.js +0 -11
- package/build/index.js.map +1 -1
- package/build/platform.android.js +3 -4
- package/build/platform.android.js.map +1 -1
- package/build/platform.ios.js +3 -4
- package/build/platform.ios.js.map +1 -1
- package/build/platform.js +0 -2
- package/build/platform.js.map +1 -1
- package/build/raw-html.js +5 -6
- package/build/raw-html.js.map +1 -1
- package/build/react-platform.js +0 -2
- package/build/react-platform.js.map +1 -1
- package/build/react-platform.native.js +0 -3
- package/build/react-platform.native.js.map +1 -1
- package/build/react.js +1 -7
- package/build/react.js.map +1 -1
- package/build/serialize.js +37 -100
- package/build/serialize.js.map +1 -1
- package/build/utils.js +0 -4
- package/build/utils.js.map +1 -1
- package/build-module/create-interpolate-element.js +19 -47
- package/build-module/create-interpolate-element.js.map +1 -1
- package/build-module/index.js.map +1 -1
- package/build-module/platform.android.js +2 -2
- package/build-module/platform.android.js.map +1 -1
- package/build-module/platform.ios.js +2 -2
- package/build-module/platform.ios.js.map +1 -1
- package/build-module/platform.js +0 -1
- package/build-module/platform.js.map +1 -1
- package/build-module/raw-html.js +6 -4
- package/build-module/raw-html.js.map +1 -1
- package/build-module/react-platform.js +8 -8
- package/build-module/react-platform.js.map +1 -1
- package/build-module/react-platform.native.js +1 -1
- package/build-module/react-platform.native.js.map +1 -1
- package/build-module/react.js +31 -33
- package/build-module/react.js.map +1 -1
- package/build-module/serialize.js +39 -89
- package/build-module/serialize.js.map +1 -1
- package/build-module/utils.js +0 -2
- package/build-module/utils.js.map +1 -1
- package/build-types/platform.d.ts +2 -2
- package/build-types/react-platform.d.ts +8 -8
- package/build-types/react-platform.d.ts.map +1 -1
- package/build-types/react.d.ts +29 -29
- package/build-types/react.d.ts.map +1 -1
- package/package.json +3 -3
- package/tsconfig.tsbuildinfo +1 -1
package/build/serialize.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/element/src/serialize.js"],"names":["Provider","Consumer","undefined","ForwardRef","ATTRIBUTES_TYPES","Set","SELF_CLOSING_TAGS","BOOLEAN_ATTRIBUTES","ENUMERATED_ATTRIBUTES","CSS_PROPERTIES_SUPPORTS_UNITLESS","hasPrefix","string","prefixes","some","prefix","indexOf","isInternalAttribute","attribute","getNormalAttributeValue","value","renderStyle","SVG_ATTRIBUTE_WITH_DASHES_LIST","reduce","map","toLowerCase","CASE_SENSITIVE_SVG_ATTRIBUTES","SVG_ATTRIBUTES_WITH_COLONS","replace","getNormalAttributeName","attributeLowerCase","getNormalStylePropertyName","property","startsWith","getNormalStylePropertyValue","has","renderElement","element","context","legacyContext","Array","isArray","renderChildren","toString","type","props","StrictMode","Fragment","children","RawHTML","wrapperProps","renderNativeComponent","Object","keys","length","dangerouslySetInnerHTML","__html","prototype","render","renderComponent","$$typeof","_currentValue","content","hasOwnProperty","restProps","attributes","renderAttributes","Component","instance","getChildContext","assign","html","result","i","child","key","isBooleanAttribute","isMeaningfulAttribute","style","normalName","normalValue"],"mappings":"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","sourcesContent":["/**\n * Parts of this source were derived and modified from fast-react-render,\n * released under the MIT license.\n *\n * https://github.com/alt-j/fast-react-render\n *\n * Copyright (c) 2016 Andrey Morozov\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * External dependencies\n */\nimport { isPlainObject } from 'is-plain-object';\nimport { paramCase as kebabCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tescapeHTML,\n\tescapeAttribute,\n\tisValidAttributeName,\n} from '@wordpress/escape-html';\n\n/**\n * Internal dependencies\n */\nimport { createContext, Fragment, StrictMode, forwardRef } from './react';\nimport RawHTML from './raw-html';\n\n/** @typedef {import('./react').WPElement} WPElement */\n\nconst { Provider, Consumer } = createContext( undefined );\nconst ForwardRef = forwardRef( () => {\n\treturn null;\n} );\n\n/**\n * Valid attribute types.\n *\n * @type {Set<string>}\n */\nconst ATTRIBUTES_TYPES = new Set( [ 'string', 'boolean', 'number' ] );\n\n/**\n * Element tags which can be self-closing.\n *\n * @type {Set<string>}\n */\nconst SELF_CLOSING_TAGS = new Set( [\n\t'area',\n\t'base',\n\t'br',\n\t'col',\n\t'command',\n\t'embed',\n\t'hr',\n\t'img',\n\t'input',\n\t'keygen',\n\t'link',\n\t'meta',\n\t'param',\n\t'source',\n\t'track',\n\t'wbr',\n] );\n\n/**\n * Boolean attributes are attributes whose presence as being assigned is\n * meaningful, even if only empty.\n *\n * See: https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#boolean-attributes\n * Extracted from: https://html.spec.whatwg.org/multipage/indices.html#attributes-3\n *\n * Object.keys( [ ...document.querySelectorAll( '#attributes-1 > tbody > tr' ) ]\n * .filter( ( tr ) => tr.lastChild.textContent.indexOf( 'Boolean attribute' ) !== -1 )\n * .reduce( ( result, tr ) => Object.assign( result, {\n * [ tr.firstChild.textContent.trim() ]: true\n * } ), {} ) ).sort();\n *\n * @type {Set<string>}\n */\nconst BOOLEAN_ATTRIBUTES = new Set( [\n\t'allowfullscreen',\n\t'allowpaymentrequest',\n\t'allowusermedia',\n\t'async',\n\t'autofocus',\n\t'autoplay',\n\t'checked',\n\t'controls',\n\t'default',\n\t'defer',\n\t'disabled',\n\t'download',\n\t'formnovalidate',\n\t'hidden',\n\t'ismap',\n\t'itemscope',\n\t'loop',\n\t'multiple',\n\t'muted',\n\t'nomodule',\n\t'novalidate',\n\t'open',\n\t'playsinline',\n\t'readonly',\n\t'required',\n\t'reversed',\n\t'selected',\n\t'typemustmatch',\n] );\n\n/**\n * Enumerated attributes are attributes which must be of a specific value form.\n * Like boolean attributes, these are meaningful if specified, even if not of a\n * valid enumerated value.\n *\n * See: https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#enumerated-attribute\n * Extracted from: https://html.spec.whatwg.org/multipage/indices.html#attributes-3\n *\n * Object.keys( [ ...document.querySelectorAll( '#attributes-1 > tbody > tr' ) ]\n * .filter( ( tr ) => /^(\"(.+?)\";?\\s*)+/.test( tr.lastChild.textContent.trim() ) )\n * .reduce( ( result, tr ) => Object.assign( result, {\n * [ tr.firstChild.textContent.trim() ]: true\n * } ), {} ) ).sort();\n *\n * Some notable omissions:\n *\n * - `alt`: https://blog.whatwg.org/omit-alt\n *\n * @type {Set<string>}\n */\nconst ENUMERATED_ATTRIBUTES = new Set( [\n\t'autocapitalize',\n\t'autocomplete',\n\t'charset',\n\t'contenteditable',\n\t'crossorigin',\n\t'decoding',\n\t'dir',\n\t'draggable',\n\t'enctype',\n\t'formenctype',\n\t'formmethod',\n\t'http-equiv',\n\t'inputmode',\n\t'kind',\n\t'method',\n\t'preload',\n\t'scope',\n\t'shape',\n\t'spellcheck',\n\t'translate',\n\t'type',\n\t'wrap',\n] );\n\n/**\n * Set of CSS style properties which support assignment of unitless numbers.\n * Used in rendering of style properties, where `px` unit is assumed unless\n * property is included in this set or value is zero.\n *\n * Generated via:\n *\n * Object.entries( document.createElement( 'div' ).style )\n * .filter( ( [ key ] ) => (\n * ! /^(webkit|ms|moz)/.test( key ) &&\n * ( e.style[ key ] = 10 ) &&\n * e.style[ key ] === '10'\n * ) )\n * .map( ( [ key ] ) => key )\n * .sort();\n *\n * @type {Set<string>}\n */\nconst CSS_PROPERTIES_SUPPORTS_UNITLESS = new Set( [\n\t'animation',\n\t'animationIterationCount',\n\t'baselineShift',\n\t'borderImageOutset',\n\t'borderImageSlice',\n\t'borderImageWidth',\n\t'columnCount',\n\t'cx',\n\t'cy',\n\t'fillOpacity',\n\t'flexGrow',\n\t'flexShrink',\n\t'floodOpacity',\n\t'fontWeight',\n\t'gridColumnEnd',\n\t'gridColumnStart',\n\t'gridRowEnd',\n\t'gridRowStart',\n\t'lineHeight',\n\t'opacity',\n\t'order',\n\t'orphans',\n\t'r',\n\t'rx',\n\t'ry',\n\t'shapeImageThreshold',\n\t'stopOpacity',\n\t'strokeDasharray',\n\t'strokeDashoffset',\n\t'strokeMiterlimit',\n\t'strokeOpacity',\n\t'strokeWidth',\n\t'tabSize',\n\t'widows',\n\t'x',\n\t'y',\n\t'zIndex',\n\t'zoom',\n] );\n\n/**\n * Returns true if the specified string is prefixed by one of an array of\n * possible prefixes.\n *\n * @param {string} string String to check.\n * @param {string[]} prefixes Possible prefixes.\n *\n * @return {boolean} Whether string has prefix.\n */\nexport function hasPrefix( string, prefixes ) {\n\treturn prefixes.some( ( prefix ) => string.indexOf( prefix ) === 0 );\n}\n\n/**\n * Returns true if the given prop name should be ignored in attributes\n * serialization, or false otherwise.\n *\n * @param {string} attribute Attribute to check.\n *\n * @return {boolean} Whether attribute should be ignored.\n */\nfunction isInternalAttribute( attribute ) {\n\treturn 'key' === attribute || 'children' === attribute;\n}\n\n/**\n * Returns the normal form of the element's attribute value for HTML.\n *\n * @param {string} attribute Attribute name.\n * @param {*} value Non-normalized attribute value.\n *\n * @return {*} Normalized attribute value.\n */\nfunction getNormalAttributeValue( attribute, value ) {\n\tswitch ( attribute ) {\n\t\tcase 'style':\n\t\t\treturn renderStyle( value );\n\t}\n\n\treturn value;\n}\n/**\n * This is a map of all SVG attributes that have dashes. Map(lower case prop => dashed lower case attribute).\n * We need this to render e.g strokeWidth as stroke-width.\n *\n * List from: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute.\n */\nconst SVG_ATTRIBUTE_WITH_DASHES_LIST = [\n\t'accentHeight',\n\t'alignmentBaseline',\n\t'arabicForm',\n\t'baselineShift',\n\t'capHeight',\n\t'clipPath',\n\t'clipRule',\n\t'colorInterpolation',\n\t'colorInterpolationFilters',\n\t'colorProfile',\n\t'colorRendering',\n\t'dominantBaseline',\n\t'enableBackground',\n\t'fillOpacity',\n\t'fillRule',\n\t'floodColor',\n\t'floodOpacity',\n\t'fontFamily',\n\t'fontSize',\n\t'fontSizeAdjust',\n\t'fontStretch',\n\t'fontStyle',\n\t'fontVariant',\n\t'fontWeight',\n\t'glyphName',\n\t'glyphOrientationHorizontal',\n\t'glyphOrientationVertical',\n\t'horizAdvX',\n\t'horizOriginX',\n\t'imageRendering',\n\t'letterSpacing',\n\t'lightingColor',\n\t'markerEnd',\n\t'markerMid',\n\t'markerStart',\n\t'overlinePosition',\n\t'overlineThickness',\n\t'paintOrder',\n\t'panose1',\n\t'pointerEvents',\n\t'renderingIntent',\n\t'shapeRendering',\n\t'stopColor',\n\t'stopOpacity',\n\t'strikethroughPosition',\n\t'strikethroughThickness',\n\t'strokeDasharray',\n\t'strokeDashoffset',\n\t'strokeLinecap',\n\t'strokeLinejoin',\n\t'strokeMiterlimit',\n\t'strokeOpacity',\n\t'strokeWidth',\n\t'textAnchor',\n\t'textDecoration',\n\t'textRendering',\n\t'underlinePosition',\n\t'underlineThickness',\n\t'unicodeBidi',\n\t'unicodeRange',\n\t'unitsPerEm',\n\t'vAlphabetic',\n\t'vHanging',\n\t'vIdeographic',\n\t'vMathematical',\n\t'vectorEffect',\n\t'vertAdvY',\n\t'vertOriginX',\n\t'vertOriginY',\n\t'wordSpacing',\n\t'writingMode',\n\t'xmlnsXlink',\n\t'xHeight',\n].reduce( ( map, attribute ) => {\n\t// The keys are lower-cased for more robust lookup.\n\tmap[ attribute.toLowerCase() ] = attribute;\n\treturn map;\n}, {} );\n\n/**\n * This is a map of all case-sensitive SVG attributes. Map(lowercase key => proper case attribute).\n * The keys are lower-cased for more robust lookup.\n * Note that this list only contains attributes that contain at least one capital letter.\n * Lowercase attributes don't need mapping, since we lowercase all attributes by default.\n */\nconst CASE_SENSITIVE_SVG_ATTRIBUTES = [\n\t'allowReorder',\n\t'attributeName',\n\t'attributeType',\n\t'autoReverse',\n\t'baseFrequency',\n\t'baseProfile',\n\t'calcMode',\n\t'clipPathUnits',\n\t'contentScriptType',\n\t'contentStyleType',\n\t'diffuseConstant',\n\t'edgeMode',\n\t'externalResourcesRequired',\n\t'filterRes',\n\t'filterUnits',\n\t'glyphRef',\n\t'gradientTransform',\n\t'gradientUnits',\n\t'kernelMatrix',\n\t'kernelUnitLength',\n\t'keyPoints',\n\t'keySplines',\n\t'keyTimes',\n\t'lengthAdjust',\n\t'limitingConeAngle',\n\t'markerHeight',\n\t'markerUnits',\n\t'markerWidth',\n\t'maskContentUnits',\n\t'maskUnits',\n\t'numOctaves',\n\t'pathLength',\n\t'patternContentUnits',\n\t'patternTransform',\n\t'patternUnits',\n\t'pointsAtX',\n\t'pointsAtY',\n\t'pointsAtZ',\n\t'preserveAlpha',\n\t'preserveAspectRatio',\n\t'primitiveUnits',\n\t'refX',\n\t'refY',\n\t'repeatCount',\n\t'repeatDur',\n\t'requiredExtensions',\n\t'requiredFeatures',\n\t'specularConstant',\n\t'specularExponent',\n\t'spreadMethod',\n\t'startOffset',\n\t'stdDeviation',\n\t'stitchTiles',\n\t'suppressContentEditableWarning',\n\t'suppressHydrationWarning',\n\t'surfaceScale',\n\t'systemLanguage',\n\t'tableValues',\n\t'targetX',\n\t'targetY',\n\t'textLength',\n\t'viewBox',\n\t'viewTarget',\n\t'xChannelSelector',\n\t'yChannelSelector',\n].reduce( ( map, attribute ) => {\n\t// The keys are lower-cased for more robust lookup.\n\tmap[ attribute.toLowerCase() ] = attribute;\n\treturn map;\n}, {} );\n\n/**\n * This is a map of all SVG attributes that have colons.\n * Keys are lower-cased and stripped of their colons for more robust lookup.\n */\nconst SVG_ATTRIBUTES_WITH_COLONS = [\n\t'xlink:actuate',\n\t'xlink:arcrole',\n\t'xlink:href',\n\t'xlink:role',\n\t'xlink:show',\n\t'xlink:title',\n\t'xlink:type',\n\t'xml:base',\n\t'xml:lang',\n\t'xml:space',\n\t'xmlns:xlink',\n].reduce( ( map, attribute ) => {\n\tmap[ attribute.replace( ':', '' ).toLowerCase() ] = attribute;\n\treturn map;\n}, {} );\n\n/**\n * Returns the normal form of the element's attribute name for HTML.\n *\n * @param {string} attribute Non-normalized attribute name.\n *\n * @return {string} Normalized attribute name.\n */\nfunction getNormalAttributeName( attribute ) {\n\tswitch ( attribute ) {\n\t\tcase 'htmlFor':\n\t\t\treturn 'for';\n\n\t\tcase 'className':\n\t\t\treturn 'class';\n\t}\n\tconst attributeLowerCase = attribute.toLowerCase();\n\n\tif ( CASE_SENSITIVE_SVG_ATTRIBUTES[ attributeLowerCase ] ) {\n\t\treturn CASE_SENSITIVE_SVG_ATTRIBUTES[ attributeLowerCase ];\n\t} else if ( SVG_ATTRIBUTE_WITH_DASHES_LIST[ attributeLowerCase ] ) {\n\t\treturn kebabCase(\n\t\t\tSVG_ATTRIBUTE_WITH_DASHES_LIST[ attributeLowerCase ]\n\t\t);\n\t} else if ( SVG_ATTRIBUTES_WITH_COLONS[ attributeLowerCase ] ) {\n\t\treturn SVG_ATTRIBUTES_WITH_COLONS[ attributeLowerCase ];\n\t}\n\n\treturn attributeLowerCase;\n}\n\n/**\n * Returns the normal form of the style property name for HTML.\n *\n * - Converts property names to kebab-case, e.g. 'backgroundColor' → 'background-color'\n * - Leaves custom attributes alone, e.g. '--myBackgroundColor' → '--myBackgroundColor'\n * - Converts vendor-prefixed property names to -kebab-case, e.g. 'MozTransform' → '-moz-transform'\n *\n * @param {string} property Property name.\n *\n * @return {string} Normalized property name.\n */\nfunction getNormalStylePropertyName( property ) {\n\tif ( property.startsWith( '--' ) ) {\n\t\treturn property;\n\t}\n\n\tif ( hasPrefix( property, [ 'ms', 'O', 'Moz', 'Webkit' ] ) ) {\n\t\treturn '-' + kebabCase( property );\n\t}\n\n\treturn kebabCase( property );\n}\n\n/**\n * Returns the normal form of the style property value for HTML. Appends a\n * default pixel unit if numeric, not a unitless property, and not zero.\n *\n * @param {string} property Property name.\n * @param {*} value Non-normalized property value.\n *\n * @return {*} Normalized property value.\n */\nfunction getNormalStylePropertyValue( property, value ) {\n\tif (\n\t\ttypeof value === 'number' &&\n\t\t0 !== value &&\n\t\t! CSS_PROPERTIES_SUPPORTS_UNITLESS.has( property )\n\t) {\n\t\treturn value + 'px';\n\t}\n\n\treturn value;\n}\n\n/**\n * Serializes a React element to string.\n *\n * @param {import('react').ReactNode} element Element to serialize.\n * @param {Object} [context] Context object.\n * @param {Object} [legacyContext] Legacy context object.\n *\n * @return {string} Serialized element.\n */\nexport function renderElement( element, context, legacyContext = {} ) {\n\tif ( null === element || undefined === element || false === element ) {\n\t\treturn '';\n\t}\n\n\tif ( Array.isArray( element ) ) {\n\t\treturn renderChildren( element, context, legacyContext );\n\t}\n\n\tswitch ( typeof element ) {\n\t\tcase 'string':\n\t\t\treturn escapeHTML( element );\n\n\t\tcase 'number':\n\t\t\treturn element.toString();\n\t}\n\n\tconst { type, props } = /** @type {{type?: any, props?: any}} */ (\n\t\telement\n\t);\n\n\tswitch ( type ) {\n\t\tcase StrictMode:\n\t\tcase Fragment:\n\t\t\treturn renderChildren( props.children, context, legacyContext );\n\n\t\tcase RawHTML:\n\t\t\tconst { children, ...wrapperProps } = props;\n\n\t\t\treturn renderNativeComponent(\n\t\t\t\t! Object.keys( wrapperProps ).length ? null : 'div',\n\t\t\t\t{\n\t\t\t\t\t...wrapperProps,\n\t\t\t\t\tdangerouslySetInnerHTML: { __html: children },\n\t\t\t\t},\n\t\t\t\tcontext,\n\t\t\t\tlegacyContext\n\t\t\t);\n\t}\n\n\tswitch ( typeof type ) {\n\t\tcase 'string':\n\t\t\treturn renderNativeComponent( type, props, context, legacyContext );\n\n\t\tcase 'function':\n\t\t\tif (\n\t\t\t\ttype.prototype &&\n\t\t\t\ttypeof type.prototype.render === 'function'\n\t\t\t) {\n\t\t\t\treturn renderComponent( type, props, context, legacyContext );\n\t\t\t}\n\n\t\t\treturn renderElement(\n\t\t\t\ttype( props, legacyContext ),\n\t\t\t\tcontext,\n\t\t\t\tlegacyContext\n\t\t\t);\n\t}\n\n\tswitch ( type && type.$$typeof ) {\n\t\tcase Provider.$$typeof:\n\t\t\treturn renderChildren( props.children, props.value, legacyContext );\n\n\t\tcase Consumer.$$typeof:\n\t\t\treturn renderElement(\n\t\t\t\tprops.children( context || type._currentValue ),\n\t\t\t\tcontext,\n\t\t\t\tlegacyContext\n\t\t\t);\n\n\t\tcase ForwardRef.$$typeof:\n\t\t\treturn renderElement(\n\t\t\t\ttype.render( props ),\n\t\t\t\tcontext,\n\t\t\t\tlegacyContext\n\t\t\t);\n\t}\n\n\treturn '';\n}\n\n/**\n * Serializes a native component type to string.\n *\n * @param {?string} type Native component type to serialize, or null if\n * rendering as fragment of children content.\n * @param {Object} props Props object.\n * @param {Object} [context] Context object.\n * @param {Object} [legacyContext] Legacy context object.\n *\n * @return {string} Serialized element.\n */\nexport function renderNativeComponent(\n\ttype,\n\tprops,\n\tcontext,\n\tlegacyContext = {}\n) {\n\tlet content = '';\n\tif ( type === 'textarea' && props.hasOwnProperty( 'value' ) ) {\n\t\t// Textarea children can be assigned as value prop. If it is, render in\n\t\t// place of children. Ensure to omit so it is not assigned as attribute\n\t\t// as well.\n\t\tcontent = renderChildren( props.value, context, legacyContext );\n\t\tconst { value, ...restProps } = props;\n\t\tprops = restProps;\n\t} else if (\n\t\tprops.dangerouslySetInnerHTML &&\n\t\ttypeof props.dangerouslySetInnerHTML.__html === 'string'\n\t) {\n\t\t// Dangerous content is left unescaped.\n\t\tcontent = props.dangerouslySetInnerHTML.__html;\n\t} else if ( typeof props.children !== 'undefined' ) {\n\t\tcontent = renderChildren( props.children, context, legacyContext );\n\t}\n\n\tif ( ! type ) {\n\t\treturn content;\n\t}\n\n\tconst attributes = renderAttributes( props );\n\n\tif ( SELF_CLOSING_TAGS.has( type ) ) {\n\t\treturn '<' + type + attributes + '/>';\n\t}\n\n\treturn '<' + type + attributes + '>' + content + '</' + type + '>';\n}\n\n/** @typedef {import('./react').WPComponent} WPComponent */\n\n/**\n * Serializes a non-native component type to string.\n *\n * @param {WPComponent} Component Component type to serialize.\n * @param {Object} props Props object.\n * @param {Object} [context] Context object.\n * @param {Object} [legacyContext] Legacy context object.\n *\n * @return {string} Serialized element\n */\nexport function renderComponent(\n\tComponent,\n\tprops,\n\tcontext,\n\tlegacyContext = {}\n) {\n\tconst instance = new /** @type {import('react').ComponentClass} */ (\n\t\tComponent\n\t)( props, legacyContext );\n\n\tif (\n\t\ttypeof (\n\t\t\t// Ignore reason: Current prettier reformats parens and mangles type assertion\n\t\t\t// prettier-ignore\n\t\t\t/** @type {{getChildContext?: () => unknown}} */ ( instance ).getChildContext\n\t\t) === 'function'\n\t) {\n\t\tObject.assign(\n\t\t\tlegacyContext,\n\t\t\t/** @type {{getChildContext?: () => unknown}} */ (\n\t\t\t\tinstance\n\t\t\t).getChildContext()\n\t\t);\n\t}\n\n\tconst html = renderElement( instance.render(), context, legacyContext );\n\n\treturn html;\n}\n\n/**\n * Serializes an array of children to string.\n *\n * @param {import('react').ReactNodeArray} children Children to serialize.\n * @param {Object} [context] Context object.\n * @param {Object} [legacyContext] Legacy context object.\n *\n * @return {string} Serialized children.\n */\nfunction renderChildren( children, context, legacyContext = {} ) {\n\tlet result = '';\n\n\tchildren = Array.isArray( children ) ? children : [ children ];\n\n\tfor ( let i = 0; i < children.length; i++ ) {\n\t\tconst child = children[ i ];\n\n\t\tresult += renderElement( child, context, legacyContext );\n\t}\n\n\treturn result;\n}\n\n/**\n * Renders a props object as a string of HTML attributes.\n *\n * @param {Object} props Props object.\n *\n * @return {string} Attributes string.\n */\nexport function renderAttributes( props ) {\n\tlet result = '';\n\n\tfor ( const key in props ) {\n\t\tconst attribute = getNormalAttributeName( key );\n\t\tif ( ! isValidAttributeName( attribute ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet value = getNormalAttributeValue( key, props[ key ] );\n\n\t\t// If value is not of serializeable type, skip.\n\t\tif ( ! ATTRIBUTES_TYPES.has( typeof value ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Don't render internal attribute names.\n\t\tif ( isInternalAttribute( key ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst isBooleanAttribute = BOOLEAN_ATTRIBUTES.has( attribute );\n\n\t\t// Boolean attribute should be omitted outright if its value is false.\n\t\tif ( isBooleanAttribute && value === false ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst isMeaningfulAttribute =\n\t\t\tisBooleanAttribute ||\n\t\t\thasPrefix( key, [ 'data-', 'aria-' ] ) ||\n\t\t\tENUMERATED_ATTRIBUTES.has( attribute );\n\n\t\t// Only write boolean value as attribute if meaningful.\n\t\tif ( typeof value === 'boolean' && ! isMeaningfulAttribute ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tresult += ' ' + attribute;\n\n\t\t// Boolean attributes should write attribute name, but without value.\n\t\t// Mere presence of attribute name is effective truthiness.\n\t\tif ( isBooleanAttribute ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( typeof value === 'string' ) {\n\t\t\tvalue = escapeAttribute( value );\n\t\t}\n\n\t\tresult += '=\"' + value + '\"';\n\t}\n\n\treturn result;\n}\n\n/**\n * Renders a style object as a string attribute value.\n *\n * @param {Object} style Style object.\n *\n * @return {string} Style attribute value.\n */\nexport function renderStyle( style ) {\n\t// Only generate from object, e.g. tolerate string value.\n\tif ( ! isPlainObject( style ) ) {\n\t\treturn style;\n\t}\n\n\tlet result;\n\n\tfor ( const property in style ) {\n\t\tconst value = style[ property ];\n\t\tif ( null === value || undefined === value ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( result ) {\n\t\t\tresult += ';';\n\t\t} else {\n\t\t\tresult = '';\n\t\t}\n\n\t\tconst normalName = getNormalStylePropertyName( property );\n\t\tconst normalValue = getNormalStylePropertyValue( property, value );\n\t\tresult += normalName + ':' + normalValue;\n\t}\n\n\treturn result;\n}\n\nexport default renderElement;\n"]}
|
|
1
|
+
{"version":3,"names":["_isPlainObject","require","_changeCase","_escapeHtml","_react","_rawHtml","_interopRequireDefault","Provider","Consumer","createContext","undefined","ForwardRef","forwardRef","ATTRIBUTES_TYPES","Set","SELF_CLOSING_TAGS","BOOLEAN_ATTRIBUTES","ENUMERATED_ATTRIBUTES","CSS_PROPERTIES_SUPPORTS_UNITLESS","hasPrefix","string","prefixes","some","prefix","indexOf","isInternalAttribute","attribute","getNormalAttributeValue","value","renderStyle","SVG_ATTRIBUTE_WITH_DASHES_LIST","reduce","map","toLowerCase","CASE_SENSITIVE_SVG_ATTRIBUTES","SVG_ATTRIBUTES_WITH_COLONS","replace","getNormalAttributeName","attributeLowerCase","kebabCase","getNormalStylePropertyName","property","startsWith","getNormalStylePropertyValue","has","renderElement","element","context","legacyContext","Array","isArray","renderChildren","escapeHTML","toString","type","props","StrictMode","Fragment","children","RawHTML","wrapperProps","renderNativeComponent","Object","keys","length","dangerouslySetInnerHTML","__html","prototype","render","renderComponent","$$typeof","_currentValue","content","hasOwnProperty","restProps","attributes","renderAttributes","Component","instance","getChildContext","assign","html","result","i","child","key","isValidAttributeName","isBooleanAttribute","isMeaningfulAttribute","escapeAttribute","style","isPlainObject","normalName","normalValue","_default","exports","default"],"sources":["@wordpress/element/src/serialize.js"],"sourcesContent":["/**\n * Parts of this source were derived and modified from fast-react-render,\n * released under the MIT license.\n *\n * https://github.com/alt-j/fast-react-render\n *\n * Copyright (c) 2016 Andrey Morozov\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * External dependencies\n */\nimport { isPlainObject } from 'is-plain-object';\nimport { paramCase as kebabCase } from 'change-case';\n\n/**\n * WordPress dependencies\n */\nimport {\n\tescapeHTML,\n\tescapeAttribute,\n\tisValidAttributeName,\n} from '@wordpress/escape-html';\n\n/**\n * Internal dependencies\n */\nimport { createContext, Fragment, StrictMode, forwardRef } from './react';\nimport RawHTML from './raw-html';\n\n/** @typedef {import('./react').WPElement} WPElement */\n\nconst { Provider, Consumer } = createContext( undefined );\nconst ForwardRef = forwardRef( () => {\n\treturn null;\n} );\n\n/**\n * Valid attribute types.\n *\n * @type {Set<string>}\n */\nconst ATTRIBUTES_TYPES = new Set( [ 'string', 'boolean', 'number' ] );\n\n/**\n * Element tags which can be self-closing.\n *\n * @type {Set<string>}\n */\nconst SELF_CLOSING_TAGS = new Set( [\n\t'area',\n\t'base',\n\t'br',\n\t'col',\n\t'command',\n\t'embed',\n\t'hr',\n\t'img',\n\t'input',\n\t'keygen',\n\t'link',\n\t'meta',\n\t'param',\n\t'source',\n\t'track',\n\t'wbr',\n] );\n\n/**\n * Boolean attributes are attributes whose presence as being assigned is\n * meaningful, even if only empty.\n *\n * See: https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#boolean-attributes\n * Extracted from: https://html.spec.whatwg.org/multipage/indices.html#attributes-3\n *\n * Object.keys( [ ...document.querySelectorAll( '#attributes-1 > tbody > tr' ) ]\n * .filter( ( tr ) => tr.lastChild.textContent.indexOf( 'Boolean attribute' ) !== -1 )\n * .reduce( ( result, tr ) => Object.assign( result, {\n * [ tr.firstChild.textContent.trim() ]: true\n * } ), {} ) ).sort();\n *\n * @type {Set<string>}\n */\nconst BOOLEAN_ATTRIBUTES = new Set( [\n\t'allowfullscreen',\n\t'allowpaymentrequest',\n\t'allowusermedia',\n\t'async',\n\t'autofocus',\n\t'autoplay',\n\t'checked',\n\t'controls',\n\t'default',\n\t'defer',\n\t'disabled',\n\t'download',\n\t'formnovalidate',\n\t'hidden',\n\t'ismap',\n\t'itemscope',\n\t'loop',\n\t'multiple',\n\t'muted',\n\t'nomodule',\n\t'novalidate',\n\t'open',\n\t'playsinline',\n\t'readonly',\n\t'required',\n\t'reversed',\n\t'selected',\n\t'typemustmatch',\n] );\n\n/**\n * Enumerated attributes are attributes which must be of a specific value form.\n * Like boolean attributes, these are meaningful if specified, even if not of a\n * valid enumerated value.\n *\n * See: https://html.spec.whatwg.org/multipage/common-microsyntaxes.html#enumerated-attribute\n * Extracted from: https://html.spec.whatwg.org/multipage/indices.html#attributes-3\n *\n * Object.keys( [ ...document.querySelectorAll( '#attributes-1 > tbody > tr' ) ]\n * .filter( ( tr ) => /^(\"(.+?)\";?\\s*)+/.test( tr.lastChild.textContent.trim() ) )\n * .reduce( ( result, tr ) => Object.assign( result, {\n * [ tr.firstChild.textContent.trim() ]: true\n * } ), {} ) ).sort();\n *\n * Some notable omissions:\n *\n * - `alt`: https://blog.whatwg.org/omit-alt\n *\n * @type {Set<string>}\n */\nconst ENUMERATED_ATTRIBUTES = new Set( [\n\t'autocapitalize',\n\t'autocomplete',\n\t'charset',\n\t'contenteditable',\n\t'crossorigin',\n\t'decoding',\n\t'dir',\n\t'draggable',\n\t'enctype',\n\t'formenctype',\n\t'formmethod',\n\t'http-equiv',\n\t'inputmode',\n\t'kind',\n\t'method',\n\t'preload',\n\t'scope',\n\t'shape',\n\t'spellcheck',\n\t'translate',\n\t'type',\n\t'wrap',\n] );\n\n/**\n * Set of CSS style properties which support assignment of unitless numbers.\n * Used in rendering of style properties, where `px` unit is assumed unless\n * property is included in this set or value is zero.\n *\n * Generated via:\n *\n * Object.entries( document.createElement( 'div' ).style )\n * .filter( ( [ key ] ) => (\n * ! /^(webkit|ms|moz)/.test( key ) &&\n * ( e.style[ key ] = 10 ) &&\n * e.style[ key ] === '10'\n * ) )\n * .map( ( [ key ] ) => key )\n * .sort();\n *\n * @type {Set<string>}\n */\nconst CSS_PROPERTIES_SUPPORTS_UNITLESS = new Set( [\n\t'animation',\n\t'animationIterationCount',\n\t'baselineShift',\n\t'borderImageOutset',\n\t'borderImageSlice',\n\t'borderImageWidth',\n\t'columnCount',\n\t'cx',\n\t'cy',\n\t'fillOpacity',\n\t'flexGrow',\n\t'flexShrink',\n\t'floodOpacity',\n\t'fontWeight',\n\t'gridColumnEnd',\n\t'gridColumnStart',\n\t'gridRowEnd',\n\t'gridRowStart',\n\t'lineHeight',\n\t'opacity',\n\t'order',\n\t'orphans',\n\t'r',\n\t'rx',\n\t'ry',\n\t'shapeImageThreshold',\n\t'stopOpacity',\n\t'strokeDasharray',\n\t'strokeDashoffset',\n\t'strokeMiterlimit',\n\t'strokeOpacity',\n\t'strokeWidth',\n\t'tabSize',\n\t'widows',\n\t'x',\n\t'y',\n\t'zIndex',\n\t'zoom',\n] );\n\n/**\n * Returns true if the specified string is prefixed by one of an array of\n * possible prefixes.\n *\n * @param {string} string String to check.\n * @param {string[]} prefixes Possible prefixes.\n *\n * @return {boolean} Whether string has prefix.\n */\nexport function hasPrefix( string, prefixes ) {\n\treturn prefixes.some( ( prefix ) => string.indexOf( prefix ) === 0 );\n}\n\n/**\n * Returns true if the given prop name should be ignored in attributes\n * serialization, or false otherwise.\n *\n * @param {string} attribute Attribute to check.\n *\n * @return {boolean} Whether attribute should be ignored.\n */\nfunction isInternalAttribute( attribute ) {\n\treturn 'key' === attribute || 'children' === attribute;\n}\n\n/**\n * Returns the normal form of the element's attribute value for HTML.\n *\n * @param {string} attribute Attribute name.\n * @param {*} value Non-normalized attribute value.\n *\n * @return {*} Normalized attribute value.\n */\nfunction getNormalAttributeValue( attribute, value ) {\n\tswitch ( attribute ) {\n\t\tcase 'style':\n\t\t\treturn renderStyle( value );\n\t}\n\n\treturn value;\n}\n/**\n * This is a map of all SVG attributes that have dashes. Map(lower case prop => dashed lower case attribute).\n * We need this to render e.g strokeWidth as stroke-width.\n *\n * List from: https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute.\n */\nconst SVG_ATTRIBUTE_WITH_DASHES_LIST = [\n\t'accentHeight',\n\t'alignmentBaseline',\n\t'arabicForm',\n\t'baselineShift',\n\t'capHeight',\n\t'clipPath',\n\t'clipRule',\n\t'colorInterpolation',\n\t'colorInterpolationFilters',\n\t'colorProfile',\n\t'colorRendering',\n\t'dominantBaseline',\n\t'enableBackground',\n\t'fillOpacity',\n\t'fillRule',\n\t'floodColor',\n\t'floodOpacity',\n\t'fontFamily',\n\t'fontSize',\n\t'fontSizeAdjust',\n\t'fontStretch',\n\t'fontStyle',\n\t'fontVariant',\n\t'fontWeight',\n\t'glyphName',\n\t'glyphOrientationHorizontal',\n\t'glyphOrientationVertical',\n\t'horizAdvX',\n\t'horizOriginX',\n\t'imageRendering',\n\t'letterSpacing',\n\t'lightingColor',\n\t'markerEnd',\n\t'markerMid',\n\t'markerStart',\n\t'overlinePosition',\n\t'overlineThickness',\n\t'paintOrder',\n\t'panose1',\n\t'pointerEvents',\n\t'renderingIntent',\n\t'shapeRendering',\n\t'stopColor',\n\t'stopOpacity',\n\t'strikethroughPosition',\n\t'strikethroughThickness',\n\t'strokeDasharray',\n\t'strokeDashoffset',\n\t'strokeLinecap',\n\t'strokeLinejoin',\n\t'strokeMiterlimit',\n\t'strokeOpacity',\n\t'strokeWidth',\n\t'textAnchor',\n\t'textDecoration',\n\t'textRendering',\n\t'underlinePosition',\n\t'underlineThickness',\n\t'unicodeBidi',\n\t'unicodeRange',\n\t'unitsPerEm',\n\t'vAlphabetic',\n\t'vHanging',\n\t'vIdeographic',\n\t'vMathematical',\n\t'vectorEffect',\n\t'vertAdvY',\n\t'vertOriginX',\n\t'vertOriginY',\n\t'wordSpacing',\n\t'writingMode',\n\t'xmlnsXlink',\n\t'xHeight',\n].reduce( ( map, attribute ) => {\n\t// The keys are lower-cased for more robust lookup.\n\tmap[ attribute.toLowerCase() ] = attribute;\n\treturn map;\n}, {} );\n\n/**\n * This is a map of all case-sensitive SVG attributes. Map(lowercase key => proper case attribute).\n * The keys are lower-cased for more robust lookup.\n * Note that this list only contains attributes that contain at least one capital letter.\n * Lowercase attributes don't need mapping, since we lowercase all attributes by default.\n */\nconst CASE_SENSITIVE_SVG_ATTRIBUTES = [\n\t'allowReorder',\n\t'attributeName',\n\t'attributeType',\n\t'autoReverse',\n\t'baseFrequency',\n\t'baseProfile',\n\t'calcMode',\n\t'clipPathUnits',\n\t'contentScriptType',\n\t'contentStyleType',\n\t'diffuseConstant',\n\t'edgeMode',\n\t'externalResourcesRequired',\n\t'filterRes',\n\t'filterUnits',\n\t'glyphRef',\n\t'gradientTransform',\n\t'gradientUnits',\n\t'kernelMatrix',\n\t'kernelUnitLength',\n\t'keyPoints',\n\t'keySplines',\n\t'keyTimes',\n\t'lengthAdjust',\n\t'limitingConeAngle',\n\t'markerHeight',\n\t'markerUnits',\n\t'markerWidth',\n\t'maskContentUnits',\n\t'maskUnits',\n\t'numOctaves',\n\t'pathLength',\n\t'patternContentUnits',\n\t'patternTransform',\n\t'patternUnits',\n\t'pointsAtX',\n\t'pointsAtY',\n\t'pointsAtZ',\n\t'preserveAlpha',\n\t'preserveAspectRatio',\n\t'primitiveUnits',\n\t'refX',\n\t'refY',\n\t'repeatCount',\n\t'repeatDur',\n\t'requiredExtensions',\n\t'requiredFeatures',\n\t'specularConstant',\n\t'specularExponent',\n\t'spreadMethod',\n\t'startOffset',\n\t'stdDeviation',\n\t'stitchTiles',\n\t'suppressContentEditableWarning',\n\t'suppressHydrationWarning',\n\t'surfaceScale',\n\t'systemLanguage',\n\t'tableValues',\n\t'targetX',\n\t'targetY',\n\t'textLength',\n\t'viewBox',\n\t'viewTarget',\n\t'xChannelSelector',\n\t'yChannelSelector',\n].reduce( ( map, attribute ) => {\n\t// The keys are lower-cased for more robust lookup.\n\tmap[ attribute.toLowerCase() ] = attribute;\n\treturn map;\n}, {} );\n\n/**\n * This is a map of all SVG attributes that have colons.\n * Keys are lower-cased and stripped of their colons for more robust lookup.\n */\nconst SVG_ATTRIBUTES_WITH_COLONS = [\n\t'xlink:actuate',\n\t'xlink:arcrole',\n\t'xlink:href',\n\t'xlink:role',\n\t'xlink:show',\n\t'xlink:title',\n\t'xlink:type',\n\t'xml:base',\n\t'xml:lang',\n\t'xml:space',\n\t'xmlns:xlink',\n].reduce( ( map, attribute ) => {\n\tmap[ attribute.replace( ':', '' ).toLowerCase() ] = attribute;\n\treturn map;\n}, {} );\n\n/**\n * Returns the normal form of the element's attribute name for HTML.\n *\n * @param {string} attribute Non-normalized attribute name.\n *\n * @return {string} Normalized attribute name.\n */\nfunction getNormalAttributeName( attribute ) {\n\tswitch ( attribute ) {\n\t\tcase 'htmlFor':\n\t\t\treturn 'for';\n\n\t\tcase 'className':\n\t\t\treturn 'class';\n\t}\n\tconst attributeLowerCase = attribute.toLowerCase();\n\n\tif ( CASE_SENSITIVE_SVG_ATTRIBUTES[ attributeLowerCase ] ) {\n\t\treturn CASE_SENSITIVE_SVG_ATTRIBUTES[ attributeLowerCase ];\n\t} else if ( SVG_ATTRIBUTE_WITH_DASHES_LIST[ attributeLowerCase ] ) {\n\t\treturn kebabCase(\n\t\t\tSVG_ATTRIBUTE_WITH_DASHES_LIST[ attributeLowerCase ]\n\t\t);\n\t} else if ( SVG_ATTRIBUTES_WITH_COLONS[ attributeLowerCase ] ) {\n\t\treturn SVG_ATTRIBUTES_WITH_COLONS[ attributeLowerCase ];\n\t}\n\n\treturn attributeLowerCase;\n}\n\n/**\n * Returns the normal form of the style property name for HTML.\n *\n * - Converts property names to kebab-case, e.g. 'backgroundColor' → 'background-color'\n * - Leaves custom attributes alone, e.g. '--myBackgroundColor' → '--myBackgroundColor'\n * - Converts vendor-prefixed property names to -kebab-case, e.g. 'MozTransform' → '-moz-transform'\n *\n * @param {string} property Property name.\n *\n * @return {string} Normalized property name.\n */\nfunction getNormalStylePropertyName( property ) {\n\tif ( property.startsWith( '--' ) ) {\n\t\treturn property;\n\t}\n\n\tif ( hasPrefix( property, [ 'ms', 'O', 'Moz', 'Webkit' ] ) ) {\n\t\treturn '-' + kebabCase( property );\n\t}\n\n\treturn kebabCase( property );\n}\n\n/**\n * Returns the normal form of the style property value for HTML. Appends a\n * default pixel unit if numeric, not a unitless property, and not zero.\n *\n * @param {string} property Property name.\n * @param {*} value Non-normalized property value.\n *\n * @return {*} Normalized property value.\n */\nfunction getNormalStylePropertyValue( property, value ) {\n\tif (\n\t\ttypeof value === 'number' &&\n\t\t0 !== value &&\n\t\t! CSS_PROPERTIES_SUPPORTS_UNITLESS.has( property )\n\t) {\n\t\treturn value + 'px';\n\t}\n\n\treturn value;\n}\n\n/**\n * Serializes a React element to string.\n *\n * @param {import('react').ReactNode} element Element to serialize.\n * @param {Object} [context] Context object.\n * @param {Object} [legacyContext] Legacy context object.\n *\n * @return {string} Serialized element.\n */\nexport function renderElement( element, context, legacyContext = {} ) {\n\tif ( null === element || undefined === element || false === element ) {\n\t\treturn '';\n\t}\n\n\tif ( Array.isArray( element ) ) {\n\t\treturn renderChildren( element, context, legacyContext );\n\t}\n\n\tswitch ( typeof element ) {\n\t\tcase 'string':\n\t\t\treturn escapeHTML( element );\n\n\t\tcase 'number':\n\t\t\treturn element.toString();\n\t}\n\n\tconst { type, props } = /** @type {{type?: any, props?: any}} */ (\n\t\telement\n\t);\n\n\tswitch ( type ) {\n\t\tcase StrictMode:\n\t\tcase Fragment:\n\t\t\treturn renderChildren( props.children, context, legacyContext );\n\n\t\tcase RawHTML:\n\t\t\tconst { children, ...wrapperProps } = props;\n\n\t\t\treturn renderNativeComponent(\n\t\t\t\t! Object.keys( wrapperProps ).length ? null : 'div',\n\t\t\t\t{\n\t\t\t\t\t...wrapperProps,\n\t\t\t\t\tdangerouslySetInnerHTML: { __html: children },\n\t\t\t\t},\n\t\t\t\tcontext,\n\t\t\t\tlegacyContext\n\t\t\t);\n\t}\n\n\tswitch ( typeof type ) {\n\t\tcase 'string':\n\t\t\treturn renderNativeComponent( type, props, context, legacyContext );\n\n\t\tcase 'function':\n\t\t\tif (\n\t\t\t\ttype.prototype &&\n\t\t\t\ttypeof type.prototype.render === 'function'\n\t\t\t) {\n\t\t\t\treturn renderComponent( type, props, context, legacyContext );\n\t\t\t}\n\n\t\t\treturn renderElement(\n\t\t\t\ttype( props, legacyContext ),\n\t\t\t\tcontext,\n\t\t\t\tlegacyContext\n\t\t\t);\n\t}\n\n\tswitch ( type && type.$$typeof ) {\n\t\tcase Provider.$$typeof:\n\t\t\treturn renderChildren( props.children, props.value, legacyContext );\n\n\t\tcase Consumer.$$typeof:\n\t\t\treturn renderElement(\n\t\t\t\tprops.children( context || type._currentValue ),\n\t\t\t\tcontext,\n\t\t\t\tlegacyContext\n\t\t\t);\n\n\t\tcase ForwardRef.$$typeof:\n\t\t\treturn renderElement(\n\t\t\t\ttype.render( props ),\n\t\t\t\tcontext,\n\t\t\t\tlegacyContext\n\t\t\t);\n\t}\n\n\treturn '';\n}\n\n/**\n * Serializes a native component type to string.\n *\n * @param {?string} type Native component type to serialize, or null if\n * rendering as fragment of children content.\n * @param {Object} props Props object.\n * @param {Object} [context] Context object.\n * @param {Object} [legacyContext] Legacy context object.\n *\n * @return {string} Serialized element.\n */\nexport function renderNativeComponent(\n\ttype,\n\tprops,\n\tcontext,\n\tlegacyContext = {}\n) {\n\tlet content = '';\n\tif ( type === 'textarea' && props.hasOwnProperty( 'value' ) ) {\n\t\t// Textarea children can be assigned as value prop. If it is, render in\n\t\t// place of children. Ensure to omit so it is not assigned as attribute\n\t\t// as well.\n\t\tcontent = renderChildren( props.value, context, legacyContext );\n\t\tconst { value, ...restProps } = props;\n\t\tprops = restProps;\n\t} else if (\n\t\tprops.dangerouslySetInnerHTML &&\n\t\ttypeof props.dangerouslySetInnerHTML.__html === 'string'\n\t) {\n\t\t// Dangerous content is left unescaped.\n\t\tcontent = props.dangerouslySetInnerHTML.__html;\n\t} else if ( typeof props.children !== 'undefined' ) {\n\t\tcontent = renderChildren( props.children, context, legacyContext );\n\t}\n\n\tif ( ! type ) {\n\t\treturn content;\n\t}\n\n\tconst attributes = renderAttributes( props );\n\n\tif ( SELF_CLOSING_TAGS.has( type ) ) {\n\t\treturn '<' + type + attributes + '/>';\n\t}\n\n\treturn '<' + type + attributes + '>' + content + '</' + type + '>';\n}\n\n/** @typedef {import('./react').WPComponent} WPComponent */\n\n/**\n * Serializes a non-native component type to string.\n *\n * @param {WPComponent} Component Component type to serialize.\n * @param {Object} props Props object.\n * @param {Object} [context] Context object.\n * @param {Object} [legacyContext] Legacy context object.\n *\n * @return {string} Serialized element\n */\nexport function renderComponent(\n\tComponent,\n\tprops,\n\tcontext,\n\tlegacyContext = {}\n) {\n\tconst instance = new /** @type {import('react').ComponentClass} */ (\n\t\tComponent\n\t)( props, legacyContext );\n\n\tif (\n\t\ttypeof (\n\t\t\t// Ignore reason: Current prettier reformats parens and mangles type assertion\n\t\t\t// prettier-ignore\n\t\t\t/** @type {{getChildContext?: () => unknown}} */ ( instance ).getChildContext\n\t\t) === 'function'\n\t) {\n\t\tObject.assign(\n\t\t\tlegacyContext,\n\t\t\t/** @type {{getChildContext?: () => unknown}} */ (\n\t\t\t\tinstance\n\t\t\t).getChildContext()\n\t\t);\n\t}\n\n\tconst html = renderElement( instance.render(), context, legacyContext );\n\n\treturn html;\n}\n\n/**\n * Serializes an array of children to string.\n *\n * @param {import('react').ReactNodeArray} children Children to serialize.\n * @param {Object} [context] Context object.\n * @param {Object} [legacyContext] Legacy context object.\n *\n * @return {string} Serialized children.\n */\nfunction renderChildren( children, context, legacyContext = {} ) {\n\tlet result = '';\n\n\tchildren = Array.isArray( children ) ? children : [ children ];\n\n\tfor ( let i = 0; i < children.length; i++ ) {\n\t\tconst child = children[ i ];\n\n\t\tresult += renderElement( child, context, legacyContext );\n\t}\n\n\treturn result;\n}\n\n/**\n * Renders a props object as a string of HTML attributes.\n *\n * @param {Object} props Props object.\n *\n * @return {string} Attributes string.\n */\nexport function renderAttributes( props ) {\n\tlet result = '';\n\n\tfor ( const key in props ) {\n\t\tconst attribute = getNormalAttributeName( key );\n\t\tif ( ! isValidAttributeName( attribute ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet value = getNormalAttributeValue( key, props[ key ] );\n\n\t\t// If value is not of serializeable type, skip.\n\t\tif ( ! ATTRIBUTES_TYPES.has( typeof value ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Don't render internal attribute names.\n\t\tif ( isInternalAttribute( key ) ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst isBooleanAttribute = BOOLEAN_ATTRIBUTES.has( attribute );\n\n\t\t// Boolean attribute should be omitted outright if its value is false.\n\t\tif ( isBooleanAttribute && value === false ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst isMeaningfulAttribute =\n\t\t\tisBooleanAttribute ||\n\t\t\thasPrefix( key, [ 'data-', 'aria-' ] ) ||\n\t\t\tENUMERATED_ATTRIBUTES.has( attribute );\n\n\t\t// Only write boolean value as attribute if meaningful.\n\t\tif ( typeof value === 'boolean' && ! isMeaningfulAttribute ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tresult += ' ' + attribute;\n\n\t\t// Boolean attributes should write attribute name, but without value.\n\t\t// Mere presence of attribute name is effective truthiness.\n\t\tif ( isBooleanAttribute ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( typeof value === 'string' ) {\n\t\t\tvalue = escapeAttribute( value );\n\t\t}\n\n\t\tresult += '=\"' + value + '\"';\n\t}\n\n\treturn result;\n}\n\n/**\n * Renders a style object as a string attribute value.\n *\n * @param {Object} style Style object.\n *\n * @return {string} Style attribute value.\n */\nexport function renderStyle( style ) {\n\t// Only generate from object, e.g. tolerate string value.\n\tif ( ! isPlainObject( style ) ) {\n\t\treturn style;\n\t}\n\n\tlet result;\n\n\tfor ( const property in style ) {\n\t\tconst value = style[ property ];\n\t\tif ( null === value || undefined === value ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif ( result ) {\n\t\t\tresult += ';';\n\t\t} else {\n\t\t\tresult = '';\n\t\t}\n\n\t\tconst normalName = getNormalStylePropertyName( property );\n\t\tconst normalValue = getNormalStylePropertyValue( property, value );\n\t\tresult += normalName + ':' + normalValue;\n\t}\n\n\treturn result;\n}\n\nexport default renderElement;\n"],"mappings":"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"}
|
package/build/utils.js
CHANGED
|
@@ -4,7 +4,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.isEmptyElement = void 0;
|
|
7
|
-
|
|
8
7
|
/**
|
|
9
8
|
* Checks if the provided WP element is empty.
|
|
10
9
|
*
|
|
@@ -15,13 +14,10 @@ const isEmptyElement = element => {
|
|
|
15
14
|
if (typeof element === 'number') {
|
|
16
15
|
return false;
|
|
17
16
|
}
|
|
18
|
-
|
|
19
17
|
if (typeof element?.valueOf() === 'string' || Array.isArray(element)) {
|
|
20
18
|
return !element.length;
|
|
21
19
|
}
|
|
22
|
-
|
|
23
20
|
return !element;
|
|
24
21
|
};
|
|
25
|
-
|
|
26
22
|
exports.isEmptyElement = isEmptyElement;
|
|
27
23
|
//# sourceMappingURL=utils.js.map
|
package/build/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["isEmptyElement","element","valueOf","Array","isArray","length","exports"],"sources":["@wordpress/element/src/utils.js"],"sourcesContent":["/**\n * Checks if the provided WP element is empty.\n *\n * @param {*} element WP element to check.\n * @return {boolean} True when an element is considered empty.\n */\nexport const isEmptyElement = ( element ) => {\n\tif ( typeof element === 'number' ) {\n\t\treturn false;\n\t}\n\n\tif ( typeof element?.valueOf() === 'string' || Array.isArray( element ) ) {\n\t\treturn ! element.length;\n\t}\n\n\treturn ! element;\n};\n"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMA,cAAc,GAAKC,OAAO,IAAM;EAC5C,IAAK,OAAOA,OAAO,KAAK,QAAQ,EAAG;IAClC,OAAO,KAAK;EACb;EAEA,IAAK,OAAOA,OAAO,EAAEC,OAAO,CAAC,CAAC,KAAK,QAAQ,IAAIC,KAAK,CAACC,OAAO,CAAEH,OAAQ,CAAC,EAAG;IACzE,OAAO,CAAEA,OAAO,CAACI,MAAM;EACxB;EAEA,OAAO,CAAEJ,OAAO;AACjB,CAAC;AAACK,OAAA,CAAAN,cAAA,GAAAA,cAAA"}
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
* Internal dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { createElement, cloneElement, Fragment, isValidElement } from './react';
|
|
5
|
+
|
|
5
6
|
/** @typedef {import('./react').WPElement} WPElement */
|
|
6
7
|
|
|
7
8
|
let indoc, offset, output, stack;
|
|
9
|
+
|
|
8
10
|
/**
|
|
9
11
|
* Matches tags in the localized string
|
|
10
12
|
*
|
|
@@ -20,8 +22,8 @@ let indoc, offset, output, stack;
|
|
|
20
22
|
*
|
|
21
23
|
* @type {RegExp}
|
|
22
24
|
*/
|
|
23
|
-
|
|
24
25
|
const tokenizer = /<(\/)?(\w+)\s*(\/)?>/g;
|
|
26
|
+
|
|
25
27
|
/**
|
|
26
28
|
* The stack frame tracking parse progress.
|
|
27
29
|
*
|
|
@@ -61,7 +63,6 @@ const tokenizer = /<(\/)?(\w+)\s*(\/)?>/g;
|
|
|
61
63
|
*
|
|
62
64
|
* @return {Frame} The stack frame tracking parse progress.
|
|
63
65
|
*/
|
|
64
|
-
|
|
65
66
|
function createFrame(element, tokenStart, tokenLength, prevOffset, leadingTextStart) {
|
|
66
67
|
return {
|
|
67
68
|
element,
|
|
@@ -72,6 +73,7 @@ function createFrame(element, tokenStart, tokenLength, prevOffset, leadingTextSt
|
|
|
72
73
|
children: []
|
|
73
74
|
};
|
|
74
75
|
}
|
|
76
|
+
|
|
75
77
|
/**
|
|
76
78
|
* This function creates an interpolated element from a passed in string with
|
|
77
79
|
* specific tags matching how the string should be converted to an element via
|
|
@@ -99,24 +101,21 @@ function createFrame(element, tokenStart, tokenLength, prevOffset, leadingTextSt
|
|
|
99
101
|
* @throws {TypeError}
|
|
100
102
|
* @return {WPElement} A wp element.
|
|
101
103
|
*/
|
|
102
|
-
|
|
103
|
-
|
|
104
104
|
const createInterpolateElement = (interpolatedString, conversionMap) => {
|
|
105
105
|
indoc = interpolatedString;
|
|
106
106
|
offset = 0;
|
|
107
107
|
output = [];
|
|
108
108
|
stack = [];
|
|
109
109
|
tokenizer.lastIndex = 0;
|
|
110
|
-
|
|
111
110
|
if (!isValidConversionMap(conversionMap)) {
|
|
112
111
|
throw new TypeError('The conversionMap provided is not valid. It must be an object with values that are WPElements');
|
|
113
112
|
}
|
|
114
|
-
|
|
115
|
-
|
|
113
|
+
do {
|
|
114
|
+
// twiddle our thumbs
|
|
116
115
|
} while (proceed(conversionMap));
|
|
117
|
-
|
|
118
116
|
return createElement(Fragment, null, ...output);
|
|
119
117
|
};
|
|
118
|
+
|
|
120
119
|
/**
|
|
121
120
|
* Validate conversion map.
|
|
122
121
|
*
|
|
@@ -129,13 +128,12 @@ const createInterpolateElement = (interpolatedString, conversionMap) => {
|
|
|
129
128
|
*
|
|
130
129
|
* @return {boolean} True means the map is valid.
|
|
131
130
|
*/
|
|
132
|
-
|
|
133
|
-
|
|
134
131
|
const isValidConversionMap = conversionMap => {
|
|
135
132
|
const isObject = typeof conversionMap === 'object';
|
|
136
133
|
const values = isObject && Object.values(conversionMap);
|
|
137
134
|
return isObject && values.length && values.every(element => isValidElement(element));
|
|
138
135
|
};
|
|
136
|
+
|
|
139
137
|
/**
|
|
140
138
|
* This is the iterator over the matches in the string.
|
|
141
139
|
*
|
|
@@ -145,19 +143,15 @@ const isValidConversionMap = conversionMap => {
|
|
|
145
143
|
*
|
|
146
144
|
* @return {boolean} true for continuing to iterate, false for finished.
|
|
147
145
|
*/
|
|
148
|
-
|
|
149
|
-
|
|
150
146
|
function proceed(conversionMap) {
|
|
151
147
|
const next = nextToken();
|
|
152
148
|
const [tokenType, name, startOffset, tokenLength] = next;
|
|
153
149
|
const stackDepth = stack.length;
|
|
154
150
|
const leadingTextStart = startOffset > offset ? offset : null;
|
|
155
|
-
|
|
156
151
|
if (!conversionMap[name]) {
|
|
157
152
|
addText();
|
|
158
153
|
return false;
|
|
159
154
|
}
|
|
160
|
-
|
|
161
155
|
switch (tokenType) {
|
|
162
156
|
case 'no-more-tokens':
|
|
163
157
|
if (stackDepth !== 0) {
|
|
@@ -167,41 +161,36 @@ function proceed(conversionMap) {
|
|
|
167
161
|
} = stack.pop();
|
|
168
162
|
output.push(indoc.substr(stackLeadingText, tokenStart));
|
|
169
163
|
}
|
|
170
|
-
|
|
171
164
|
addText();
|
|
172
165
|
return false;
|
|
173
|
-
|
|
174
166
|
case 'self-closed':
|
|
175
167
|
if (0 === stackDepth) {
|
|
176
168
|
if (null !== leadingTextStart) {
|
|
177
169
|
output.push(indoc.substr(leadingTextStart, startOffset - leadingTextStart));
|
|
178
170
|
}
|
|
179
|
-
|
|
180
171
|
output.push(conversionMap[name]);
|
|
181
172
|
offset = startOffset + tokenLength;
|
|
182
173
|
return true;
|
|
183
|
-
}
|
|
184
|
-
|
|
174
|
+
}
|
|
185
175
|
|
|
176
|
+
// Otherwise we found an inner element.
|
|
186
177
|
addChild(createFrame(conversionMap[name], startOffset, tokenLength));
|
|
187
178
|
offset = startOffset + tokenLength;
|
|
188
179
|
return true;
|
|
189
|
-
|
|
190
180
|
case 'opener':
|
|
191
181
|
stack.push(createFrame(conversionMap[name], startOffset, tokenLength, startOffset + tokenLength, leadingTextStart));
|
|
192
182
|
offset = startOffset + tokenLength;
|
|
193
183
|
return true;
|
|
194
|
-
|
|
195
184
|
case 'closer':
|
|
196
185
|
// If we're not nesting then this is easy - close the block.
|
|
197
186
|
if (1 === stackDepth) {
|
|
198
187
|
closeOuterElement(startOffset);
|
|
199
188
|
offset = startOffset + tokenLength;
|
|
200
189
|
return true;
|
|
201
|
-
}
|
|
202
|
-
// block and add it as a innerBlock to the parent.
|
|
203
|
-
|
|
190
|
+
}
|
|
204
191
|
|
|
192
|
+
// Otherwise we're nested and we have to close out the current
|
|
193
|
+
// block and add it as a innerBlock to the parent.
|
|
205
194
|
const stackTop = stack.pop();
|
|
206
195
|
const text = indoc.substr(stackTop.prevOffset, startOffset - stackTop.prevOffset);
|
|
207
196
|
stackTop.children.push(text);
|
|
@@ -211,12 +200,12 @@ function proceed(conversionMap) {
|
|
|
211
200
|
addChild(frame);
|
|
212
201
|
offset = startOffset + tokenLength;
|
|
213
202
|
return true;
|
|
214
|
-
|
|
215
203
|
default:
|
|
216
204
|
addText();
|
|
217
205
|
return false;
|
|
218
206
|
}
|
|
219
207
|
}
|
|
208
|
+
|
|
220
209
|
/**
|
|
221
210
|
* Grabs the next token match in the string and returns it's details.
|
|
222
211
|
*
|
|
@@ -224,29 +213,24 @@ function proceed(conversionMap) {
|
|
|
224
213
|
*
|
|
225
214
|
* @return {Array} An array of details for the token matched.
|
|
226
215
|
*/
|
|
227
|
-
|
|
228
|
-
|
|
229
216
|
function nextToken() {
|
|
230
|
-
const matches = tokenizer.exec(indoc);
|
|
231
|
-
|
|
217
|
+
const matches = tokenizer.exec(indoc);
|
|
218
|
+
// We have no more tokens.
|
|
232
219
|
if (null === matches) {
|
|
233
220
|
return ['no-more-tokens'];
|
|
234
221
|
}
|
|
235
|
-
|
|
236
222
|
const startedAt = matches.index;
|
|
237
223
|
const [match, isClosing, name, isSelfClosed] = matches;
|
|
238
224
|
const length = match.length;
|
|
239
|
-
|
|
240
225
|
if (isSelfClosed) {
|
|
241
226
|
return ['self-closed', name, startedAt, length];
|
|
242
227
|
}
|
|
243
|
-
|
|
244
228
|
if (isClosing) {
|
|
245
229
|
return ['closer', name, startedAt, length];
|
|
246
230
|
}
|
|
247
|
-
|
|
248
231
|
return ['opener', name, startedAt, length];
|
|
249
232
|
}
|
|
233
|
+
|
|
250
234
|
/**
|
|
251
235
|
* Pushes text extracted from the indoc string to the output stack given the
|
|
252
236
|
* current rawLength value and offset (if rawLength is provided ) or the
|
|
@@ -254,17 +238,14 @@ function nextToken() {
|
|
|
254
238
|
*
|
|
255
239
|
* @private
|
|
256
240
|
*/
|
|
257
|
-
|
|
258
|
-
|
|
259
241
|
function addText() {
|
|
260
242
|
const length = indoc.length - offset;
|
|
261
|
-
|
|
262
243
|
if (0 === length) {
|
|
263
244
|
return;
|
|
264
245
|
}
|
|
265
|
-
|
|
266
246
|
output.push(indoc.substr(offset, length));
|
|
267
247
|
}
|
|
248
|
+
|
|
268
249
|
/**
|
|
269
250
|
* Pushes a child element to the associated parent element's children for the
|
|
270
251
|
* parent currently active in the stack.
|
|
@@ -274,8 +255,6 @@ function addText() {
|
|
|
274
255
|
* @param {Frame} frame The Frame containing the child element and it's
|
|
275
256
|
* token information.
|
|
276
257
|
*/
|
|
277
|
-
|
|
278
|
-
|
|
279
258
|
function addChild(frame) {
|
|
280
259
|
const {
|
|
281
260
|
element,
|
|
@@ -286,14 +265,13 @@ function addChild(frame) {
|
|
|
286
265
|
} = frame;
|
|
287
266
|
const parent = stack[stack.length - 1];
|
|
288
267
|
const text = indoc.substr(parent.prevOffset, tokenStart - parent.prevOffset);
|
|
289
|
-
|
|
290
268
|
if (text) {
|
|
291
269
|
parent.children.push(text);
|
|
292
270
|
}
|
|
293
|
-
|
|
294
271
|
parent.children.push(cloneElement(element, null, ...children));
|
|
295
272
|
parent.prevOffset = prevOffset ? prevOffset : tokenStart + tokenLength;
|
|
296
273
|
}
|
|
274
|
+
|
|
297
275
|
/**
|
|
298
276
|
* This is called for closing tags. It creates the element currently active in
|
|
299
277
|
* the stack.
|
|
@@ -306,8 +284,6 @@ function addChild(frame) {
|
|
|
306
284
|
* helps capture any remaining nested text nodes in
|
|
307
285
|
* the element.
|
|
308
286
|
*/
|
|
309
|
-
|
|
310
|
-
|
|
311
287
|
function closeOuterElement(endOffset) {
|
|
312
288
|
const {
|
|
313
289
|
element,
|
|
@@ -317,17 +293,13 @@ function closeOuterElement(endOffset) {
|
|
|
317
293
|
children
|
|
318
294
|
} = stack.pop();
|
|
319
295
|
const text = endOffset ? indoc.substr(prevOffset, endOffset - prevOffset) : indoc.substr(prevOffset);
|
|
320
|
-
|
|
321
296
|
if (text) {
|
|
322
297
|
children.push(text);
|
|
323
298
|
}
|
|
324
|
-
|
|
325
299
|
if (null !== leadingTextStart) {
|
|
326
300
|
output.push(indoc.substr(leadingTextStart, tokenStart - leadingTextStart));
|
|
327
301
|
}
|
|
328
|
-
|
|
329
302
|
output.push(cloneElement(element, null, ...children));
|
|
330
303
|
}
|
|
331
|
-
|
|
332
304
|
export default createInterpolateElement;
|
|
333
305
|
//# sourceMappingURL=create-interpolate-element.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["@wordpress/element/src/create-interpolate-element.js"],"names":["createElement","cloneElement","Fragment","isValidElement","indoc","offset","output","stack","tokenizer","createFrame","element","tokenStart","tokenLength","prevOffset","leadingTextStart","children","createInterpolateElement","interpolatedString","conversionMap","lastIndex","isValidConversionMap","TypeError","proceed","isObject","values","Object","length","every","next","nextToken","tokenType","name","startOffset","stackDepth","addText","stackLeadingText","pop","push","substr","addChild","closeOuterElement","stackTop","text","frame","matches","exec","startedAt","index","match","isClosing","isSelfClosed","parent","endOffset"],"mappings":"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","sourcesContent":["/**\n * Internal dependencies\n */\nimport { createElement, cloneElement, Fragment, isValidElement } from './react';\n\n/** @typedef {import('./react').WPElement} WPElement */\n\nlet indoc, offset, output, stack;\n\n/**\n * Matches tags in the localized string\n *\n * This is used for extracting the tag pattern groups for parsing the localized\n * string and along with the map converting it to a react element.\n *\n * There are four references extracted using this tokenizer:\n *\n * match: Full match of the tag (i.e. <strong>, </strong>, <br/>)\n * isClosing: The closing slash, if it exists.\n * name: The name portion of the tag (strong, br) (if )\n * isSelfClosed: The slash on a self closing tag, if it exists.\n *\n * @type {RegExp}\n */\nconst tokenizer = /<(\\/)?(\\w+)\\s*(\\/)?>/g;\n\n/**\n * The stack frame tracking parse progress.\n *\n * @typedef Frame\n *\n * @property {WPElement} element A parent element which may still have\n * @property {number} tokenStart Offset at which parent element first\n * appears.\n * @property {number} tokenLength Length of string marking start of parent\n * element.\n * @property {number} [prevOffset] Running offset at which parsing should\n * continue.\n * @property {number} [leadingTextStart] Offset at which last closing element\n * finished, used for finding text between\n * elements.\n * @property {WPElement[]} children Children.\n */\n\n/**\n * Tracks recursive-descent parse state.\n *\n * This is a Stack frame holding parent elements until all children have been\n * parsed.\n *\n * @private\n * @param {WPElement} element A parent element which may still have\n * nested children not yet parsed.\n * @param {number} tokenStart Offset at which parent element first\n * appears.\n * @param {number} tokenLength Length of string marking start of parent\n * element.\n * @param {number} [prevOffset] Running offset at which parsing should\n * continue.\n * @param {number} [leadingTextStart] Offset at which last closing element\n * finished, used for finding text between\n * elements.\n *\n * @return {Frame} The stack frame tracking parse progress.\n */\nfunction createFrame(\n\telement,\n\ttokenStart,\n\ttokenLength,\n\tprevOffset,\n\tleadingTextStart\n) {\n\treturn {\n\t\telement,\n\t\ttokenStart,\n\t\ttokenLength,\n\t\tprevOffset,\n\t\tleadingTextStart,\n\t\tchildren: [],\n\t};\n}\n\n/**\n * This function creates an interpolated element from a passed in string with\n * specific tags matching how the string should be converted to an element via\n * the conversion map value.\n *\n * @example\n * For example, for the given string:\n *\n * \"This is a <span>string</span> with <a>a link</a> and a self-closing\n * <CustomComponentB/> tag\"\n *\n * You would have something like this as the conversionMap value:\n *\n * ```js\n * {\n * span: <span />,\n * a: <a href={ 'https://github.com' } />,\n * CustomComponentB: <CustomComponent />,\n * }\n * ```\n *\n * @param {string} interpolatedString The interpolation string to be parsed.\n * @param {Record<string, WPElement>} conversionMap The map used to convert the string to\n * a react element.\n * @throws {TypeError}\n * @return {WPElement} A wp element.\n */\nconst createInterpolateElement = ( interpolatedString, conversionMap ) => {\n\tindoc = interpolatedString;\n\toffset = 0;\n\toutput = [];\n\tstack = [];\n\ttokenizer.lastIndex = 0;\n\n\tif ( ! isValidConversionMap( conversionMap ) ) {\n\t\tthrow new TypeError(\n\t\t\t'The conversionMap provided is not valid. It must be an object with values that are WPElements'\n\t\t);\n\t}\n\n\tdo {\n\t\t// twiddle our thumbs\n\t} while ( proceed( conversionMap ) );\n\treturn createElement( Fragment, null, ...output );\n};\n\n/**\n * Validate conversion map.\n *\n * A map is considered valid if it's an object and every value in the object\n * is a WPElement\n *\n * @private\n *\n * @param {Object} conversionMap The map being validated.\n *\n * @return {boolean} True means the map is valid.\n */\nconst isValidConversionMap = ( conversionMap ) => {\n\tconst isObject = typeof conversionMap === 'object';\n\tconst values = isObject && Object.values( conversionMap );\n\treturn (\n\t\tisObject &&\n\t\tvalues.length &&\n\t\tvalues.every( ( element ) => isValidElement( element ) )\n\t);\n};\n\n/**\n * This is the iterator over the matches in the string.\n *\n * @private\n *\n * @param {Object} conversionMap The conversion map for the string.\n *\n * @return {boolean} true for continuing to iterate, false for finished.\n */\nfunction proceed( conversionMap ) {\n\tconst next = nextToken();\n\tconst [ tokenType, name, startOffset, tokenLength ] = next;\n\tconst stackDepth = stack.length;\n\tconst leadingTextStart = startOffset > offset ? offset : null;\n\tif ( ! conversionMap[ name ] ) {\n\t\taddText();\n\t\treturn false;\n\t}\n\tswitch ( tokenType ) {\n\t\tcase 'no-more-tokens':\n\t\t\tif ( stackDepth !== 0 ) {\n\t\t\t\tconst { leadingTextStart: stackLeadingText, tokenStart } =\n\t\t\t\t\tstack.pop();\n\t\t\t\toutput.push( indoc.substr( stackLeadingText, tokenStart ) );\n\t\t\t}\n\t\t\taddText();\n\t\t\treturn false;\n\n\t\tcase 'self-closed':\n\t\t\tif ( 0 === stackDepth ) {\n\t\t\t\tif ( null !== leadingTextStart ) {\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tindoc.substr(\n\t\t\t\t\t\t\tleadingTextStart,\n\t\t\t\t\t\t\tstartOffset - leadingTextStart\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\toutput.push( conversionMap[ name ] );\n\t\t\t\toffset = startOffset + tokenLength;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Otherwise we found an inner element.\n\t\t\taddChild(\n\t\t\t\tcreateFrame( conversionMap[ name ], startOffset, tokenLength )\n\t\t\t);\n\t\t\toffset = startOffset + tokenLength;\n\t\t\treturn true;\n\n\t\tcase 'opener':\n\t\t\tstack.push(\n\t\t\t\tcreateFrame(\n\t\t\t\t\tconversionMap[ name ],\n\t\t\t\t\tstartOffset,\n\t\t\t\t\ttokenLength,\n\t\t\t\t\tstartOffset + tokenLength,\n\t\t\t\t\tleadingTextStart\n\t\t\t\t)\n\t\t\t);\n\t\t\toffset = startOffset + tokenLength;\n\t\t\treturn true;\n\n\t\tcase 'closer':\n\t\t\t// If we're not nesting then this is easy - close the block.\n\t\t\tif ( 1 === stackDepth ) {\n\t\t\t\tcloseOuterElement( startOffset );\n\t\t\t\toffset = startOffset + tokenLength;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Otherwise we're nested and we have to close out the current\n\t\t\t// block and add it as a innerBlock to the parent.\n\t\t\tconst stackTop = stack.pop();\n\t\t\tconst text = indoc.substr(\n\t\t\t\tstackTop.prevOffset,\n\t\t\t\tstartOffset - stackTop.prevOffset\n\t\t\t);\n\t\t\tstackTop.children.push( text );\n\t\t\tstackTop.prevOffset = startOffset + tokenLength;\n\t\t\tconst frame = createFrame(\n\t\t\t\tstackTop.element,\n\t\t\t\tstackTop.tokenStart,\n\t\t\t\tstackTop.tokenLength,\n\t\t\t\tstartOffset + tokenLength\n\t\t\t);\n\t\t\tframe.children = stackTop.children;\n\t\t\taddChild( frame );\n\t\t\toffset = startOffset + tokenLength;\n\t\t\treturn true;\n\n\t\tdefault:\n\t\t\taddText();\n\t\t\treturn false;\n\t}\n}\n\n/**\n * Grabs the next token match in the string and returns it's details.\n *\n * @private\n *\n * @return {Array} An array of details for the token matched.\n */\nfunction nextToken() {\n\tconst matches = tokenizer.exec( indoc );\n\t// We have no more tokens.\n\tif ( null === matches ) {\n\t\treturn [ 'no-more-tokens' ];\n\t}\n\tconst startedAt = matches.index;\n\tconst [ match, isClosing, name, isSelfClosed ] = matches;\n\tconst length = match.length;\n\tif ( isSelfClosed ) {\n\t\treturn [ 'self-closed', name, startedAt, length ];\n\t}\n\tif ( isClosing ) {\n\t\treturn [ 'closer', name, startedAt, length ];\n\t}\n\treturn [ 'opener', name, startedAt, length ];\n}\n\n/**\n * Pushes text extracted from the indoc string to the output stack given the\n * current rawLength value and offset (if rawLength is provided ) or the\n * indoc.length and offset.\n *\n * @private\n */\nfunction addText() {\n\tconst length = indoc.length - offset;\n\tif ( 0 === length ) {\n\t\treturn;\n\t}\n\toutput.push( indoc.substr( offset, length ) );\n}\n\n/**\n * Pushes a child element to the associated parent element's children for the\n * parent currently active in the stack.\n *\n * @private\n *\n * @param {Frame} frame The Frame containing the child element and it's\n * token information.\n */\nfunction addChild( frame ) {\n\tconst { element, tokenStart, tokenLength, prevOffset, children } = frame;\n\tconst parent = stack[ stack.length - 1 ];\n\tconst text = indoc.substr(\n\t\tparent.prevOffset,\n\t\ttokenStart - parent.prevOffset\n\t);\n\n\tif ( text ) {\n\t\tparent.children.push( text );\n\t}\n\n\tparent.children.push( cloneElement( element, null, ...children ) );\n\tparent.prevOffset = prevOffset ? prevOffset : tokenStart + tokenLength;\n}\n\n/**\n * This is called for closing tags. It creates the element currently active in\n * the stack.\n *\n * @private\n *\n * @param {number} endOffset Offset at which the closing tag for the element\n * begins in the string. If this is greater than the\n * prevOffset attached to the element, then this\n * helps capture any remaining nested text nodes in\n * the element.\n */\nfunction closeOuterElement( endOffset ) {\n\tconst { element, leadingTextStart, prevOffset, tokenStart, children } =\n\t\tstack.pop();\n\n\tconst text = endOffset\n\t\t? indoc.substr( prevOffset, endOffset - prevOffset )\n\t\t: indoc.substr( prevOffset );\n\n\tif ( text ) {\n\t\tchildren.push( text );\n\t}\n\n\tif ( null !== leadingTextStart ) {\n\t\toutput.push(\n\t\t\tindoc.substr( leadingTextStart, tokenStart - leadingTextStart )\n\t\t);\n\t}\n\n\toutput.push( cloneElement( element, null, ...children ) );\n}\n\nexport default createInterpolateElement;\n"]}
|
|
1
|
+
{"version":3,"names":["createElement","cloneElement","Fragment","isValidElement","indoc","offset","output","stack","tokenizer","createFrame","element","tokenStart","tokenLength","prevOffset","leadingTextStart","children","createInterpolateElement","interpolatedString","conversionMap","lastIndex","isValidConversionMap","TypeError","proceed","isObject","values","Object","length","every","next","nextToken","tokenType","name","startOffset","stackDepth","addText","stackLeadingText","pop","push","substr","addChild","closeOuterElement","stackTop","text","frame","matches","exec","startedAt","index","match","isClosing","isSelfClosed","parent","endOffset"],"sources":["@wordpress/element/src/create-interpolate-element.js"],"sourcesContent":["/**\n * Internal dependencies\n */\nimport { createElement, cloneElement, Fragment, isValidElement } from './react';\n\n/** @typedef {import('./react').WPElement} WPElement */\n\nlet indoc, offset, output, stack;\n\n/**\n * Matches tags in the localized string\n *\n * This is used for extracting the tag pattern groups for parsing the localized\n * string and along with the map converting it to a react element.\n *\n * There are four references extracted using this tokenizer:\n *\n * match: Full match of the tag (i.e. <strong>, </strong>, <br/>)\n * isClosing: The closing slash, if it exists.\n * name: The name portion of the tag (strong, br) (if )\n * isSelfClosed: The slash on a self closing tag, if it exists.\n *\n * @type {RegExp}\n */\nconst tokenizer = /<(\\/)?(\\w+)\\s*(\\/)?>/g;\n\n/**\n * The stack frame tracking parse progress.\n *\n * @typedef Frame\n *\n * @property {WPElement} element A parent element which may still have\n * @property {number} tokenStart Offset at which parent element first\n * appears.\n * @property {number} tokenLength Length of string marking start of parent\n * element.\n * @property {number} [prevOffset] Running offset at which parsing should\n * continue.\n * @property {number} [leadingTextStart] Offset at which last closing element\n * finished, used for finding text between\n * elements.\n * @property {WPElement[]} children Children.\n */\n\n/**\n * Tracks recursive-descent parse state.\n *\n * This is a Stack frame holding parent elements until all children have been\n * parsed.\n *\n * @private\n * @param {WPElement} element A parent element which may still have\n * nested children not yet parsed.\n * @param {number} tokenStart Offset at which parent element first\n * appears.\n * @param {number} tokenLength Length of string marking start of parent\n * element.\n * @param {number} [prevOffset] Running offset at which parsing should\n * continue.\n * @param {number} [leadingTextStart] Offset at which last closing element\n * finished, used for finding text between\n * elements.\n *\n * @return {Frame} The stack frame tracking parse progress.\n */\nfunction createFrame(\n\telement,\n\ttokenStart,\n\ttokenLength,\n\tprevOffset,\n\tleadingTextStart\n) {\n\treturn {\n\t\telement,\n\t\ttokenStart,\n\t\ttokenLength,\n\t\tprevOffset,\n\t\tleadingTextStart,\n\t\tchildren: [],\n\t};\n}\n\n/**\n * This function creates an interpolated element from a passed in string with\n * specific tags matching how the string should be converted to an element via\n * the conversion map value.\n *\n * @example\n * For example, for the given string:\n *\n * \"This is a <span>string</span> with <a>a link</a> and a self-closing\n * <CustomComponentB/> tag\"\n *\n * You would have something like this as the conversionMap value:\n *\n * ```js\n * {\n * span: <span />,\n * a: <a href={ 'https://github.com' } />,\n * CustomComponentB: <CustomComponent />,\n * }\n * ```\n *\n * @param {string} interpolatedString The interpolation string to be parsed.\n * @param {Record<string, WPElement>} conversionMap The map used to convert the string to\n * a react element.\n * @throws {TypeError}\n * @return {WPElement} A wp element.\n */\nconst createInterpolateElement = ( interpolatedString, conversionMap ) => {\n\tindoc = interpolatedString;\n\toffset = 0;\n\toutput = [];\n\tstack = [];\n\ttokenizer.lastIndex = 0;\n\n\tif ( ! isValidConversionMap( conversionMap ) ) {\n\t\tthrow new TypeError(\n\t\t\t'The conversionMap provided is not valid. It must be an object with values that are WPElements'\n\t\t);\n\t}\n\n\tdo {\n\t\t// twiddle our thumbs\n\t} while ( proceed( conversionMap ) );\n\treturn createElement( Fragment, null, ...output );\n};\n\n/**\n * Validate conversion map.\n *\n * A map is considered valid if it's an object and every value in the object\n * is a WPElement\n *\n * @private\n *\n * @param {Object} conversionMap The map being validated.\n *\n * @return {boolean} True means the map is valid.\n */\nconst isValidConversionMap = ( conversionMap ) => {\n\tconst isObject = typeof conversionMap === 'object';\n\tconst values = isObject && Object.values( conversionMap );\n\treturn (\n\t\tisObject &&\n\t\tvalues.length &&\n\t\tvalues.every( ( element ) => isValidElement( element ) )\n\t);\n};\n\n/**\n * This is the iterator over the matches in the string.\n *\n * @private\n *\n * @param {Object} conversionMap The conversion map for the string.\n *\n * @return {boolean} true for continuing to iterate, false for finished.\n */\nfunction proceed( conversionMap ) {\n\tconst next = nextToken();\n\tconst [ tokenType, name, startOffset, tokenLength ] = next;\n\tconst stackDepth = stack.length;\n\tconst leadingTextStart = startOffset > offset ? offset : null;\n\tif ( ! conversionMap[ name ] ) {\n\t\taddText();\n\t\treturn false;\n\t}\n\tswitch ( tokenType ) {\n\t\tcase 'no-more-tokens':\n\t\t\tif ( stackDepth !== 0 ) {\n\t\t\t\tconst { leadingTextStart: stackLeadingText, tokenStart } =\n\t\t\t\t\tstack.pop();\n\t\t\t\toutput.push( indoc.substr( stackLeadingText, tokenStart ) );\n\t\t\t}\n\t\t\taddText();\n\t\t\treturn false;\n\n\t\tcase 'self-closed':\n\t\t\tif ( 0 === stackDepth ) {\n\t\t\t\tif ( null !== leadingTextStart ) {\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tindoc.substr(\n\t\t\t\t\t\t\tleadingTextStart,\n\t\t\t\t\t\t\tstartOffset - leadingTextStart\n\t\t\t\t\t\t)\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\toutput.push( conversionMap[ name ] );\n\t\t\t\toffset = startOffset + tokenLength;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Otherwise we found an inner element.\n\t\t\taddChild(\n\t\t\t\tcreateFrame( conversionMap[ name ], startOffset, tokenLength )\n\t\t\t);\n\t\t\toffset = startOffset + tokenLength;\n\t\t\treturn true;\n\n\t\tcase 'opener':\n\t\t\tstack.push(\n\t\t\t\tcreateFrame(\n\t\t\t\t\tconversionMap[ name ],\n\t\t\t\t\tstartOffset,\n\t\t\t\t\ttokenLength,\n\t\t\t\t\tstartOffset + tokenLength,\n\t\t\t\t\tleadingTextStart\n\t\t\t\t)\n\t\t\t);\n\t\t\toffset = startOffset + tokenLength;\n\t\t\treturn true;\n\n\t\tcase 'closer':\n\t\t\t// If we're not nesting then this is easy - close the block.\n\t\t\tif ( 1 === stackDepth ) {\n\t\t\t\tcloseOuterElement( startOffset );\n\t\t\t\toffset = startOffset + tokenLength;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\t// Otherwise we're nested and we have to close out the current\n\t\t\t// block and add it as a innerBlock to the parent.\n\t\t\tconst stackTop = stack.pop();\n\t\t\tconst text = indoc.substr(\n\t\t\t\tstackTop.prevOffset,\n\t\t\t\tstartOffset - stackTop.prevOffset\n\t\t\t);\n\t\t\tstackTop.children.push( text );\n\t\t\tstackTop.prevOffset = startOffset + tokenLength;\n\t\t\tconst frame = createFrame(\n\t\t\t\tstackTop.element,\n\t\t\t\tstackTop.tokenStart,\n\t\t\t\tstackTop.tokenLength,\n\t\t\t\tstartOffset + tokenLength\n\t\t\t);\n\t\t\tframe.children = stackTop.children;\n\t\t\taddChild( frame );\n\t\t\toffset = startOffset + tokenLength;\n\t\t\treturn true;\n\n\t\tdefault:\n\t\t\taddText();\n\t\t\treturn false;\n\t}\n}\n\n/**\n * Grabs the next token match in the string and returns it's details.\n *\n * @private\n *\n * @return {Array} An array of details for the token matched.\n */\nfunction nextToken() {\n\tconst matches = tokenizer.exec( indoc );\n\t// We have no more tokens.\n\tif ( null === matches ) {\n\t\treturn [ 'no-more-tokens' ];\n\t}\n\tconst startedAt = matches.index;\n\tconst [ match, isClosing, name, isSelfClosed ] = matches;\n\tconst length = match.length;\n\tif ( isSelfClosed ) {\n\t\treturn [ 'self-closed', name, startedAt, length ];\n\t}\n\tif ( isClosing ) {\n\t\treturn [ 'closer', name, startedAt, length ];\n\t}\n\treturn [ 'opener', name, startedAt, length ];\n}\n\n/**\n * Pushes text extracted from the indoc string to the output stack given the\n * current rawLength value and offset (if rawLength is provided ) or the\n * indoc.length and offset.\n *\n * @private\n */\nfunction addText() {\n\tconst length = indoc.length - offset;\n\tif ( 0 === length ) {\n\t\treturn;\n\t}\n\toutput.push( indoc.substr( offset, length ) );\n}\n\n/**\n * Pushes a child element to the associated parent element's children for the\n * parent currently active in the stack.\n *\n * @private\n *\n * @param {Frame} frame The Frame containing the child element and it's\n * token information.\n */\nfunction addChild( frame ) {\n\tconst { element, tokenStart, tokenLength, prevOffset, children } = frame;\n\tconst parent = stack[ stack.length - 1 ];\n\tconst text = indoc.substr(\n\t\tparent.prevOffset,\n\t\ttokenStart - parent.prevOffset\n\t);\n\n\tif ( text ) {\n\t\tparent.children.push( text );\n\t}\n\n\tparent.children.push( cloneElement( element, null, ...children ) );\n\tparent.prevOffset = prevOffset ? prevOffset : tokenStart + tokenLength;\n}\n\n/**\n * This is called for closing tags. It creates the element currently active in\n * the stack.\n *\n * @private\n *\n * @param {number} endOffset Offset at which the closing tag for the element\n * begins in the string. If this is greater than the\n * prevOffset attached to the element, then this\n * helps capture any remaining nested text nodes in\n * the element.\n */\nfunction closeOuterElement( endOffset ) {\n\tconst { element, leadingTextStart, prevOffset, tokenStart, children } =\n\t\tstack.pop();\n\n\tconst text = endOffset\n\t\t? indoc.substr( prevOffset, endOffset - prevOffset )\n\t\t: indoc.substr( prevOffset );\n\n\tif ( text ) {\n\t\tchildren.push( text );\n\t}\n\n\tif ( null !== leadingTextStart ) {\n\t\toutput.push(\n\t\t\tindoc.substr( leadingTextStart, tokenStart - leadingTextStart )\n\t\t);\n\t}\n\n\toutput.push( cloneElement( element, null, ...children ) );\n}\n\nexport default createInterpolateElement;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,aAAa,EAAEC,YAAY,EAAEC,QAAQ,EAAEC,cAAc,QAAQ,SAAS;;AAE/E;;AAEA,IAAIC,KAAK,EAAEC,MAAM,EAAEC,MAAM,EAAEC,KAAK;;AAEhC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,SAAS,GAAG,uBAAuB;;AAEzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,WAAWA,CACnBC,OAAO,EACPC,UAAU,EACVC,WAAW,EACXC,UAAU,EACVC,gBAAgB,EACf;EACD,OAAO;IACNJ,OAAO;IACPC,UAAU;IACVC,WAAW;IACXC,UAAU;IACVC,gBAAgB;IAChBC,QAAQ,EAAE;EACX,CAAC;AACF;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAMC,wBAAwB,GAAGA,CAAEC,kBAAkB,EAAEC,aAAa,KAAM;EACzEd,KAAK,GAAGa,kBAAkB;EAC1BZ,MAAM,GAAG,CAAC;EACVC,MAAM,GAAG,EAAE;EACXC,KAAK,GAAG,EAAE;EACVC,SAAS,CAACW,SAAS,GAAG,CAAC;EAEvB,IAAK,CAAEC,oBAAoB,CAAEF,aAAc,CAAC,EAAG;IAC9C,MAAM,IAAIG,SAAS,CAClB,+FACD,CAAC;EACF;EAEA,GAAG;IACF;EAAA,CACA,QAASC,OAAO,CAAEJ,aAAc,CAAC;EAClC,OAAOlB,aAAa,CAAEE,QAAQ,EAAE,IAAI,EAAE,GAAGI,MAAO,CAAC;AAClD,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["default","createInterpolateElement","Platform","renderToString","RawHTML"],"sources":["@wordpress/element/src/index.js"],"sourcesContent":["export { default as createInterpolateElement } from './create-interpolate-element';\nexport * from './react';\nexport * from './react-platform';\nexport * from './utils';\nexport { default as Platform } from './platform';\nexport { default as renderToString } from './serialize';\nexport { default as RawHTML } from './raw-html';\n"],"mappings":"AAAA,SAASA,OAAO,IAAIC,wBAAwB,QAAQ,8BAA8B;AAClF,cAAc,SAAS;AACvB,cAAc,kBAAkB;AAChC,cAAc,SAAS;AACvB,SAASD,OAAO,IAAIE,QAAQ,QAAQ,YAAY;AAChD,SAASF,OAAO,IAAIG,cAAc,QAAQ,aAAa;AACvD,SAASH,OAAO,IAAII,OAAO,QAAQ,YAAY"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { Platform as OriginalPlatform } from 'react-native';
|
|
5
|
-
const Platform = {
|
|
5
|
+
const Platform = {
|
|
6
|
+
...OriginalPlatform,
|
|
6
7
|
OS: 'native',
|
|
7
8
|
select: spec => {
|
|
8
9
|
if ('android' in spec) {
|
|
@@ -10,7 +11,6 @@ const Platform = { ...OriginalPlatform,
|
|
|
10
11
|
} else if ('native' in spec) {
|
|
11
12
|
return spec.native;
|
|
12
13
|
}
|
|
13
|
-
|
|
14
14
|
return spec.default;
|
|
15
15
|
},
|
|
16
16
|
isNative: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["Platform","OriginalPlatform","OS","select","spec","android","native","default","isNative","isAndroid"],"sources":["@wordpress/element/src/platform.android.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Platform as OriginalPlatform } from 'react-native';\n\nconst Platform = {\n\t...OriginalPlatform,\n\tOS: 'native',\n\tselect: ( spec ) => {\n\t\tif ( 'android' in spec ) {\n\t\t\treturn spec.android;\n\t\t} else if ( 'native' in spec ) {\n\t\t\treturn spec.native;\n\t\t}\n\t\treturn spec.default;\n\t},\n\tisNative: true,\n\tisAndroid: true,\n};\n\nexport default Platform;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,QAAQ,IAAIC,gBAAgB,QAAQ,cAAc;AAE3D,MAAMD,QAAQ,GAAG;EAChB,GAAGC,gBAAgB;EACnBC,EAAE,EAAE,QAAQ;EACZC,MAAM,EAAIC,IAAI,IAAM;IACnB,IAAK,SAAS,IAAIA,IAAI,EAAG;MACxB,OAAOA,IAAI,CAACC,OAAO;IACpB,CAAC,MAAM,IAAK,QAAQ,IAAID,IAAI,EAAG;MAC9B,OAAOA,IAAI,CAACE,MAAM;IACnB;IACA,OAAOF,IAAI,CAACG,OAAO;EACpB,CAAC;EACDC,QAAQ,EAAE,IAAI;EACdC,SAAS,EAAE;AACZ,CAAC;AAED,eAAeT,QAAQ"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* External dependencies
|
|
3
3
|
*/
|
|
4
4
|
import { Platform as OriginalPlatform } from 'react-native';
|
|
5
|
-
const Platform = {
|
|
5
|
+
const Platform = {
|
|
6
|
+
...OriginalPlatform,
|
|
6
7
|
OS: 'native',
|
|
7
8
|
select: spec => {
|
|
8
9
|
if ('ios' in spec) {
|
|
@@ -10,7 +11,6 @@ const Platform = { ...OriginalPlatform,
|
|
|
10
11
|
} else if ('native' in spec) {
|
|
11
12
|
return spec.native;
|
|
12
13
|
}
|
|
13
|
-
|
|
14
14
|
return spec.default;
|
|
15
15
|
},
|
|
16
16
|
isNative: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"
|
|
1
|
+
{"version":3,"names":["Platform","OriginalPlatform","OS","select","spec","ios","native","default","isNative","isIOS"],"sources":["@wordpress/element/src/platform.ios.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport { Platform as OriginalPlatform } from 'react-native';\n\nconst Platform = {\n\t...OriginalPlatform,\n\tOS: 'native',\n\tselect: ( spec ) => {\n\t\tif ( 'ios' in spec ) {\n\t\t\treturn spec.ios;\n\t\t} else if ( 'native' in spec ) {\n\t\t\treturn spec.native;\n\t\t}\n\t\treturn spec.default;\n\t},\n\tisNative: true,\n\tisIOS: true,\n};\n\nexport default Platform;\n"],"mappings":"AAAA;AACA;AACA;AACA,SAASA,QAAQ,IAAIC,gBAAgB,QAAQ,cAAc;AAE3D,MAAMD,QAAQ,GAAG;EAChB,GAAGC,gBAAgB;EACnBC,EAAE,EAAE,QAAQ;EACZC,MAAM,EAAIC,IAAI,IAAM;IACnB,IAAK,KAAK,IAAIA,IAAI,EAAG;MACpB,OAAOA,IAAI,CAACC,GAAG;IAChB,CAAC,MAAM,IAAK,QAAQ,IAAID,IAAI,EAAG;MAC9B,OAAOA,IAAI,CAACE,MAAM;IACnB;IACA,OAAOF,IAAI,CAACG,OAAO;EACpB,CAAC;EACDC,QAAQ,EAAE,IAAI;EACdC,KAAK,EAAE;AACR,CAAC;AAED,eAAeT,QAAQ"}
|