UNPKG

31.5 kBSource Map (JSON)View Raw
1{"version":3,"sources":["../../src/react/elements.js"],"names":["createPropsObject","realm","type","config","children","activeReconciler","react","firstRenderOnly","undefined","componentTreeConfig","defaultProps","ObjectValue","AbstractObjectValue","intrinsics","props","Create","ObjectCreate","ObjectPrototype","makeFinal","reactProps","add","key","null","ref","diagnostic","CompilerDiagnostic","currentLocation","handleError","FatalError","possibleKey","keyNotNeeded","AbstractValue","properties","has","emptyString","possibleRef","refNotNeeded","setProp","name","value","applyProperties","propKey","binding","descriptor","enumerable","isPartialObject","isSimpleObject","defaultPropsEvaluated","propName","propBinding","get","size","makePartial","makeSimple","createFromType","Value","condition","createFromBinaryOp","conditionalChildren","createFromConditionalOp","defaultPropsHelper","snapshot","getSnapshot","temporalAlias","temporalArgs","temporalTo","createTemporalFromBuildFunction","skipInvariant","values","ValuesDomain","splitReactElementsByConditionalType","condValue","consequentVal","alternateVal","evaluateWithAbstractConditional","evaluateForEffects","createReactElement","splitReactElementsByConditionalConfig","cloneReactElement","reactElement","NullValue","elementProps","elementChildren","kind","args","traverseReactElement","traversalVisitor","typeValue","visitType","keyValue","visitKey","refValue","visitRef","handleChildren","propsValue","childrenValue","ArrayValue","intrinsicName","childrenLength","childrenLengthValue","NumberValue","i","child","visitChildNode","visitAbstractOrPartialProps","visitConcreteProps"],"mappings":"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","sourcesContent":["/**\n * Copyright (c) 2017-present, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * LICENSE file in the root directory of this source tree. An additional grant\n * of patent rights can be found in the PATENTS file in the same directory.\n */\n\n/* @flow */\n\nimport type { Realm } from \"../realm.js\";\nimport { ValuesDomain } from \"../domains/index.js\";\nimport {\n AbstractValue,\n AbstractObjectValue,\n ArrayValue,\n NullValue,\n NumberValue,\n ObjectValue,\n Value,\n} from \"../values/index.js\";\nimport { Create } from \"../singletons.js\";\nimport invariant from \"../invariant.js\";\nimport { Get } from \"../methods/index.js\";\nimport {\n applyObjectAssignConfigsForReactElement,\n createInternalReactElement,\n flagPropsWithNoPartialKeyOrRef,\n hardModifyReactObjectPropertyBinding,\n getProperty,\n hasNoPartialKeyOrRef,\n} from \"./utils.js\";\nimport { computeBinary } from \"../evaluators/BinaryExpression.js\";\nimport { CompilerDiagnostic, FatalError } from \"../errors.js\";\nimport { createOperationDescriptor } from \"../utils/generator.js\";\n\nfunction createPropsObject(\n realm: Realm,\n type: Value,\n config: ObjectValue | AbstractObjectValue,\n children: void | Value\n): { key: Value, ref: Value, props: ObjectValue } {\n // If we're in \"rendering\" a React component tree, we should have an active reconciler\n let activeReconciler = realm.react.activeReconciler;\n let firstRenderOnly = activeReconciler !== undefined ? activeReconciler.componentTreeConfig.firstRenderOnly : false;\n let defaultProps =\n type instanceof ObjectValue || type instanceof AbstractObjectValue\n ? Get(realm, type, \"defaultProps\")\n : realm.intrinsics.undefined;\n\n let props = Create.ObjectCreate(realm, realm.intrinsics.ObjectPrototype);\n props.makeFinal();\n realm.react.reactProps.add(props);\n\n let key = realm.intrinsics.null;\n let ref = realm.intrinsics.null;\n\n if (!hasNoPartialKeyOrRef(realm, config)) {\n // if either are abstract, this will impact the reconcilation process\n // and ultimately prevent us from folding ReactElements properly\n let diagnostic = new CompilerDiagnostic(\n `unable to evaluate \"key\" and \"ref\" on a ReactElement due to an abstract config passed to createElement`,\n realm.currentLocation,\n \"PP0025\",\n \"FatalError\"\n );\n realm.handleError(diagnostic);\n if (realm.handleError(diagnostic) === \"Fail\") throw new FatalError();\n }\n\n let possibleKey = Get(realm, config, \"key\");\n if (possibleKey !== realm.intrinsics.null && possibleKey !== realm.intrinsics.undefined) {\n // if the config has been marked as having no partial key or ref and the possible key\n // is abstract, yet the config doesn't have a key property, then the key can remain null\n let keyNotNeeded =\n hasNoPartialKeyOrRef(realm, config) &&\n possibleKey instanceof AbstractValue &&\n config instanceof ObjectValue &&\n !config.properties.has(\"key\");\n\n if (!keyNotNeeded) {\n key = computeBinary(realm, \"+\", realm.intrinsics.emptyString, possibleKey);\n }\n }\n\n let possibleRef = Get(realm, config, \"ref\");\n if (possibleRef !== realm.intrinsics.null && possibleRef !== realm.intrinsics.undefined && !firstRenderOnly) {\n // if the config has been marked as having no partial key or ref and the possible ref\n // is abstract, yet the config doesn't have a ref property, then the ref can remain null\n let refNotNeeded =\n hasNoPartialKeyOrRef(realm, config) &&\n possibleRef instanceof AbstractValue &&\n config instanceof ObjectValue &&\n !config.properties.has(\"ref\");\n\n if (!refNotNeeded) {\n ref = possibleRef;\n }\n }\n\n const setProp = (name: string, value: Value): void => {\n if (name !== \"__self\" && name !== \"__source\" && name !== \"key\" && name !== \"ref\") {\n invariant(props instanceof ObjectValue);\n hardModifyReactObjectPropertyBinding(realm, props, name, value);\n }\n };\n\n const applyProperties = () => {\n if (config instanceof ObjectValue) {\n for (let [propKey, binding] of config.properties) {\n if (binding && binding.descriptor && binding.descriptor.enumerable) {\n setProp(propKey, Get(realm, config, propKey));\n }\n }\n }\n };\n\n if (\n (config instanceof AbstractObjectValue && config.isPartialObject()) ||\n (config instanceof ObjectValue && config.isPartialObject() && config.isSimpleObject())\n ) {\n // create a new props object that will be the target of the Object.assign\n props = Create.ObjectCreate(realm, realm.intrinsics.ObjectPrototype);\n realm.react.reactProps.add(props);\n\n applyObjectAssignConfigsForReactElement(realm, props, [config]);\n props.makeFinal();\n\n if (children !== undefined) {\n hardModifyReactObjectPropertyBinding(realm, props, \"children\", children);\n }\n\n // handle default props on a partial/abstract config\n if (defaultProps !== realm.intrinsics.undefined) {\n let defaultPropsEvaluated = 0;\n\n // first see if we can apply all the defaultProps without needing the helper\n if (defaultProps instanceof ObjectValue && !defaultProps.isPartialObject()) {\n for (let [propName, binding] of defaultProps.properties) {\n if (binding.descriptor !== undefined && binding.descriptor.value !== realm.intrinsics.undefined) {\n // see if we have this on our props object\n let propBinding = props.properties.get(propName);\n // if the binding exists and value is abstract, it might be undefined\n // so in that case we need the helper, otherwise we can continue\n if (\n propBinding !== undefined &&\n !(propBinding.descriptor && propBinding.descriptor.value instanceof AbstractValue)\n ) {\n defaultPropsEvaluated++;\n // if the value we have is undefined, we can apply the defaultProp\n if (propBinding.descriptor && propBinding.descriptor.value === realm.intrinsics.undefined) {\n hardModifyReactObjectPropertyBinding(realm, props, propName, Get(realm, defaultProps, propName));\n }\n }\n }\n }\n }\n // if defaultPropsEvaluated === the amount of properties defaultProps has, then we've successfully\n // ensured all the defaultProps have already been dealt with, so we don't need the helper\n if (\n !(defaultProps instanceof ObjectValue) ||\n (defaultProps.isPartialObject() || defaultPropsEvaluated !== defaultProps.properties.size)\n ) {\n props.makePartial();\n props.makeSimple();\n // if the props has any properties that are \"undefined\", we need to make them abstract\n // as the helper function applies defaultProps on values that are undefined or do not\n // exist\n for (let [propName, binding] of props.properties) {\n if (binding.descriptor !== undefined && binding.descriptor.value === realm.intrinsics.undefined) {\n hardModifyReactObjectPropertyBinding(realm, props, propName, AbstractValue.createFromType(realm, Value));\n }\n }\n // if we have children and they are abstract, they might be undefined at runtime\n if (children !== undefined && children instanceof AbstractValue) {\n // children === undefined ? defaultProps.children : children;\n let condition = AbstractValue.createFromBinaryOp(realm, \"===\", children, realm.intrinsics.undefined);\n invariant(defaultProps instanceof AbstractObjectValue || defaultProps instanceof ObjectValue);\n let conditionalChildren = AbstractValue.createFromConditionalOp(\n realm,\n condition,\n Get(realm, defaultProps, \"children\"),\n children\n );\n hardModifyReactObjectPropertyBinding(realm, props, \"children\", conditionalChildren);\n }\n let defaultPropsHelper = realm.react.defaultPropsHelper;\n invariant(defaultPropsHelper !== undefined);\n let snapshot = props.getSnapshot();\n props.temporalAlias = snapshot;\n let temporalArgs = [defaultPropsHelper, snapshot, defaultProps];\n let temporalTo = AbstractValue.createTemporalFromBuildFunction(\n realm,\n ObjectValue,\n temporalArgs,\n createOperationDescriptor(\"REACT_DEFAULT_PROPS_HELPER\"),\n { skipInvariant: true }\n );\n invariant(temporalTo instanceof AbstractObjectValue);\n if (props instanceof AbstractObjectValue) {\n temporalTo.values = props.values;\n } else {\n invariant(props instanceof ObjectValue);\n temporalTo.values = new ValuesDomain(props);\n }\n props.temporalAlias = temporalTo;\n }\n }\n } else {\n applyProperties();\n\n if (children !== undefined) {\n setProp(\"children\", children);\n }\n\n if (defaultProps instanceof ObjectValue) {\n for (let [propKey, binding] of defaultProps.properties) {\n if (binding && binding.descriptor && binding.descriptor.enumerable) {\n if (Get(realm, props, propKey) === realm.intrinsics.undefined) {\n setProp(propKey, Get(realm, defaultProps, propKey));\n }\n }\n }\n } else if (defaultProps instanceof AbstractObjectValue) {\n invariant(false, \"TODO: we need to eventually support this\");\n }\n }\n invariant(props instanceof ObjectValue);\n // We know the props has no keys because if it did it would have thrown above\n // so we can remove them the props we create.\n flagPropsWithNoPartialKeyOrRef(realm, props);\n return { key, props, ref };\n}\n\nfunction splitReactElementsByConditionalType(\n realm: Realm,\n condValue: AbstractValue,\n consequentVal: Value,\n alternateVal: Value,\n config: ObjectValue | AbstractObjectValue,\n children: void | Value\n): Value {\n return realm.evaluateWithAbstractConditional(\n condValue,\n () => {\n return realm.evaluateForEffects(\n () => createReactElement(realm, consequentVal, config, children),\n null,\n \"splitReactElementsByConditionalType consequent\"\n );\n },\n () => {\n return realm.evaluateForEffects(\n () => createReactElement(realm, alternateVal, config, children),\n null,\n \"splitReactElementsByConditionalType alternate\"\n );\n }\n );\n}\n\nfunction splitReactElementsByConditionalConfig(\n realm: Realm,\n condValue: AbstractValue,\n consequentVal: ObjectValue | AbstractObjectValue,\n alternateVal: ObjectValue | AbstractObjectValue,\n type: Value,\n children: void | Value\n): Value {\n return realm.evaluateWithAbstractConditional(\n condValue,\n () => {\n return realm.evaluateForEffects(\n () => createReactElement(realm, type, consequentVal, children),\n null,\n \"splitReactElementsByConditionalConfig consequent\"\n );\n },\n () => {\n return realm.evaluateForEffects(\n () => createReactElement(realm, type, alternateVal, children),\n null,\n \"splitReactElementsByConditionalConfig alternate\"\n );\n }\n );\n}\n\nexport function cloneReactElement(\n realm: Realm,\n reactElement: ObjectValue,\n config: ObjectValue | AbstractObjectValue | NullValue,\n children: void | Value\n): ObjectValue {\n let props = Create.ObjectCreate(realm, realm.intrinsics.ObjectPrototype);\n realm.react.reactProps.add(props);\n\n const setProp = (name: string, value: Value): void => {\n if (name !== \"__self\" && name !== \"__source\" && name !== \"key\" && name !== \"ref\") {\n invariant(props instanceof ObjectValue);\n hardModifyReactObjectPropertyBinding(realm, props, name, value);\n }\n };\n\n applyObjectAssignConfigsForReactElement(realm, props, [config]);\n props.makeFinal();\n\n let key = getProperty(realm, reactElement, \"key\");\n let ref = getProperty(realm, reactElement, \"ref\");\n let type = getProperty(realm, reactElement, \"type\");\n\n if (!(config instanceof NullValue)) {\n let possibleKey = Get(realm, config, \"key\");\n if (possibleKey !== realm.intrinsics.null && possibleKey !== realm.intrinsics.undefined) {\n // if the config has been marked as having no partial key or ref and the possible key\n // is abstract, yet the config doesn't have a key property, then the key can remain null\n let keyNotNeeded =\n hasNoPartialKeyOrRef(realm, config) &&\n possibleKey instanceof AbstractValue &&\n config instanceof ObjectValue &&\n !config.properties.has(\"key\");\n\n if (!keyNotNeeded) {\n key = computeBinary(realm, \"+\", realm.intrinsics.emptyString, possibleKey);\n }\n }\n\n let possibleRef = Get(realm, config, \"ref\");\n if (possibleRef !== realm.intrinsics.null && possibleRef !== realm.intrinsics.undefined) {\n // if the config has been marked as having no partial key or ref and the possible ref\n // is abstract, yet the config doesn't have a ref property, then the ref can remain null\n let refNotNeeded =\n hasNoPartialKeyOrRef(realm, config) &&\n possibleRef instanceof AbstractValue &&\n config instanceof ObjectValue &&\n !config.properties.has(\"ref\");\n\n if (!refNotNeeded) {\n ref = possibleRef;\n }\n }\n let defaultProps =\n type instanceof ObjectValue || type instanceof AbstractObjectValue\n ? Get(realm, type, \"defaultProps\")\n : realm.intrinsics.undefined;\n\n if (defaultProps instanceof ObjectValue) {\n for (let [propKey, binding] of defaultProps.properties) {\n if (binding && binding.descriptor && binding.descriptor.enumerable) {\n if (Get(realm, props, propKey) === realm.intrinsics.undefined) {\n setProp(propKey, Get(realm, defaultProps, propKey));\n }\n }\n }\n } else if (defaultProps instanceof AbstractObjectValue) {\n invariant(false, \"TODO: we need to eventually support this\");\n }\n }\n\n if (children !== undefined) {\n hardModifyReactObjectPropertyBinding(realm, props, \"children\", children);\n } else {\n let elementProps = getProperty(realm, reactElement, \"props\");\n invariant(elementProps instanceof ObjectValue);\n let elementChildren = getProperty(realm, elementProps, \"children\");\n hardModifyReactObjectPropertyBinding(realm, props, \"children\", elementChildren);\n }\n\n return createInternalReactElement(realm, type, key, ref, props);\n}\n\nexport function createReactElement(\n realm: Realm,\n type: Value,\n config: ObjectValue | AbstractObjectValue,\n children: void | Value\n): Value {\n if (type instanceof AbstractValue && type.kind === \"conditional\") {\n let [condValue, consequentVal, alternateVal] = type.args;\n invariant(condValue instanceof AbstractValue);\n return splitReactElementsByConditionalType(realm, condValue, consequentVal, alternateVal, config, children);\n } else if (config instanceof AbstractObjectValue && config.kind === \"conditional\") {\n let [condValue, consequentVal, alternateVal] = config.args;\n invariant(condValue instanceof AbstractValue);\n invariant(consequentVal instanceof ObjectValue || consequentVal instanceof AbstractObjectValue);\n invariant(alternateVal instanceof ObjectValue || alternateVal instanceof AbstractObjectValue);\n return splitReactElementsByConditionalConfig(realm, condValue, consequentVal, alternateVal, type, children);\n }\n let { key, props, ref } = createPropsObject(realm, type, config, children);\n return createInternalReactElement(realm, type, key, ref, props);\n}\n\ntype ElementTraversalVisitor = {\n visitType: (typeValue: Value) => void,\n visitKey: (keyValue: Value) => void,\n visitRef: (keyValue: Value) => void,\n visitAbstractOrPartialProps: (propsValue: AbstractValue | ObjectValue) => void,\n visitConcreteProps: (propsValue: ObjectValue) => void,\n visitChildNode: (childValue: Value) => void,\n};\n\nexport function traverseReactElement(\n realm: Realm,\n reactElement: ObjectValue,\n traversalVisitor: ElementTraversalVisitor\n): void {\n let typeValue = getProperty(realm, reactElement, \"type\");\n traversalVisitor.visitType(typeValue);\n\n let keyValue = getProperty(realm, reactElement, \"key\");\n if (keyValue !== realm.intrinsics.null && keyValue !== realm.intrinsics.undefined) {\n traversalVisitor.visitKey(keyValue);\n }\n\n let refValue = getProperty(realm, reactElement, \"ref\");\n if (refValue !== realm.intrinsics.null && refValue !== realm.intrinsics.undefined) {\n traversalVisitor.visitRef(refValue);\n }\n\n const handleChildren = () => {\n // handle children\n invariant(propsValue instanceof ObjectValue);\n if (propsValue.properties.has(\"children\")) {\n let childrenValue = getProperty(realm, propsValue, \"children\");\n if (childrenValue !== realm.intrinsics.undefined && childrenValue !== realm.intrinsics.null) {\n if (childrenValue instanceof ArrayValue && !childrenValue.intrinsicName) {\n let childrenLength = getProperty(realm, childrenValue, \"length\");\n let childrenLengthValue = 0;\n if (childrenLength instanceof NumberValue) {\n childrenLengthValue = childrenLength.value;\n for (let i = 0; i < childrenLengthValue; i++) {\n let child = getProperty(realm, childrenValue, \"\" + i);\n traversalVisitor.visitChildNode(child);\n }\n }\n } else {\n traversalVisitor.visitChildNode(childrenValue);\n }\n }\n }\n };\n\n let propsValue = getProperty(realm, reactElement, \"props\");\n if (propsValue instanceof AbstractValue) {\n // visit object, as it's going to be spread\n traversalVisitor.visitAbstractOrPartialProps(propsValue);\n } else if (propsValue instanceof ObjectValue) {\n if (propsValue.isPartialObject()) {\n traversalVisitor.visitAbstractOrPartialProps(propsValue);\n handleChildren();\n } else {\n traversalVisitor.visitConcreteProps(propsValue);\n handleChildren();\n }\n }\n}\n"],"file":"elements.js"}
\No newline at end of file