From 04d658958c97fa6b83fe4221423ace094cdb2daf Mon Sep 17 00:00:00 2001 From: Oleg Klimenko Date: Wed, 13 Oct 2021 17:18:07 +0300 Subject: [PATCH 1/3] Support React.Context in transpilation --- demo/src/components/App.isoentry.tsx | 5 +- demo/src/components/iso_palette/Context.tsx | 5 ++ .../iso_palette/Radio/Radio.iso.tsx | 4 + doc/support.md | 12 +++ src/__tests__/5_components.spec.ts | 1 + .../specimens/arrayMethods/FilterModule.php | 1 + .../specimens/arrayMethods/FindModule.php | 1 + .../specimens/arrayMethods/ForEachModule.php | 1 + .../specimens/arrayMethods/IncludesModule.php | 1 + .../specimens/arrayMethods/IndexOfModule.php | 1 + .../specimens/arrayMethods/IsArrayModule.php | 1 + .../specimens/arrayMethods/MapModule.php | 1 + .../specimens/arrayMethods/PushPopModule.php | 1 + .../specimens/arrayMethods/ReduceModule.php | 1 + .../specimens/arrayMethods/SliceModule.php | 1 + .../specimens/arrayMethods/SomeModule.php | 1 + .../specimens/arrayMethods/SpliceModule.php | 1 + .../specimens/byType/ArrowFunctionModule.php | 1 + .../specimens/byType/BasicOperatorsModule.php | 1 + .../byType/BinaryExpressionModule.php | 1 + .../specimens/byType/BlockModule.php | 1 + .../specimens/byType/CallExpressionModule.php | 1 + .../byType/ElementAccessExpressionModule.php | 1 + .../specimens/byType/EnumImportModule.php | 1 + src/__tests__/specimens/byType/EnumModule.php | 1 + .../specimens/byType/ExportModule.php | 1 + .../byType/FunctionDeclarationModule.php | 1 + .../specimens/byType/IdentifierModule.php | 1 + .../specimens/byType/IfStatementModule.php | 1 + .../specimens/byType/ImportModule.php | 1 + src/__tests__/specimens/byType/JsxModule.php | 1 + .../specimens/byType/LoopsModule.php | 1 + .../byType/ObjectComputedPropertiesModule.php | 1 + .../byType/ObjectLiteralExpressionModule.php | 1 + .../byType/ParameterDestructuringModule.php | 1 + .../byType/PropertyAccessExpressionModule.php | 1 + .../specimens/byType/RestOperatorModule.php | 1 + .../byType/ServerIfStatementModule.php | 1 + .../specimens/byType/SpreadOperatorModule.php | 1 + .../byType/SwitchStatementModule.php | 1 + .../specimens/byType/TemplateStringModule.php | 1 + .../specimens/byType/TsInternalsModule.php | 1 + src/__tests__/specimens/byType/jsx/Jsx.php | 1 + .../BasicComponent/BasicComponent.php | 1 + .../BasicComponentWithProps.php | 1 + .../BasicComponentWithViewLogic.php | 1 + .../ComponentBinaryOperators.php | 1 + .../ComponentWithOuterFunction.php | 1 + .../ComponentWithOuterFunctionModule.php | 1 + .../CyclicDeps/CyclicDepsModule.php | 1 + .../components/CyclicDeps/Entry1Module.php | 1 + .../components/CyclicDeps/Entry2Module.php | 1 + .../components/CyclicDepsEntryModule.php | 1 + .../DummyComponent/DummyComponent.php | 1 + .../components/ImportResolve2Module.php | 1 + .../components/ImportResolveModule.php | 1 + .../InheritedProps/InheritedProps.php | 1 + .../components/InheritedPropsModule.php | 1 + .../InnerHtmlComponent/InnerHtmlComponent.php | 1 + .../NestedComponent/NestedComponent.php | 1 + .../NestedComponentWithDummyInProps.php | 1 + .../NestedComponentWithDummyInPropsModule.php | 1 + .../ComponentWrapper.php | 1 + .../NullReturnInComponent.php | 1 + .../components/PathResolve/HelpersModule.php | 1 + .../PathResolve/PathResolveModule.php | 1 + .../components/PathResolve/TsxModule.php | 1 + .../ReactPathResolveAnonymousComponent.php | 1 + .../Component/ReactPathResolveComponent.php | 1 + .../PathResolveReact/ComponentModule.php | 1 + .../PathResolveReactModule.php | 1 + .../index/ReactPathResolveAnonymousModule.php | 1 + .../index/ReactPathResolveModule.php | 1 + .../components/ReactContextConsumer.tsx | 10 +++ .../ReactContextConsumer.php | 43 +++++++++++ .../components/ReactContextProvider.tsx | 13 ++++ .../ReactContextProvider.php | 54 +++++++++++++ .../components/ReactContextSource.tsx | 3 + .../components/ReactContextSourceModule.php | 30 ++++++++ .../components/ReactSupport/ReactSupport.php | 6 +- .../ReactSupport2/ReactSupport2.php | 4 + .../components/ReexportResolve/Render.php | 1 + .../components/ReexportResolveModule.php | 1 + .../TwoComponents/FirstComponent.php | 1 + .../TwoComponents/SecondComponent.php | 1 + .../components/TwoComponentsModule.php | 1 + .../TypedComponent/TypedComponent.php | 1 + .../KeywordTestComponent.php | 1 + .../KeywordTestComponentImportModule.php | 1 + .../KeywordTestModuleImportModule.php | 1 + .../KeywordTestModuleModule.php | 1 + .../specimens/fixes/CheckBox/CheckBox.php | 1 + .../fixes/EscapeHtmlChars/EscapeHtmlChars.php | 1 + .../EscapeHtmlChars/NestedEscapeHtmlChars.php | 1 + .../specimens/fixes/EscapeHtmlCharsModule.php | 1 + .../fixes/ExcessiveEliminationModule.php | 1 + .../fixes/ExcessiveEscaping/TextContainer.php | 1 + .../functionMethods/ClosuresModule.php | 1 + .../specimens/mathMethods/BasicModule.php | 1 + .../specimens/mathMethods/ConstantsModule.php | 1 + .../mathMethods/TrigonometryModule.php | 1 + .../specimens/misc/AllowedOnClickModule.php | 1 + .../specimens/misc/AstHooksModule.php | 1 + .../misc/ComplexObjectFuncsModule.php | 1 + .../misc/ComplexTypeInferenceModule.php | 1 + .../misc/ConstructorTypeCastModule.php | 1 + .../misc/CustomIsomorphicsModule.php | 1 + .../specimens/misc/DefaultOperatorModule.php | 1 + .../specimens/misc/DefaultValuesModule.php | 1 + .../specimens/misc/ElephizeIgnoreModule.php | 1 + .../specimens/misc/ExportedTypesModule.php | 1 + .../specimens/misc/ToReplaceCjsWrapper.php | 1 + .../specimens/misc/TypeInferenceModule.php | 1 + .../specimens/misc/TypecastModule.php | 1 + .../misc/UnusedVarsEliminationModule.php | 1 + .../allowedOnClick/AllowedGlobalClick.php | 1 + .../allowedOnClick/AllowedGlobalClickVar.php | 1 + .../allowedOnClick/AllowedGlobalClickVar2.php | 1 + .../allowedOnClick/AllowedGlobalClickVar3.php | 1 + .../misc/customIsomorphics/IsoComponent.php | 1 + .../misc/elephizeIgnore/ComponentIgnore.php | 1 + .../importedTypes/ImportedTypesComponent.php | 1 + .../ToReplaceIndexCjsWrapper.php | 1 + .../objectMethods/HasOwnPropertyModule.php | 1 + .../specimens/objectMethods/KeysModule.php | 1 + .../specimens/stringMethods/JoinModule.php | 1 + .../specimens/stringMethods/MatchModule.php | 1 + .../specimens/stringMethods/ParseModule.php | 1 + .../specimens/stringMethods/ReplaceModule.php | 1 + .../specimens/stringMethods/SplitModule.php | 1 + .../stringMethods/StartsWithModule.php | 1 + .../stringMethods/StrIncludesModule.php | 1 + .../stringMethods/StrIndexOfModule.php | 1 + .../stringMethods/StrSliceModule.php | 1 + .../specimens/stringMethods/SubstrModule.php | 1 + .../specimens/stringMethods/TrimModule.php | 1 + .../watchSpecimens/BrokenTsSyntaxModule.1.php | 1 + .../watchSpecimens/BrokenTsSyntaxModule.2.php | 1 + .../watchSpecimens/BrokenTsTypingModule.1.php | 1 + .../watchSpecimens/BrokenTsTypingModule.2.php | 1 + .../ElephizeAnnotationTarget.1.php | 1 + .../ElephizeAnnotationTargetModule.2.php | 1 + .../watchSpecimens/ImportNewFileModule.1.php | 1 + .../ImportNewFileToImportModule.1.php | 1 + .../watchSpecimens/ModifyFileModule.1.php | 1 + .../watchSpecimens/ModifyFileModule.2.php | 1 + .../ModifyFileTypehintsModule.1.php | 1 + .../ModifyFileTypehintsModule.2.php | 1 + .../watchSpecimens/RemoveImportModule.1.php | 1 + .../UndefVariableUsageModule.1.php | 1 + .../UndefVariableUsageModule.2.php | 1 + .../watchSpecimens/UnusedVariableModule.1.php | 1 + .../watchSpecimens/VariableUsageModule.1.php | 1 + .../watchSpecimens/VariableUsageModule.2.php | 1 + src/builtins/ReactContext.php | 77 +++++++++++++++++++ .../cjsModules/commonjsExternalModule.ts | 1 + .../components/cjsModules/commonjsModule.ts | 1 + .../components/cjsModules/reactModule.ts | 1 + src/ts2php/components/react/reactHooks.ts | 25 +++--- .../components/typeInference/basicTypes.ts | 8 ++ src/ts2php/renderers/jsxElement.ts | 21 +++++ 161 files changed, 454 insertions(+), 11 deletions(-) create mode 100644 demo/src/components/iso_palette/Context.tsx create mode 100644 src/__tests__/specimens/components/ReactContextConsumer.tsx create mode 100644 src/__tests__/specimens/components/ReactContextConsumer/ReactContextConsumer.php create mode 100644 src/__tests__/specimens/components/ReactContextProvider.tsx create mode 100644 src/__tests__/specimens/components/ReactContextProvider/ReactContextProvider.php create mode 100644 src/__tests__/specimens/components/ReactContextSource.tsx create mode 100644 src/__tests__/specimens/components/ReactContextSourceModule.php create mode 100644 src/builtins/ReactContext.php diff --git a/demo/src/components/App.isoentry.tsx b/demo/src/components/App.isoentry.tsx index b835530a..8ea72efd 100644 --- a/demo/src/components/App.isoentry.tsx +++ b/demo/src/components/App.isoentry.tsx @@ -3,6 +3,7 @@ import { Button } from '#iso_palette/Button/Button.iso'; import { StatefulInput } from '#iso_palette/Input/Input.iso'; import { Radio } from '#iso_palette/Radio/Radio.iso'; import { CheckBox } from '#iso_palette/CheckBox/CheckBox.iso'; +import { ctx } from '#iso_palette/Context'; // @elephizeTarget export const GenericIcon: React.FunctionComponent = () => { @@ -71,7 +72,9 @@ export const App: React.FunctionComponent = () => { - 1x + + 1x + 2x 3x diff --git a/demo/src/components/iso_palette/Context.tsx b/demo/src/components/iso_palette/Context.tsx new file mode 100644 index 00000000..1947d837 --- /dev/null +++ b/demo/src/components/iso_palette/Context.tsx @@ -0,0 +1,5 @@ +import * as React from 'react'; + +export const ctx = React.createContext({ + 'label': 'contexts! original' +}); diff --git a/demo/src/components/iso_palette/Radio/Radio.iso.tsx b/demo/src/components/iso_palette/Radio/Radio.iso.tsx index 411c5a9c..84d3fef0 100644 --- a/demo/src/components/iso_palette/Radio/Radio.iso.tsx +++ b/demo/src/components/iso_palette/Radio/Radio.iso.tsx @@ -1,5 +1,6 @@ import * as React from 'react'; import { classNames as cx } from '#utils/classnames'; +import { ctx } from '#iso_palette/Context'; const defaultProps: React.InputHTMLAttributes = { className: '', @@ -15,6 +16,8 @@ const defaultProps: React.InputHTMLAttributes = { // @elephizeTarget export const Radio: React.FunctionComponent> = (inputProps) => { const props = { ...defaultProps, ...inputProps }; + const { useContext } = React; + const context = useContext(ctx); const { className, @@ -32,6 +35,7 @@ export const Radio: React.FunctionComponent> = (i ); diff --git a/doc/support.md b/doc/support.md index ef68ccfc..9e270d53 100644 --- a/doc/support.md +++ b/doc/support.md @@ -96,6 +96,18 @@ Все стандартные обработчики событий игнорируются при транспиляции. +#### React.Context + +Поддерживается использование функции `React.createContext()` совместно с хуком `useContext()` и конструкцией ``. + +Особенности: + +- Объект, передаваемый в контекст, не должен иметь внутри себя никаких несериализуемых конструкций (в т.ч. функций, объектов классов, DOM-нод) +- В случае вложенности двух одинаковых контекстов используется ближайший. При этом значение объекта контекста полностью + заменяется (не дополняется!). Атрибут `value` в конструкции `` также заменяет значение по умолчанию, а не дополняет его. +- Объект контекста желательно создавать в отдельном файле, чтобы исключить возможные циклические зависимости между файлами. + В случае появления циклических импортов, вместо идентификатора контекста приедет null, и это совсем не то, чего мы хотим. + ### Ремарки про kphp - Чем однозначнее типы, которые вы используете - тем лучше, т.к. меньше шанс того, что kphp запутается при выводе типов в транспилированном коде. diff --git a/src/__tests__/5_components.spec.ts b/src/__tests__/5_components.spec.ts index b7318a4f..624a9f04 100644 --- a/src/__tests__/5_components.spec.ts +++ b/src/__tests__/5_components.spec.ts @@ -26,6 +26,7 @@ const testSuiteConfig: Array<{file: string[]; failOnErrors: string[]}> = [ { file: ['components', 'ImportResolve2.tsx'], failOnErrors: ['384ae', 'a57e4', '6554c'] }, { file: ['components', 'ReexportResolve.tsx'], failOnErrors: ['384ae', 'a57e4', '6554c'] }, { file: ['components', 'CyclicDepsEntry.ts'], failOnErrors: ['384ae', 'a57e4', '6554c'] }, + { file: ['components', 'ReactContextProvider.tsx'], failOnErrors: ['384ae', 'a57e4', '6554c'] }, // Checks for reserved words in paths/namespaces { file: ['components/static', 'KeywordTestComponent.tsx'], failOnErrors: ['384ae', 'a57e4'] }, { file: ['components/static', 'KeywordTestComponentImport.tsx'], failOnErrors: ['384ae', 'a57e4'] }, diff --git a/src/__tests__/specimens/arrayMethods/FilterModule.php b/src/__tests__/specimens/arrayMethods/FilterModule.php index 3feb46f6..0808bc0e 100644 --- a/src/__tests__/specimens/arrayMethods/FilterModule.php +++ b/src/__tests__/specimens/arrayMethods/FilterModule.php @@ -3,6 +3,7 @@ namespace specimens\arrayMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class FilterModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/FindModule.php b/src/__tests__/specimens/arrayMethods/FindModule.php index 8723a3bb..b1b7c6d8 100644 --- a/src/__tests__/specimens/arrayMethods/FindModule.php +++ b/src/__tests__/specimens/arrayMethods/FindModule.php @@ -3,6 +3,7 @@ namespace specimens\arrayMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class FindModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/ForEachModule.php b/src/__tests__/specimens/arrayMethods/ForEachModule.php index 1dca0b1f..f05ebbb7 100644 --- a/src/__tests__/specimens/arrayMethods/ForEachModule.php +++ b/src/__tests__/specimens/arrayMethods/ForEachModule.php @@ -3,6 +3,7 @@ namespace specimens\arrayMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ForEachModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/IncludesModule.php b/src/__tests__/specimens/arrayMethods/IncludesModule.php index 3e1434e6..2670a41b 100644 --- a/src/__tests__/specimens/arrayMethods/IncludesModule.php +++ b/src/__tests__/specimens/arrayMethods/IncludesModule.php @@ -3,6 +3,7 @@ namespace specimens\arrayMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class IncludesModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/IndexOfModule.php b/src/__tests__/specimens/arrayMethods/IndexOfModule.php index f6f9ac99..97e44a98 100644 --- a/src/__tests__/specimens/arrayMethods/IndexOfModule.php +++ b/src/__tests__/specimens/arrayMethods/IndexOfModule.php @@ -3,6 +3,7 @@ namespace specimens\arrayMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class IndexOfModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/IsArrayModule.php b/src/__tests__/specimens/arrayMethods/IsArrayModule.php index 05eaae30..38e00236 100644 --- a/src/__tests__/specimens/arrayMethods/IsArrayModule.php +++ b/src/__tests__/specimens/arrayMethods/IsArrayModule.php @@ -3,6 +3,7 @@ namespace specimens\arrayMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class IsArrayModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/MapModule.php b/src/__tests__/specimens/arrayMethods/MapModule.php index 4538ad57..061e5cd9 100644 --- a/src/__tests__/specimens/arrayMethods/MapModule.php +++ b/src/__tests__/specimens/arrayMethods/MapModule.php @@ -3,6 +3,7 @@ namespace specimens\arrayMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class MapModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/PushPopModule.php b/src/__tests__/specimens/arrayMethods/PushPopModule.php index 2aa47c34..ab352e3b 100644 --- a/src/__tests__/specimens/arrayMethods/PushPopModule.php +++ b/src/__tests__/specimens/arrayMethods/PushPopModule.php @@ -3,6 +3,7 @@ namespace specimens\arrayMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class PushPopModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/ReduceModule.php b/src/__tests__/specimens/arrayMethods/ReduceModule.php index 6fe96fac..0f7e18d5 100644 --- a/src/__tests__/specimens/arrayMethods/ReduceModule.php +++ b/src/__tests__/specimens/arrayMethods/ReduceModule.php @@ -3,6 +3,7 @@ namespace specimens\arrayMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ReduceModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/SliceModule.php b/src/__tests__/specimens/arrayMethods/SliceModule.php index 61cf061e..e3f6cea8 100644 --- a/src/__tests__/specimens/arrayMethods/SliceModule.php +++ b/src/__tests__/specimens/arrayMethods/SliceModule.php @@ -3,6 +3,7 @@ namespace specimens\arrayMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class SliceModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/SomeModule.php b/src/__tests__/specimens/arrayMethods/SomeModule.php index 3aa78f37..eed4e567 100644 --- a/src/__tests__/specimens/arrayMethods/SomeModule.php +++ b/src/__tests__/specimens/arrayMethods/SomeModule.php @@ -3,6 +3,7 @@ namespace specimens\arrayMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class SomeModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/SpliceModule.php b/src/__tests__/specimens/arrayMethods/SpliceModule.php index ac0472b7..93b4603e 100644 --- a/src/__tests__/specimens/arrayMethods/SpliceModule.php +++ b/src/__tests__/specimens/arrayMethods/SpliceModule.php @@ -3,6 +3,7 @@ namespace specimens\arrayMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class SpliceModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/ArrowFunctionModule.php b/src/__tests__/specimens/byType/ArrowFunctionModule.php index 96248daf..a1ae311b 100644 --- a/src/__tests__/specimens/byType/ArrowFunctionModule.php +++ b/src/__tests__/specimens/byType/ArrowFunctionModule.php @@ -3,6 +3,7 @@ namespace specimens\byType; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ArrowFunctionModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/BasicOperatorsModule.php b/src/__tests__/specimens/byType/BasicOperatorsModule.php index 0dbc16c3..192501a3 100644 --- a/src/__tests__/specimens/byType/BasicOperatorsModule.php +++ b/src/__tests__/specimens/byType/BasicOperatorsModule.php @@ -3,6 +3,7 @@ namespace specimens\byType; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class BasicOperatorsModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/BinaryExpressionModule.php b/src/__tests__/specimens/byType/BinaryExpressionModule.php index a26fb08a..8b8ca46b 100644 --- a/src/__tests__/specimens/byType/BinaryExpressionModule.php +++ b/src/__tests__/specimens/byType/BinaryExpressionModule.php @@ -3,6 +3,7 @@ namespace specimens\byType; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class BinaryExpressionModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/BlockModule.php b/src/__tests__/specimens/byType/BlockModule.php index f31ac77c..b2be0e5b 100644 --- a/src/__tests__/specimens/byType/BlockModule.php +++ b/src/__tests__/specimens/byType/BlockModule.php @@ -3,6 +3,7 @@ namespace specimens\byType; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class BlockModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/CallExpressionModule.php b/src/__tests__/specimens/byType/CallExpressionModule.php index 0f3a50ec..e81c0b6f 100644 --- a/src/__tests__/specimens/byType/CallExpressionModule.php +++ b/src/__tests__/specimens/byType/CallExpressionModule.php @@ -3,6 +3,7 @@ namespace specimens\byType; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class CallExpressionModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/ElementAccessExpressionModule.php b/src/__tests__/specimens/byType/ElementAccessExpressionModule.php index c3cfcb36..dcb91e77 100644 --- a/src/__tests__/specimens/byType/ElementAccessExpressionModule.php +++ b/src/__tests__/specimens/byType/ElementAccessExpressionModule.php @@ -3,6 +3,7 @@ namespace specimens\byType; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ElementAccessExpressionModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/EnumImportModule.php b/src/__tests__/specimens/byType/EnumImportModule.php index 1b1b8064..7dc6e600 100644 --- a/src/__tests__/specimens/byType/EnumImportModule.php +++ b/src/__tests__/specimens/byType/EnumImportModule.php @@ -3,6 +3,7 @@ namespace specimens\byType; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class EnumImportModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/EnumModule.php b/src/__tests__/specimens/byType/EnumModule.php index cae0e7a0..59e9734a 100644 --- a/src/__tests__/specimens/byType/EnumModule.php +++ b/src/__tests__/specimens/byType/EnumModule.php @@ -3,6 +3,7 @@ namespace specimens\byType; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class EnumModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/ExportModule.php b/src/__tests__/specimens/byType/ExportModule.php index c6a0ed0e..7416f6ef 100644 --- a/src/__tests__/specimens/byType/ExportModule.php +++ b/src/__tests__/specimens/byType/ExportModule.php @@ -3,6 +3,7 @@ namespace specimens\byType; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ExportModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/FunctionDeclarationModule.php b/src/__tests__/specimens/byType/FunctionDeclarationModule.php index 9b8406be..477986be 100644 --- a/src/__tests__/specimens/byType/FunctionDeclarationModule.php +++ b/src/__tests__/specimens/byType/FunctionDeclarationModule.php @@ -3,6 +3,7 @@ namespace specimens\byType; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class FunctionDeclarationModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/IdentifierModule.php b/src/__tests__/specimens/byType/IdentifierModule.php index 554e827f..072ad55c 100644 --- a/src/__tests__/specimens/byType/IdentifierModule.php +++ b/src/__tests__/specimens/byType/IdentifierModule.php @@ -3,6 +3,7 @@ namespace specimens\byType; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class IdentifierModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/IfStatementModule.php b/src/__tests__/specimens/byType/IfStatementModule.php index 3b72fc51..c21a3831 100644 --- a/src/__tests__/specimens/byType/IfStatementModule.php +++ b/src/__tests__/specimens/byType/IfStatementModule.php @@ -3,6 +3,7 @@ namespace specimens\byType; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class IfStatementModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/ImportModule.php b/src/__tests__/specimens/byType/ImportModule.php index ab94733a..f71dde06 100644 --- a/src/__tests__/specimens/byType/ImportModule.php +++ b/src/__tests__/specimens/byType/ImportModule.php @@ -3,6 +3,7 @@ namespace specimens\byType; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ImportModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/JsxModule.php b/src/__tests__/specimens/byType/JsxModule.php index 14826db6..03fd107b 100644 --- a/src/__tests__/specimens/byType/JsxModule.php +++ b/src/__tests__/specimens/byType/JsxModule.php @@ -1,6 +1,7 @@ }) { + const innerctxValue = useContext(props.innerctx); + const outerctxValue = useContext(Ctx1); + return
Inner: {innerctxValue}, outer: {outerctxValue}
; +} diff --git a/src/__tests__/specimens/components/ReactContextConsumer/ReactContextConsumer.php b/src/__tests__/specimens/components/ReactContextConsumer/ReactContextConsumer.php new file mode 100644 index 00000000..0f1fb541 --- /dev/null +++ b/src/__tests__/specimens/components/ReactContextConsumer/ReactContextConsumer.php @@ -0,0 +1,43 @@ +Ctx1 + ); + return \VK\Elephize\Builtins\IntrinsicElement::get("div")->render( + [], + [ + "Inner: ", + \VK\Elephize\Builtins\IntrinsicElement::escape($innerctx_value), + ", outer: ", + \VK\Elephize\Builtins\IntrinsicElement::escape($outerctx_value), + ] + ); + } +} diff --git a/src/__tests__/specimens/components/ReactContextProvider.tsx b/src/__tests__/specimens/components/ReactContextProvider.tsx new file mode 100644 index 00000000..651f7989 --- /dev/null +++ b/src/__tests__/specimens/components/ReactContextProvider.tsx @@ -0,0 +1,13 @@ +import * as React from 'react'; +import { ReactContextConsumer } from './ReactContextConsumer'; +import { Ctx1 } from './ReactContextSource'; + +// @elephizeTarget +export function ReactContextProvider() { + const Ctx2 = React.createContext({ testInnerVal: 2 }); + return ( + + + + ); +} diff --git a/src/__tests__/specimens/components/ReactContextProvider/ReactContextProvider.php b/src/__tests__/specimens/components/ReactContextProvider/ReactContextProvider.php new file mode 100644 index 00000000..71a5364e --- /dev/null +++ b/src/__tests__/specimens/components/ReactContextProvider/ReactContextProvider.php @@ -0,0 +1,54 @@ + 2, + ]); + return \VK\Elephize\Builtins\ReactContext::render([ + \VK\Elephize\Builtins\ReactContext::pushContext($Ctx2, [ + "testInnerVal" => 3, + ]), + \VK\Elephize\Builtins\ReactContext::render([ + \VK\Elephize\Builtins\ReactContext::pushContext( + \specimens\components\ReactContextSourceModule::getInstance()->Ctx1, + [ + "testVal" => 4, + ] + ), + \specimens\components\ReactContextConsumer\ReactContextConsumer::getInstance()->render( + ["someprop" => 123, "innerctx" => $Ctx2], + [] + ), + \VK\Elephize\Builtins\ReactContext::popContext( + \specimens\components\ReactContextSourceModule::getInstance()->Ctx1 + ), + ]), + \VK\Elephize\Builtins\ReactContext::popContext($Ctx2), + ]); + } +} diff --git a/src/__tests__/specimens/components/ReactContextSource.tsx b/src/__tests__/specimens/components/ReactContextSource.tsx new file mode 100644 index 00000000..32b2549e --- /dev/null +++ b/src/__tests__/specimens/components/ReactContextSource.tsx @@ -0,0 +1,3 @@ +import * as React from 'react'; + +export const Ctx1 = React.createContext({ testVal: 1 }); diff --git a/src/__tests__/specimens/components/ReactContextSourceModule.php b/src/__tests__/specimens/components/ReactContextSourceModule.php new file mode 100644 index 00000000..1381742f --- /dev/null +++ b/src/__tests__/specimens/components/ReactContextSourceModule.php @@ -0,0 +1,30 @@ +Ctx1 = \VK\Elephize\Builtins\ReactContext::createWithDefault([ + "testVal" => 1, + ]); + } +} diff --git a/src/__tests__/specimens/components/ReactSupport/ReactSupport.php b/src/__tests__/specimens/components/ReactSupport/ReactSupport.php index 31b026e3..8d731a24 100644 --- a/src/__tests__/specimens/components/ReactSupport/ReactSupport.php +++ b/src/__tests__/specimens/components/ReactSupport/ReactSupport.php @@ -3,6 +3,7 @@ namespace specimens\components\ReactSupport; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class ReactSupport extends RenderableComponent { /** @@ -28,6 +29,9 @@ public function render(array $props, array $children) { $anon_9911d2a = [0]; $count = (float) $anon_9911d2a[0]; \VK\Elephize\Builtins\Console::log($count); + $theme = \VK\Elephize\Builtins\ReactContext::getValue( + \VK\Elephize\Builtins\ReactContext::createWithDefault("123") + ); \VK\Elephize\Builtins\Console::log($theme); $anon_2e8ff8c = [[1, 2, 3, 4]]; $state = (array) $anon_2e8ff8c[0]; @@ -35,6 +39,6 @@ public function render(array $props, array $children) { $memoized_callback(); \VK\Elephize\Builtins\Console::log($memoized); \VK\Elephize\Builtins\Console::log($ref); - return \VK\Elephize\Builtins\IntrinsicElement::get("div")->render([], ['kek']); + return \VK\Elephize\Builtins\IntrinsicElement::get("div")->render([], ["kek"]); } } diff --git a/src/__tests__/specimens/components/ReactSupport2/ReactSupport2.php b/src/__tests__/specimens/components/ReactSupport2/ReactSupport2.php index 1423cd99..d1ede825 100644 --- a/src/__tests__/specimens/components/ReactSupport2/ReactSupport2.php +++ b/src/__tests__/specimens/components/ReactSupport2/ReactSupport2.php @@ -3,6 +3,7 @@ namespace specimens\components\ReactSupport2; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class ReactSupport2 extends RenderableComponent { /** @@ -28,6 +29,9 @@ public function render(array $props, array $children) { $anon_18b93da = [1]; $cnt = (float) $anon_18b93da[0]; \VK\Elephize\Builtins\Console::log($cnt); + $theme = \VK\Elephize\Builtins\ReactContext::getValue( + \VK\Elephize\Builtins\ReactContext::createWithDefault("123") + ); \VK\Elephize\Builtins\Console::log($theme); $anon_2e8ff8c = [[1, 2, 3, 4]]; $state = (array) $anon_2e8ff8c[0]; diff --git a/src/__tests__/specimens/components/ReexportResolve/Render.php b/src/__tests__/specimens/components/ReexportResolve/Render.php index f61b7439..3d2a3c9c 100644 --- a/src/__tests__/specimens/components/ReexportResolve/Render.php +++ b/src/__tests__/specimens/components/ReexportResolve/Render.php @@ -3,6 +3,7 @@ namespace specimens\components\ReexportResolve; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class Render extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/ReexportResolveModule.php b/src/__tests__/specimens/components/ReexportResolveModule.php index 5205bc27..6f42ec5d 100644 --- a/src/__tests__/specimens/components/ReexportResolveModule.php +++ b/src/__tests__/specimens/components/ReexportResolveModule.php @@ -3,6 +3,7 @@ namespace specimens\components; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ReexportResolveModule extends CJSModule { /** diff --git a/src/__tests__/specimens/components/TwoComponents/FirstComponent.php b/src/__tests__/specimens/components/TwoComponents/FirstComponent.php index 65325d43..717ac6ee 100644 --- a/src/__tests__/specimens/components/TwoComponents/FirstComponent.php +++ b/src/__tests__/specimens/components/TwoComponents/FirstComponent.php @@ -3,6 +3,7 @@ namespace specimens\components\TwoComponents; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class FirstComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/TwoComponents/SecondComponent.php b/src/__tests__/specimens/components/TwoComponents/SecondComponent.php index 4a438105..c1a3ff78 100644 --- a/src/__tests__/specimens/components/TwoComponents/SecondComponent.php +++ b/src/__tests__/specimens/components/TwoComponents/SecondComponent.php @@ -3,6 +3,7 @@ namespace specimens\components\TwoComponents; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class SecondComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/TwoComponentsModule.php b/src/__tests__/specimens/components/TwoComponentsModule.php index fee7b37a..8f9875ef 100644 --- a/src/__tests__/specimens/components/TwoComponentsModule.php +++ b/src/__tests__/specimens/components/TwoComponentsModule.php @@ -3,6 +3,7 @@ namespace specimens\components; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class TwoComponentsModule extends CJSModule { /** diff --git a/src/__tests__/specimens/components/TypedComponent/TypedComponent.php b/src/__tests__/specimens/components/TypedComponent/TypedComponent.php index 194bef26..58a73c9c 100644 --- a/src/__tests__/specimens/components/TypedComponent/TypedComponent.php +++ b/src/__tests__/specimens/components/TypedComponent/TypedComponent.php @@ -3,6 +3,7 @@ namespace specimens\components\TypedComponent; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class TypedComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/elephize_static/KeywordTestComponent/KeywordTestComponent.php b/src/__tests__/specimens/components/elephize_static/KeywordTestComponent/KeywordTestComponent.php index a93e1397..e39ff6fe 100644 --- a/src/__tests__/specimens/components/elephize_static/KeywordTestComponent/KeywordTestComponent.php +++ b/src/__tests__/specimens/components/elephize_static/KeywordTestComponent/KeywordTestComponent.php @@ -3,6 +3,7 @@ namespace specimens\components\elephize_static\KeywordTestComponent; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class KeywordTestComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/elephize_static/KeywordTestComponentImportModule.php b/src/__tests__/specimens/components/elephize_static/KeywordTestComponentImportModule.php index 3ce94ef8..8e725436 100644 --- a/src/__tests__/specimens/components/elephize_static/KeywordTestComponentImportModule.php +++ b/src/__tests__/specimens/components/elephize_static/KeywordTestComponentImportModule.php @@ -3,6 +3,7 @@ namespace specimens\components\elephize_static; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class KeywordTestComponentImportModule extends CJSModule { /** diff --git a/src/__tests__/specimens/components/elephize_static/KeywordTestModuleImportModule.php b/src/__tests__/specimens/components/elephize_static/KeywordTestModuleImportModule.php index a033a312..7969e10a 100644 --- a/src/__tests__/specimens/components/elephize_static/KeywordTestModuleImportModule.php +++ b/src/__tests__/specimens/components/elephize_static/KeywordTestModuleImportModule.php @@ -3,6 +3,7 @@ namespace specimens\components\elephize_static; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class KeywordTestModuleImportModule extends CJSModule { /** diff --git a/src/__tests__/specimens/components/elephize_static/KeywordTestModuleModule.php b/src/__tests__/specimens/components/elephize_static/KeywordTestModuleModule.php index 1cf155fe..888728f2 100644 --- a/src/__tests__/specimens/components/elephize_static/KeywordTestModuleModule.php +++ b/src/__tests__/specimens/components/elephize_static/KeywordTestModuleModule.php @@ -3,6 +3,7 @@ namespace specimens\components\elephize_static; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class KeywordTestModuleModule extends CJSModule { /** diff --git a/src/__tests__/specimens/fixes/CheckBox/CheckBox.php b/src/__tests__/specimens/fixes/CheckBox/CheckBox.php index df28f71d..74753bd4 100644 --- a/src/__tests__/specimens/fixes/CheckBox/CheckBox.php +++ b/src/__tests__/specimens/fixes/CheckBox/CheckBox.php @@ -3,6 +3,7 @@ namespace specimens\fixes\CheckBox; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class CheckBox extends RenderableComponent { /** diff --git a/src/__tests__/specimens/fixes/EscapeHtmlChars/EscapeHtmlChars.php b/src/__tests__/specimens/fixes/EscapeHtmlChars/EscapeHtmlChars.php index a5e91e5c..6519110c 100644 --- a/src/__tests__/specimens/fixes/EscapeHtmlChars/EscapeHtmlChars.php +++ b/src/__tests__/specimens/fixes/EscapeHtmlChars/EscapeHtmlChars.php @@ -3,6 +3,7 @@ namespace specimens\fixes\EscapeHtmlChars; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class EscapeHtmlChars extends RenderableComponent { /** diff --git a/src/__tests__/specimens/fixes/EscapeHtmlChars/NestedEscapeHtmlChars.php b/src/__tests__/specimens/fixes/EscapeHtmlChars/NestedEscapeHtmlChars.php index 1f34d9d3..a2daccea 100644 --- a/src/__tests__/specimens/fixes/EscapeHtmlChars/NestedEscapeHtmlChars.php +++ b/src/__tests__/specimens/fixes/EscapeHtmlChars/NestedEscapeHtmlChars.php @@ -3,6 +3,7 @@ namespace specimens\fixes\EscapeHtmlChars; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class NestedEscapeHtmlChars extends RenderableComponent { /** diff --git a/src/__tests__/specimens/fixes/EscapeHtmlCharsModule.php b/src/__tests__/specimens/fixes/EscapeHtmlCharsModule.php index f98babdb..c50b5cff 100644 --- a/src/__tests__/specimens/fixes/EscapeHtmlCharsModule.php +++ b/src/__tests__/specimens/fixes/EscapeHtmlCharsModule.php @@ -3,6 +3,7 @@ namespace specimens\fixes; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class EscapeHtmlCharsModule extends CJSModule { /** diff --git a/src/__tests__/specimens/fixes/ExcessiveEliminationModule.php b/src/__tests__/specimens/fixes/ExcessiveEliminationModule.php index c8f6306f..7adc4c5e 100644 --- a/src/__tests__/specimens/fixes/ExcessiveEliminationModule.php +++ b/src/__tests__/specimens/fixes/ExcessiveEliminationModule.php @@ -3,6 +3,7 @@ namespace specimens\fixes; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ExcessiveEliminationModule extends CJSModule { /** diff --git a/src/__tests__/specimens/fixes/ExcessiveEscaping/TextContainer.php b/src/__tests__/specimens/fixes/ExcessiveEscaping/TextContainer.php index 6c6cef3e..3cb8d3bd 100644 --- a/src/__tests__/specimens/fixes/ExcessiveEscaping/TextContainer.php +++ b/src/__tests__/specimens/fixes/ExcessiveEscaping/TextContainer.php @@ -3,6 +3,7 @@ namespace specimens\fixes\ExcessiveEscaping; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class TextContainer extends RenderableComponent { /** diff --git a/src/__tests__/specimens/functionMethods/ClosuresModule.php b/src/__tests__/specimens/functionMethods/ClosuresModule.php index caff5945..4a36df64 100644 --- a/src/__tests__/specimens/functionMethods/ClosuresModule.php +++ b/src/__tests__/specimens/functionMethods/ClosuresModule.php @@ -3,6 +3,7 @@ namespace specimens\functionMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ClosuresModule extends CJSModule { /** diff --git a/src/__tests__/specimens/mathMethods/BasicModule.php b/src/__tests__/specimens/mathMethods/BasicModule.php index 91a54481..88315eb2 100644 --- a/src/__tests__/specimens/mathMethods/BasicModule.php +++ b/src/__tests__/specimens/mathMethods/BasicModule.php @@ -3,6 +3,7 @@ namespace specimens\mathMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class BasicModule extends CJSModule { /** diff --git a/src/__tests__/specimens/mathMethods/ConstantsModule.php b/src/__tests__/specimens/mathMethods/ConstantsModule.php index 4ebfe998..4437d76d 100644 --- a/src/__tests__/specimens/mathMethods/ConstantsModule.php +++ b/src/__tests__/specimens/mathMethods/ConstantsModule.php @@ -3,6 +3,7 @@ namespace specimens\mathMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ConstantsModule extends CJSModule { /** diff --git a/src/__tests__/specimens/mathMethods/TrigonometryModule.php b/src/__tests__/specimens/mathMethods/TrigonometryModule.php index a4cf0203..a800114f 100644 --- a/src/__tests__/specimens/mathMethods/TrigonometryModule.php +++ b/src/__tests__/specimens/mathMethods/TrigonometryModule.php @@ -3,6 +3,7 @@ namespace specimens\mathMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class TrigonometryModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/AllowedOnClickModule.php b/src/__tests__/specimens/misc/AllowedOnClickModule.php index d8ee4e4c..b95754cf 100644 --- a/src/__tests__/specimens/misc/AllowedOnClickModule.php +++ b/src/__tests__/specimens/misc/AllowedOnClickModule.php @@ -3,6 +3,7 @@ namespace specimens\misc; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class AllowedOnClickModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/AstHooksModule.php b/src/__tests__/specimens/misc/AstHooksModule.php index c5bc01a2..a733933d 100644 --- a/src/__tests__/specimens/misc/AstHooksModule.php +++ b/src/__tests__/specimens/misc/AstHooksModule.php @@ -3,6 +3,7 @@ namespace specimens\misc; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class AstHooksModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/ComplexObjectFuncsModule.php b/src/__tests__/specimens/misc/ComplexObjectFuncsModule.php index c53e17df..817dc64f 100644 --- a/src/__tests__/specimens/misc/ComplexObjectFuncsModule.php +++ b/src/__tests__/specimens/misc/ComplexObjectFuncsModule.php @@ -3,6 +3,7 @@ namespace specimens\misc; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ComplexObjectFuncsModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/ComplexTypeInferenceModule.php b/src/__tests__/specimens/misc/ComplexTypeInferenceModule.php index 5562902a..7b947818 100644 --- a/src/__tests__/specimens/misc/ComplexTypeInferenceModule.php +++ b/src/__tests__/specimens/misc/ComplexTypeInferenceModule.php @@ -3,6 +3,7 @@ namespace specimens\misc; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ComplexTypeInferenceModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/ConstructorTypeCastModule.php b/src/__tests__/specimens/misc/ConstructorTypeCastModule.php index 2f73dd53..2d7c0a48 100644 --- a/src/__tests__/specimens/misc/ConstructorTypeCastModule.php +++ b/src/__tests__/specimens/misc/ConstructorTypeCastModule.php @@ -3,6 +3,7 @@ namespace specimens\misc; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ConstructorTypeCastModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/CustomIsomorphicsModule.php b/src/__tests__/specimens/misc/CustomIsomorphicsModule.php index f76bdaf2..cb3b36d8 100644 --- a/src/__tests__/specimens/misc/CustomIsomorphicsModule.php +++ b/src/__tests__/specimens/misc/CustomIsomorphicsModule.php @@ -3,6 +3,7 @@ namespace specimens\misc; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class CustomIsomorphicsModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/DefaultOperatorModule.php b/src/__tests__/specimens/misc/DefaultOperatorModule.php index 8dc43d3a..cd1e0a17 100644 --- a/src/__tests__/specimens/misc/DefaultOperatorModule.php +++ b/src/__tests__/specimens/misc/DefaultOperatorModule.php @@ -3,6 +3,7 @@ namespace specimens\misc; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class DefaultOperatorModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/DefaultValuesModule.php b/src/__tests__/specimens/misc/DefaultValuesModule.php index f8024ec9..7597328e 100644 --- a/src/__tests__/specimens/misc/DefaultValuesModule.php +++ b/src/__tests__/specimens/misc/DefaultValuesModule.php @@ -3,6 +3,7 @@ namespace specimens\misc; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class DefaultValuesModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/ElephizeIgnoreModule.php b/src/__tests__/specimens/misc/ElephizeIgnoreModule.php index c4e85ce1..836db936 100644 --- a/src/__tests__/specimens/misc/ElephizeIgnoreModule.php +++ b/src/__tests__/specimens/misc/ElephizeIgnoreModule.php @@ -3,6 +3,7 @@ namespace specimens\misc; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ElephizeIgnoreModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/ExportedTypesModule.php b/src/__tests__/specimens/misc/ExportedTypesModule.php index 109d3052..edab5b6a 100644 --- a/src/__tests__/specimens/misc/ExportedTypesModule.php +++ b/src/__tests__/specimens/misc/ExportedTypesModule.php @@ -3,6 +3,7 @@ namespace specimens\misc; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ExportedTypesModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/ToReplaceCjsWrapper.php b/src/__tests__/specimens/misc/ToReplaceCjsWrapper.php index 0eac0633..e4bac24b 100644 --- a/src/__tests__/specimens/misc/ToReplaceCjsWrapper.php +++ b/src/__tests__/specimens/misc/ToReplaceCjsWrapper.php @@ -3,6 +3,7 @@ namespace specimens\misc; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ToReplaceCjsWrapper extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/TypeInferenceModule.php b/src/__tests__/specimens/misc/TypeInferenceModule.php index 431d3726..3d7748d2 100644 --- a/src/__tests__/specimens/misc/TypeInferenceModule.php +++ b/src/__tests__/specimens/misc/TypeInferenceModule.php @@ -3,6 +3,7 @@ namespace specimens\misc; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class TypeInferenceModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/TypecastModule.php b/src/__tests__/specimens/misc/TypecastModule.php index 8b4e11cf..fc9ee391 100644 --- a/src/__tests__/specimens/misc/TypecastModule.php +++ b/src/__tests__/specimens/misc/TypecastModule.php @@ -3,6 +3,7 @@ namespace specimens\misc; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class TypecastModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/UnusedVarsEliminationModule.php b/src/__tests__/specimens/misc/UnusedVarsEliminationModule.php index 1cdb966c..3462db0e 100644 --- a/src/__tests__/specimens/misc/UnusedVarsEliminationModule.php +++ b/src/__tests__/specimens/misc/UnusedVarsEliminationModule.php @@ -3,6 +3,7 @@ namespace specimens\misc; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class UnusedVarsEliminationModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClick.php b/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClick.php index 22a6b46f..696eb48e 100644 --- a/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClick.php +++ b/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClick.php @@ -3,6 +3,7 @@ namespace specimens\misc\allowedOnClick; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class AllowedGlobalClick extends RenderableComponent { /** diff --git a/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar.php b/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar.php index 2846eeda..0221b48d 100644 --- a/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar.php +++ b/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar.php @@ -3,6 +3,7 @@ namespace specimens\misc\allowedOnClick; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class AllowedGlobalClickVar extends RenderableComponent { /** diff --git a/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar2.php b/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar2.php index 5af22fb0..b961c243 100644 --- a/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar2.php +++ b/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar2.php @@ -3,6 +3,7 @@ namespace specimens\misc\allowedOnClick; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class AllowedGlobalClickVar2 extends RenderableComponent { /** diff --git a/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar3.php b/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar3.php index bb910b2e..8cbf6e5c 100644 --- a/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar3.php +++ b/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar3.php @@ -3,6 +3,7 @@ namespace specimens\misc\allowedOnClick; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class AllowedGlobalClickVar3 extends RenderableComponent { /** diff --git a/src/__tests__/specimens/misc/customIsomorphics/IsoComponent.php b/src/__tests__/specimens/misc/customIsomorphics/IsoComponent.php index 7f542af8..92aa7de1 100644 --- a/src/__tests__/specimens/misc/customIsomorphics/IsoComponent.php +++ b/src/__tests__/specimens/misc/customIsomorphics/IsoComponent.php @@ -3,6 +3,7 @@ namespace specimens\misc\customIsomorphics; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class IsoComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/misc/elephizeIgnore/ComponentIgnore.php b/src/__tests__/specimens/misc/elephizeIgnore/ComponentIgnore.php index 634316ef..9df30c42 100644 --- a/src/__tests__/specimens/misc/elephizeIgnore/ComponentIgnore.php +++ b/src/__tests__/specimens/misc/elephizeIgnore/ComponentIgnore.php @@ -3,6 +3,7 @@ namespace specimens\misc\elephizeIgnore; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class ComponentIgnore extends RenderableComponent { /** diff --git a/src/__tests__/specimens/misc/importedTypes/ImportedTypesComponent.php b/src/__tests__/specimens/misc/importedTypes/ImportedTypesComponent.php index da296691..79121ea2 100644 --- a/src/__tests__/specimens/misc/importedTypes/ImportedTypesComponent.php +++ b/src/__tests__/specimens/misc/importedTypes/ImportedTypesComponent.php @@ -3,6 +3,7 @@ namespace specimens\misc\importedTypes; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class ImportedTypesComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/misc/toReplaceIndex/ToReplaceIndexCjsWrapper.php b/src/__tests__/specimens/misc/toReplaceIndex/ToReplaceIndexCjsWrapper.php index 32c5d18b..c57e5da9 100644 --- a/src/__tests__/specimens/misc/toReplaceIndex/ToReplaceIndexCjsWrapper.php +++ b/src/__tests__/specimens/misc/toReplaceIndex/ToReplaceIndexCjsWrapper.php @@ -3,6 +3,7 @@ namespace specimens\misc\toReplaceIndex; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ToReplaceSecondCjsWrapper extends CJSModule { /** diff --git a/src/__tests__/specimens/objectMethods/HasOwnPropertyModule.php b/src/__tests__/specimens/objectMethods/HasOwnPropertyModule.php index 97049ce5..c9bbc95a 100644 --- a/src/__tests__/specimens/objectMethods/HasOwnPropertyModule.php +++ b/src/__tests__/specimens/objectMethods/HasOwnPropertyModule.php @@ -3,6 +3,7 @@ namespace specimens\objectMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class HasOwnPropertyModule extends CJSModule { /** diff --git a/src/__tests__/specimens/objectMethods/KeysModule.php b/src/__tests__/specimens/objectMethods/KeysModule.php index 3f797374..1b371fd0 100644 --- a/src/__tests__/specimens/objectMethods/KeysModule.php +++ b/src/__tests__/specimens/objectMethods/KeysModule.php @@ -3,6 +3,7 @@ namespace specimens\objectMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class KeysModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/JoinModule.php b/src/__tests__/specimens/stringMethods/JoinModule.php index 514136d2..4b883408 100644 --- a/src/__tests__/specimens/stringMethods/JoinModule.php +++ b/src/__tests__/specimens/stringMethods/JoinModule.php @@ -3,6 +3,7 @@ namespace specimens\stringMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class JoinModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/MatchModule.php b/src/__tests__/specimens/stringMethods/MatchModule.php index 6c7fb019..ea80c34e 100644 --- a/src/__tests__/specimens/stringMethods/MatchModule.php +++ b/src/__tests__/specimens/stringMethods/MatchModule.php @@ -3,6 +3,7 @@ namespace specimens\stringMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class MatchModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/ParseModule.php b/src/__tests__/specimens/stringMethods/ParseModule.php index 9121a224..4618ee71 100644 --- a/src/__tests__/specimens/stringMethods/ParseModule.php +++ b/src/__tests__/specimens/stringMethods/ParseModule.php @@ -3,6 +3,7 @@ namespace specimens\stringMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ParseModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/ReplaceModule.php b/src/__tests__/specimens/stringMethods/ReplaceModule.php index 45e04996..63f368e8 100644 --- a/src/__tests__/specimens/stringMethods/ReplaceModule.php +++ b/src/__tests__/specimens/stringMethods/ReplaceModule.php @@ -3,6 +3,7 @@ namespace specimens\stringMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ReplaceModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/SplitModule.php b/src/__tests__/specimens/stringMethods/SplitModule.php index 69ee7c89..b1d41dc8 100644 --- a/src/__tests__/specimens/stringMethods/SplitModule.php +++ b/src/__tests__/specimens/stringMethods/SplitModule.php @@ -3,6 +3,7 @@ namespace specimens\stringMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class SplitModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/StartsWithModule.php b/src/__tests__/specimens/stringMethods/StartsWithModule.php index 5839e369..33758861 100644 --- a/src/__tests__/specimens/stringMethods/StartsWithModule.php +++ b/src/__tests__/specimens/stringMethods/StartsWithModule.php @@ -3,6 +3,7 @@ namespace specimens\stringMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class StartsWithModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/StrIncludesModule.php b/src/__tests__/specimens/stringMethods/StrIncludesModule.php index 6b815fe2..903d8465 100644 --- a/src/__tests__/specimens/stringMethods/StrIncludesModule.php +++ b/src/__tests__/specimens/stringMethods/StrIncludesModule.php @@ -3,6 +3,7 @@ namespace specimens\stringMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class StrIncludesModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/StrIndexOfModule.php b/src/__tests__/specimens/stringMethods/StrIndexOfModule.php index e8e1fafe..898dee7f 100644 --- a/src/__tests__/specimens/stringMethods/StrIndexOfModule.php +++ b/src/__tests__/specimens/stringMethods/StrIndexOfModule.php @@ -3,6 +3,7 @@ namespace specimens\stringMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class StrIndexOfModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/StrSliceModule.php b/src/__tests__/specimens/stringMethods/StrSliceModule.php index 6a5e8b2d..ee65502c 100644 --- a/src/__tests__/specimens/stringMethods/StrSliceModule.php +++ b/src/__tests__/specimens/stringMethods/StrSliceModule.php @@ -3,6 +3,7 @@ namespace specimens\stringMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class StrSliceModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/SubstrModule.php b/src/__tests__/specimens/stringMethods/SubstrModule.php index c8e26aba..5ecb9451 100644 --- a/src/__tests__/specimens/stringMethods/SubstrModule.php +++ b/src/__tests__/specimens/stringMethods/SubstrModule.php @@ -3,6 +3,7 @@ namespace specimens\stringMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class SubstrModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/TrimModule.php b/src/__tests__/specimens/stringMethods/TrimModule.php index 4633369d..64b45bc2 100644 --- a/src/__tests__/specimens/stringMethods/TrimModule.php +++ b/src/__tests__/specimens/stringMethods/TrimModule.php @@ -3,6 +3,7 @@ namespace specimens\stringMethods; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class TrimModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/BrokenTsSyntaxModule.1.php b/src/__tests__/watchSpecimens/BrokenTsSyntaxModule.1.php index e7462baf..3a1d4f4a 100644 --- a/src/__tests__/watchSpecimens/BrokenTsSyntaxModule.1.php +++ b/src/__tests__/watchSpecimens/BrokenTsSyntaxModule.1.php @@ -3,6 +3,7 @@ namespace watchSpecimens___; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class BrokenTsSyntaxModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/BrokenTsSyntaxModule.2.php b/src/__tests__/watchSpecimens/BrokenTsSyntaxModule.2.php index 74a04c0f..0c804e1b 100644 --- a/src/__tests__/watchSpecimens/BrokenTsSyntaxModule.2.php +++ b/src/__tests__/watchSpecimens/BrokenTsSyntaxModule.2.php @@ -3,6 +3,7 @@ namespace watchSpecimens___; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class BrokenTsSyntaxModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/BrokenTsTypingModule.1.php b/src/__tests__/watchSpecimens/BrokenTsTypingModule.1.php index 2a582bb7..5188f94c 100644 --- a/src/__tests__/watchSpecimens/BrokenTsTypingModule.1.php +++ b/src/__tests__/watchSpecimens/BrokenTsTypingModule.1.php @@ -3,6 +3,7 @@ namespace watchSpecimens___; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class BrokenTsTypingModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/BrokenTsTypingModule.2.php b/src/__tests__/watchSpecimens/BrokenTsTypingModule.2.php index a9e87c32..97b530e2 100644 --- a/src/__tests__/watchSpecimens/BrokenTsTypingModule.2.php +++ b/src/__tests__/watchSpecimens/BrokenTsTypingModule.2.php @@ -3,6 +3,7 @@ namespace watchSpecimens___; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class BrokenTsTypingModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/ElephizeAnnotationTarget.1.php b/src/__tests__/watchSpecimens/ElephizeAnnotationTarget.1.php index f3f148e2..73bcf92b 100644 --- a/src/__tests__/watchSpecimens/ElephizeAnnotationTarget.1.php +++ b/src/__tests__/watchSpecimens/ElephizeAnnotationTarget.1.php @@ -3,6 +3,7 @@ namespace watchSpecimens___\elephizeAnnotationTarget_entry; use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; +use VK\Elephize\Builtins\ReactContext; class ElephizeAnnotationTarget extends RenderableComponent { /** diff --git a/src/__tests__/watchSpecimens/ElephizeAnnotationTargetModule.2.php b/src/__tests__/watchSpecimens/ElephizeAnnotationTargetModule.2.php index dc711a31..8d0db376 100644 --- a/src/__tests__/watchSpecimens/ElephizeAnnotationTargetModule.2.php +++ b/src/__tests__/watchSpecimens/ElephizeAnnotationTargetModule.2.php @@ -3,6 +3,7 @@ namespace watchSpecimens___; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ElephizeAnnotationTargetModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/ImportNewFileModule.1.php b/src/__tests__/watchSpecimens/ImportNewFileModule.1.php index c33d228d..66dabe94 100644 --- a/src/__tests__/watchSpecimens/ImportNewFileModule.1.php +++ b/src/__tests__/watchSpecimens/ImportNewFileModule.1.php @@ -3,6 +3,7 @@ namespace watchSpecimens___; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ImportNewFileModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/ImportNewFileToImportModule.1.php b/src/__tests__/watchSpecimens/ImportNewFileToImportModule.1.php index 75126333..32b8c955 100644 --- a/src/__tests__/watchSpecimens/ImportNewFileToImportModule.1.php +++ b/src/__tests__/watchSpecimens/ImportNewFileToImportModule.1.php @@ -3,6 +3,7 @@ namespace watchSpecimens___; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ImportNewFileToImportModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/ModifyFileModule.1.php b/src/__tests__/watchSpecimens/ModifyFileModule.1.php index 158955a6..e45394f7 100644 --- a/src/__tests__/watchSpecimens/ModifyFileModule.1.php +++ b/src/__tests__/watchSpecimens/ModifyFileModule.1.php @@ -3,6 +3,7 @@ namespace watchSpecimens___; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ModifyFileModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/ModifyFileModule.2.php b/src/__tests__/watchSpecimens/ModifyFileModule.2.php index 31ef9b17..3131554c 100644 --- a/src/__tests__/watchSpecimens/ModifyFileModule.2.php +++ b/src/__tests__/watchSpecimens/ModifyFileModule.2.php @@ -3,6 +3,7 @@ namespace watchSpecimens___; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ModifyFileModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/ModifyFileTypehintsModule.1.php b/src/__tests__/watchSpecimens/ModifyFileTypehintsModule.1.php index f837f841..b47c1766 100644 --- a/src/__tests__/watchSpecimens/ModifyFileTypehintsModule.1.php +++ b/src/__tests__/watchSpecimens/ModifyFileTypehintsModule.1.php @@ -3,6 +3,7 @@ namespace watchSpecimens___; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ModifyFileTypehintsModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/ModifyFileTypehintsModule.2.php b/src/__tests__/watchSpecimens/ModifyFileTypehintsModule.2.php index fb4f8695..b25b902d 100644 --- a/src/__tests__/watchSpecimens/ModifyFileTypehintsModule.2.php +++ b/src/__tests__/watchSpecimens/ModifyFileTypehintsModule.2.php @@ -3,6 +3,7 @@ namespace watchSpecimens___; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class ModifyFileTypehintsModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/RemoveImportModule.1.php b/src/__tests__/watchSpecimens/RemoveImportModule.1.php index 6c120bdd..34feaf14 100644 --- a/src/__tests__/watchSpecimens/RemoveImportModule.1.php +++ b/src/__tests__/watchSpecimens/RemoveImportModule.1.php @@ -3,6 +3,7 @@ namespace watchSpecimens___; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class RemoveImportModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/UndefVariableUsageModule.1.php b/src/__tests__/watchSpecimens/UndefVariableUsageModule.1.php index 28162bde..546e1047 100644 --- a/src/__tests__/watchSpecimens/UndefVariableUsageModule.1.php +++ b/src/__tests__/watchSpecimens/UndefVariableUsageModule.1.php @@ -3,6 +3,7 @@ namespace watchSpecimens___; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class UndefVariableUsageModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/UndefVariableUsageModule.2.php b/src/__tests__/watchSpecimens/UndefVariableUsageModule.2.php index 9e56b2a5..ae83c844 100644 --- a/src/__tests__/watchSpecimens/UndefVariableUsageModule.2.php +++ b/src/__tests__/watchSpecimens/UndefVariableUsageModule.2.php @@ -3,6 +3,7 @@ namespace watchSpecimens___; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class UndefVariableUsageModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/UnusedVariableModule.1.php b/src/__tests__/watchSpecimens/UnusedVariableModule.1.php index 90479ae9..10328beb 100644 --- a/src/__tests__/watchSpecimens/UnusedVariableModule.1.php +++ b/src/__tests__/watchSpecimens/UnusedVariableModule.1.php @@ -3,6 +3,7 @@ namespace watchSpecimens___; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class UnusedVariableModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/VariableUsageModule.1.php b/src/__tests__/watchSpecimens/VariableUsageModule.1.php index b7395853..7c41ad64 100644 --- a/src/__tests__/watchSpecimens/VariableUsageModule.1.php +++ b/src/__tests__/watchSpecimens/VariableUsageModule.1.php @@ -3,6 +3,7 @@ namespace watchSpecimens___; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class VariableUsageModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/VariableUsageModule.2.php b/src/__tests__/watchSpecimens/VariableUsageModule.2.php index 822b1074..8e3e0d31 100644 --- a/src/__tests__/watchSpecimens/VariableUsageModule.2.php +++ b/src/__tests__/watchSpecimens/VariableUsageModule.2.php @@ -3,6 +3,7 @@ namespace watchSpecimens___; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; +use VK\Elephize\Builtins\ReactContext; class VariableUsageModule extends CJSModule { /** diff --git a/src/builtins/ReactContext.php b/src/builtins/ReactContext.php new file mode 100644 index 00000000..fd7e93be --- /dev/null +++ b/src/builtins/ReactContext.php @@ -0,0 +1,77 @@ +_valuesStack []= $initialValue; + $this->_lastNotNullValue = $initialValue; + } + + /** + * @param mixed $initialValue + * @return ReactContext + */ + public static function createWithDefault($initialValue) { + return new self($initialValue); + } + + /** + * @param ReactContext $ctx + * @param ?mixed $providerValue + * @return null + */ + public static function pushContext(ReactContext $ctx, $providerValue = null) { + $ctx->_valuesStack []= $providerValue; + if ($providerValue !== null) { + $ctx->_lastNotNullValue = $providerValue; + } + return null; + } + + /** + * @param ReactContext $ctx + * @return null + */ + public static function popContext(ReactContext $ctx) { + $val = array_pop($ctx->_valuesStack); + if ($val !== null) { + for ($i = count($ctx->_valuesStack) - 1; $i >= 0; $i--) { + if ($ctx->_valuesStack[$i] !== null) { + $ctx->_lastNotNullValue = $ctx->_valuesStack[$i]; + return null; + } + } + } + return null; + } + + /** + * @param mixed[] $children + * @return string + */ + public static function render($children) { + return implode('', array_filter($children)); + } + + /** + * @param ReactContext $ctx + * @return mixed + */ + public static function getValue(ReactContext $ctx) { + return $ctx->_lastNotNullValue; + } +} + diff --git a/src/ts2php/components/cjsModules/commonjsExternalModule.ts b/src/ts2php/components/cjsModules/commonjsExternalModule.ts index be68897c..96aa194b 100644 --- a/src/ts2php/components/cjsModules/commonjsExternalModule.ts +++ b/src/ts2php/components/cjsModules/commonjsExternalModule.ts @@ -58,6 +58,7 @@ export class CommonjsExternalModule extends CommonjsModule { namespace ${fullyQualifiedNamespace}; use ${this._namespaces.builtins}\\Stdlib; use ${this._namespaces.builtins}\\CJSModule; +use ${this._namespaces.builtins}\\ReactContext; class ${this.className} extends CJSModule { /** diff --git a/src/ts2php/components/cjsModules/commonjsModule.ts b/src/ts2php/components/cjsModules/commonjsModule.ts index c2cc22e1..f99d61e8 100644 --- a/src/ts2php/components/cjsModules/commonjsModule.ts +++ b/src/ts2php/components/cjsModules/commonjsModule.ts @@ -163,6 +163,7 @@ export class CommonjsModule implements ICommonjsModule { namespace ${fullyQualifiedNamespace}; use ${this._namespaces.builtins}\\Stdlib; use ${this._namespaces.builtins}\\CJSModule; +use ${this._namespaces.builtins}\\ReactContext; class ${this.className} extends CJSModule { /** diff --git a/src/ts2php/components/cjsModules/reactModule.ts b/src/ts2php/components/cjsModules/reactModule.ts index 1d80cf33..c76e07a0 100644 --- a/src/ts2php/components/cjsModules/reactModule.ts +++ b/src/ts2php/components/cjsModules/reactModule.ts @@ -55,6 +55,7 @@ export class ReactModule extends CommonjsModule implements IReactModule { namespace ${fullyQualifiedNamespace}; use ${this._namespaces.builtins}\\RenderableComponent; use ${this._namespaces.builtins}\\Stdlib; +use ${this._namespaces.builtins}\\ReactContext; class ${this.className} extends RenderableComponent { /** diff --git a/src/ts2php/components/react/reactHooks.ts b/src/ts2php/components/react/reactHooks.ts index c219abac..34eb42bb 100644 --- a/src/ts2php/components/react/reactHooks.ts +++ b/src/ts2php/components/react/reactHooks.ts @@ -7,7 +7,6 @@ import { renderNode } from '../codegen/renderNodes'; const hooksNames = [ 'useState', 'useEffect', - 'useContext', 'useReducer', 'useCallback', 'useMemo', @@ -15,6 +14,9 @@ const hooksNames = [ 'useImperativeHandle', 'useLayoutEffect', 'useDebugValue', + + 'useContext', + 'createContext', // process it here too because why not ]; // Initialize react module name in current scope @@ -28,7 +30,7 @@ export function initReact(node: ts.ImportDeclaration, context: Context, nodeIdent: string) => string | null; +type HookRenderer = (node: ts.CallExpression, context: Context) => string | null; type HookRenderers = Dict; const dropRender: HookRenderer = (node, context) => { @@ -45,11 +47,6 @@ const hookRenderers: HookRenderers = { return `[${val}]`; }, - 'useContext': (node, context, nodeIdent) => { - context.log.error('React contexts are not supported in isomorphic components', [], context.log.ctx(node)); - return dropRender(node, context, nodeIdent); - }, - 'useReducer': (node, context) => { const val = renderNode(node.arguments[1], context); // recognize only 2nd argument of call, it's initial state if (!val) { @@ -66,6 +63,16 @@ const hookRenderers: HookRenderers = { 'useImperativeHandle': () => '!null', 'useLayoutEffect': () => '!null', 'useDebugValue': () => '!null', + + // React contexts processing + 'createContext': (node, context) => { + const contextValue = renderNode(node.arguments[0], context); + return `\\${context.namespaces.builtins}\\ReactContext::createWithDefault(${contextValue})`; + }, + 'useContext': (node, context) => { + const contextNode = renderNode(node.arguments[0], context); + return `\\${context.namespaces.builtins}\\ReactContext::getValue(${contextNode})`; + }, }; export function reactHooksSupport(context: Context, node: ts.CallExpression): string | false { @@ -77,7 +84,7 @@ export function reactHooksSupport(context: Context, node: ts.CallEx } if (hooksNames.includes(ex.name.getText())) { - return hookRenderers[ex.name.getText()](node, context, ex.name.getText()) || false; + return hookRenderers[ex.name.getText()](node, context) || false; } return false; } @@ -88,7 +95,7 @@ export function reactHooksSupport(context: Context, node: ts.CallEx } if (context.moduleDescriptor.checkSpecialVarIdentifier(node.expression, hook)) { - return hookRenderers[hook](node, context, node.expression.getText()) || false; + return hookRenderers[hook](node, context) || false; } return false; diff --git a/src/ts2php/components/typeInference/basicTypes.ts b/src/ts2php/components/typeInference/basicTypes.ts index f4376f41..9bf296d5 100644 --- a/src/ts2php/components/typeInference/basicTypes.ts +++ b/src/ts2php/components/typeInference/basicTypes.ts @@ -149,6 +149,11 @@ function parseArrayType(node: ts.Type, baseNode: ts.Node, checker: ts.TypeChecke return false; } + // @ts-ignore TODO: find more convenient way to detect parent name + if (sym.escapedName === 'Context' && sym.parent.escapedName === 'React') { + return false; // context types will be handled separately + } + let isObjectType = false; if (!excludeObjects) { isObjectType = (ifaceDecl as ts.InterfaceDeclaration).members.length > 0; @@ -251,6 +256,9 @@ const transformTypeName = (type: ts.Type, node: ts.Node, checker: ts.TypeChecker if (t === 'Element' && (type.symbol as any)?.parent?.escapedName === 'JSX') { // Workaround; jsx elements are rendered to strings return 'string'; } + if (t.startsWith('React.Context')) { + return 'ReactContext'; + } return typeMap[t] || 'mixed'; }; diff --git a/src/ts2php/renderers/jsxElement.ts b/src/ts2php/renderers/jsxElement.ts index 0b591fe4..cc67fa43 100644 --- a/src/ts2php/renderers/jsxElement.ts +++ b/src/ts2php/renderers/jsxElement.ts @@ -22,6 +22,27 @@ export function tJsxElement(node: ts.JsxElement, context: Context) '[' + childrenRendered.join(', ') + ']' : '[]'; + if (node.openingElement.tagName.kind === ts.SyntaxKind.PropertyAccessExpression) { + // Probably react context provider? + if ( + node.openingElement.tagName.name.getText() === 'Provider' && + context.checker.getTypeAtLocation(node.openingElement.tagName.expression)?.symbol.escapedName === 'Context' + ) { + const contextValue = renderNode( + node.openingElement.attributes.properties + .find((prop): prop is ts.JsxAttribute => { + return prop.kind === ts.SyntaxKind.JsxAttribute && prop.name?.getText() === 'value'; + })?.initializer, + context + ); + const contextNode = renderNode(node.openingElement.tagName.expression, context); + const ctxChildren = renderNodes(Array.from(node.children), context, true).join(', '); + const pushContext = `\\${context.namespaces.builtins}\\ReactContext::pushContext(${contextNode}, ${contextValue})`; + const popContext = `\\${context.namespaces.builtins}\\ReactContext::popContext(${contextNode})`; + return `\\${context.namespaces.builtins}\\ReactContext::render([${pushContext}, ${ctxChildren}, ${popContext}])`; + } + } + if (node.openingElement.tagName.kind !== ts.SyntaxKind.Identifier) { context.log.error('Non-identifiers are not supported as jsx elements', [], context.log.ctx(node)); return 'null'; From e914f3e6fca52fa04ac0a9d4ce32ade0781aed74 Mon Sep 17 00:00:00 2001 From: Oleg Klimenko Date: Wed, 10 Nov 2021 18:19:56 +0300 Subject: [PATCH 2/3] Add kphp debug folder --- .gitignore | 1 + external/check_kphp.sh | 6 ++++-- src/builtins/ReactContext.php | 9 +++++---- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index e75c34a3..a00bcfca 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ node_modules/ .idea/ demo/node_modules demo/public/build +demo/public/kphp_out demo/public/dist demo/public/compiled_demo diff --git a/external/check_kphp.sh b/external/check_kphp.sh index 16d61fea..ddb47a59 100755 --- a/external/check_kphp.sh +++ b/external/check_kphp.sh @@ -10,7 +10,9 @@ if ! docker pull vkcom/kphp; then exit 1 fi -test -t 1 && USE_TTY="-t" +test -t 1 && USE_TTY="-t" -docker run ${USE_TTY} -i -v `pwd`/demo/public:/tmp/dev:rw vkcom/kphp /bin/sh -c 'kphp /tmp/dev/index.php -o /tmp/dev/compiled_demo --include-dir "/tmp/dev/build/" --verbosity 3' +mkdir `pwd`/demo/public/kphp_out + +docker run ${USE_TTY} -i -v `pwd`/demo/public:/tmp/dev:rw -v`pwd`/demo/public/kphp_out:/kphp_out:rw vkcom/kphp /bin/sh -c 'kphp /tmp/dev/index.php -o /tmp/dev/compiled_demo --include-dir "/tmp/dev/build/" --verbosity 3' exit $? diff --git a/src/builtins/ReactContext.php b/src/builtins/ReactContext.php index fd7e93be..2c56217f 100644 --- a/src/builtins/ReactContext.php +++ b/src/builtins/ReactContext.php @@ -10,7 +10,7 @@ class ReactContext { /** * @var mixed */ - private $_lastNotNullValue = null; + private $_lastNotNullValue; /** * @param mixed $initialValue @@ -33,7 +33,7 @@ public static function createWithDefault($initialValue) { * @param ?mixed $providerValue * @return null */ - public static function pushContext(ReactContext $ctx, $providerValue = null) { + public static function pushContext(ReactContext &$ctx, $providerValue = null) { $ctx->_valuesStack []= $providerValue; if ($providerValue !== null) { $ctx->_lastNotNullValue = $providerValue; @@ -45,9 +45,10 @@ public static function pushContext(ReactContext $ctx, $providerValue = null) { * @param ReactContext $ctx * @return null */ - public static function popContext(ReactContext $ctx) { + public static function popContext(ReactContext &$ctx) { $val = array_pop($ctx->_valuesStack); if ($val !== null) { + $ctx->_lastNotNullValue = null; for ($i = count($ctx->_valuesStack) - 1; $i >= 0; $i--) { if ($ctx->_valuesStack[$i] !== null) { $ctx->_lastNotNullValue = $ctx->_valuesStack[$i]; @@ -70,7 +71,7 @@ public static function render($children) { * @param ReactContext $ctx * @return mixed */ - public static function getValue(ReactContext $ctx) { + public static function getValue(ReactContext &$ctx) { return $ctx->_lastNotNullValue; } } From 49752a049e5c0c2b0b1a44e3ab0da023ceb9bf2b Mon Sep 17 00:00:00 2001 From: Oleg Klimenko Date: Thu, 11 Nov 2021 17:53:38 +0300 Subject: [PATCH 3/3] Experimental: tests for chain-based context --- .../specimens/arrayMethods/FilterModule.php | 1 + .../specimens/arrayMethods/FindModule.php | 1 + .../specimens/arrayMethods/ForEachModule.php | 1 + .../specimens/arrayMethods/IncludesModule.php | 1 + .../specimens/arrayMethods/IndexOfModule.php | 1 + .../specimens/arrayMethods/IsArrayModule.php | 1 + .../specimens/arrayMethods/MapModule.php | 1 + .../specimens/arrayMethods/PushPopModule.php | 1 + .../specimens/arrayMethods/ReduceModule.php | 1 + .../specimens/arrayMethods/SliceModule.php | 1 + .../specimens/arrayMethods/SomeModule.php | 1 + .../specimens/arrayMethods/SpliceModule.php | 1 + .../specimens/byType/ArrowFunctionModule.php | 1 + .../specimens/byType/BasicOperatorsModule.php | 1 + .../byType/BinaryExpressionModule.php | 1 + .../specimens/byType/BlockModule.php | 1 + .../specimens/byType/CallExpressionModule.php | 1 + .../byType/ElementAccessExpressionModule.php | 1 + .../specimens/byType/EnumImportModule.php | 1 + src/__tests__/specimens/byType/EnumModule.php | 1 + .../specimens/byType/ExportModule.php | 1 + .../byType/FunctionDeclarationModule.php | 1 + .../specimens/byType/IdentifierModule.php | 1 + .../specimens/byType/IfStatementModule.php | 1 + .../specimens/byType/ImportModule.php | 1 + .../specimens/byType/LoopsModule.php | 1 + .../byType/ObjectComputedPropertiesModule.php | 1 + .../byType/ObjectLiteralExpressionModule.php | 1 + .../byType/ParameterDestructuringModule.php | 1 + .../byType/PropertyAccessExpressionModule.php | 1 + .../specimens/byType/RestOperatorModule.php | 1 + .../byType/ServerIfStatementModule.php | 1 + .../specimens/byType/SpreadOperatorModule.php | 1 + .../byType/SwitchStatementModule.php | 1 + .../specimens/byType/TemplateStringModule.php | 1 + .../specimens/byType/TsInternalsModule.php | 1 + src/__tests__/specimens/byType/jsx/Jsx.php | 1 + .../BasicComponent/BasicComponent.php | 1 + .../BasicComponentWithProps.php | 1 + .../BasicComponentWithViewLogic.php | 1 + .../ComponentBinaryOperators.php | 1 + .../ComponentWithOuterFunction.php | 1 + .../ComponentWithOuterFunctionModule.php | 1 + .../CyclicDeps/CyclicDepsModule.php | 1 + .../components/CyclicDeps/Entry1Module.php | 1 + .../components/CyclicDeps/Entry2Module.php | 1 + .../components/CyclicDepsEntryModule.php | 1 + .../DummyComponent/DummyComponent.php | 1 + .../components/ImportResolve2Module.php | 1 + .../components/ImportResolveModule.php | 1 + .../InheritedProps/InheritedProps.php | 1 + .../components/InheritedPropsModule.php | 1 + .../InnerHtmlComponent/InnerHtmlComponent.php | 1 + .../NestedComponent/NestedComponent.php | 1 + .../NestedComponentWithDummyInProps.php | 1 + .../NestedComponentWithDummyInPropsModule.php | 1 + .../ComponentWrapper.php | 1 + .../NullReturnInComponent.php | 1 + .../components/PathResolve/HelpersModule.php | 1 + .../PathResolve/PathResolveModule.php | 1 + .../components/PathResolve/TsxModule.php | 1 + .../ReactPathResolveAnonymousComponent.php | 1 + .../Component/ReactPathResolveComponent.php | 1 + .../index/ReactPathResolveAnonymousModule.php | 1 + .../index/ReactPathResolveModule.php | 1 + .../ReactContextConsumer.php | 1 + .../ReactContextProvider.php | 38 ++++++----- .../components/ReactContextSourceModule.php | 3 +- .../components/ReactSupport/ReactSupport.php | 5 +- .../ReactSupport2/ReactSupport2.php | 5 +- .../components/ReexportResolve/Render.php | 1 + .../components/ReexportResolveModule.php | 1 + .../TwoComponents/FirstComponent.php | 1 + .../TwoComponents/SecondComponent.php | 1 + .../components/TwoComponentsModule.php | 1 + .../TypedComponent/TypedComponent.php | 1 + .../KeywordTestComponent.php | 1 + .../KeywordTestComponentImportModule.php | 1 + .../KeywordTestModuleImportModule.php | 1 + .../KeywordTestModuleModule.php | 1 + .../specimens/fixes/CheckBox/CheckBox.php | 1 + .../fixes/EscapeHtmlChars/EscapeHtmlChars.php | 1 + .../EscapeHtmlChars/NestedEscapeHtmlChars.php | 1 + .../specimens/fixes/EscapeHtmlCharsModule.php | 1 + .../fixes/ExcessiveEliminationModule.php | 1 + .../fixes/ExcessiveEscaping/TextContainer.php | 1 + .../functionMethods/ClosuresModule.php | 1 + .../specimens/mathMethods/BasicModule.php | 1 + .../specimens/mathMethods/ConstantsModule.php | 1 + .../mathMethods/TrigonometryModule.php | 1 + .../specimens/misc/AllowedOnClickModule.php | 1 + .../specimens/misc/AstHooksModule.php | 1 + .../misc/ComplexObjectFuncsModule.php | 1 + .../misc/ComplexTypeInferenceModule.php | 1 + .../misc/ConstructorTypeCastModule.php | 1 + .../misc/CustomIsomorphicsModule.php | 1 + .../specimens/misc/DefaultOperatorModule.php | 1 + .../specimens/misc/DefaultValuesModule.php | 1 + .../specimens/misc/ElephizeIgnoreModule.php | 1 + .../specimens/misc/ExportedTypesModule.php | 1 + .../specimens/misc/ToReplaceCjsWrapper.php | 1 + .../specimens/misc/TypeInferenceModule.php | 1 + .../specimens/misc/TypecastModule.php | 3 +- .../misc/UnusedVarsEliminationModule.php | 1 + .../allowedOnClick/AllowedGlobalClick.php | 1 + .../allowedOnClick/AllowedGlobalClickVar.php | 1 + .../allowedOnClick/AllowedGlobalClickVar2.php | 1 + .../allowedOnClick/AllowedGlobalClickVar3.php | 1 + .../misc/customIsomorphics/IsoComponent.php | 1 + .../misc/elephizeIgnore/ComponentIgnore.php | 1 + .../importedTypes/ImportedTypesComponent.php | 1 + .../ToReplaceIndexCjsWrapper.php | 1 + .../objectMethods/HasOwnPropertyModule.php | 1 + .../specimens/objectMethods/KeysModule.php | 1 + .../specimens/stringMethods/JoinModule.php | 1 + .../specimens/stringMethods/MatchModule.php | 1 + .../specimens/stringMethods/ParseModule.php | 1 + .../specimens/stringMethods/ReplaceModule.php | 1 + .../specimens/stringMethods/SplitModule.php | 1 + .../stringMethods/StartsWithModule.php | 1 + .../stringMethods/StrIncludesModule.php | 1 + .../stringMethods/StrIndexOfModule.php | 1 + .../stringMethods/StrSliceModule.php | 1 + .../specimens/stringMethods/SubstrModule.php | 1 + .../specimens/stringMethods/TrimModule.php | 1 + .../watchSpecimens/BrokenTsSyntaxModule.1.php | 1 + .../watchSpecimens/BrokenTsSyntaxModule.2.php | 1 + .../watchSpecimens/BrokenTsTypingModule.1.php | 1 + .../watchSpecimens/BrokenTsTypingModule.2.php | 1 + .../ElephizeAnnotationTarget.1.php | 1 + .../ElephizeAnnotationTargetModule.2.php | 1 + .../watchSpecimens/ImportNewFileModule.1.php | 1 + .../ImportNewFileToImportModule.1.php | 1 + .../watchSpecimens/ModifyFileModule.1.php | 1 + .../watchSpecimens/ModifyFileModule.2.php | 1 + .../ModifyFileTypehintsModule.1.php | 1 + .../ModifyFileTypehintsModule.2.php | 1 + .../watchSpecimens/RemoveImportModule.1.php | 1 + .../UndefVariableUsageModule.1.php | 1 + .../UndefVariableUsageModule.2.php | 1 + .../watchSpecimens/UnusedVariableModule.1.php | 1 + .../watchSpecimens/VariableUsageModule.1.php | 1 + .../watchSpecimens/VariableUsageModule.2.php | 1 + src/builtins/AbstractComponent.php | 34 ++++++++++ src/builtins/ReactContext.php | 36 +++-------- src/builtins/ReactContextSynthetic.php | 63 +++++++++++++++++++ src/builtins/RenderableComponent.php | 31 +-------- .../cjsModules/commonjsExternalModule.ts | 1 + .../components/cjsModules/commonjsModule.ts | 1 + .../components/cjsModules/reactModule.ts | 1 + src/ts2php/components/react/reactHooks.ts | 2 +- src/ts2php/renderers/jsxElement.ts | 7 ++- 152 files changed, 279 insertions(+), 89 deletions(-) create mode 100644 src/builtins/AbstractComponent.php create mode 100644 src/builtins/ReactContextSynthetic.php diff --git a/src/__tests__/specimens/arrayMethods/FilterModule.php b/src/__tests__/specimens/arrayMethods/FilterModule.php index 0808bc0e..319abdc4 100644 --- a/src/__tests__/specimens/arrayMethods/FilterModule.php +++ b/src/__tests__/specimens/arrayMethods/FilterModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class FilterModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/FindModule.php b/src/__tests__/specimens/arrayMethods/FindModule.php index b1b7c6d8..8d27eaad 100644 --- a/src/__tests__/specimens/arrayMethods/FindModule.php +++ b/src/__tests__/specimens/arrayMethods/FindModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class FindModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/ForEachModule.php b/src/__tests__/specimens/arrayMethods/ForEachModule.php index f05ebbb7..daad0988 100644 --- a/src/__tests__/specimens/arrayMethods/ForEachModule.php +++ b/src/__tests__/specimens/arrayMethods/ForEachModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ForEachModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/IncludesModule.php b/src/__tests__/specimens/arrayMethods/IncludesModule.php index 2670a41b..724c5833 100644 --- a/src/__tests__/specimens/arrayMethods/IncludesModule.php +++ b/src/__tests__/specimens/arrayMethods/IncludesModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class IncludesModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/IndexOfModule.php b/src/__tests__/specimens/arrayMethods/IndexOfModule.php index 97e44a98..d2360ddc 100644 --- a/src/__tests__/specimens/arrayMethods/IndexOfModule.php +++ b/src/__tests__/specimens/arrayMethods/IndexOfModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class IndexOfModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/IsArrayModule.php b/src/__tests__/specimens/arrayMethods/IsArrayModule.php index 38e00236..b1490a7f 100644 --- a/src/__tests__/specimens/arrayMethods/IsArrayModule.php +++ b/src/__tests__/specimens/arrayMethods/IsArrayModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class IsArrayModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/MapModule.php b/src/__tests__/specimens/arrayMethods/MapModule.php index 061e5cd9..1f31496a 100644 --- a/src/__tests__/specimens/arrayMethods/MapModule.php +++ b/src/__tests__/specimens/arrayMethods/MapModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class MapModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/PushPopModule.php b/src/__tests__/specimens/arrayMethods/PushPopModule.php index ab352e3b..1fbd3737 100644 --- a/src/__tests__/specimens/arrayMethods/PushPopModule.php +++ b/src/__tests__/specimens/arrayMethods/PushPopModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class PushPopModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/ReduceModule.php b/src/__tests__/specimens/arrayMethods/ReduceModule.php index 0f7e18d5..c4462200 100644 --- a/src/__tests__/specimens/arrayMethods/ReduceModule.php +++ b/src/__tests__/specimens/arrayMethods/ReduceModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ReduceModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/SliceModule.php b/src/__tests__/specimens/arrayMethods/SliceModule.php index e3f6cea8..ad970633 100644 --- a/src/__tests__/specimens/arrayMethods/SliceModule.php +++ b/src/__tests__/specimens/arrayMethods/SliceModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class SliceModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/SomeModule.php b/src/__tests__/specimens/arrayMethods/SomeModule.php index eed4e567..cdbcda41 100644 --- a/src/__tests__/specimens/arrayMethods/SomeModule.php +++ b/src/__tests__/specimens/arrayMethods/SomeModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class SomeModule extends CJSModule { /** diff --git a/src/__tests__/specimens/arrayMethods/SpliceModule.php b/src/__tests__/specimens/arrayMethods/SpliceModule.php index 93b4603e..5b0a40b2 100644 --- a/src/__tests__/specimens/arrayMethods/SpliceModule.php +++ b/src/__tests__/specimens/arrayMethods/SpliceModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class SpliceModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/ArrowFunctionModule.php b/src/__tests__/specimens/byType/ArrowFunctionModule.php index a1ae311b..1278c9c9 100644 --- a/src/__tests__/specimens/byType/ArrowFunctionModule.php +++ b/src/__tests__/specimens/byType/ArrowFunctionModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ArrowFunctionModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/BasicOperatorsModule.php b/src/__tests__/specimens/byType/BasicOperatorsModule.php index 192501a3..4221796c 100644 --- a/src/__tests__/specimens/byType/BasicOperatorsModule.php +++ b/src/__tests__/specimens/byType/BasicOperatorsModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class BasicOperatorsModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/BinaryExpressionModule.php b/src/__tests__/specimens/byType/BinaryExpressionModule.php index 8b8ca46b..bfac1c66 100644 --- a/src/__tests__/specimens/byType/BinaryExpressionModule.php +++ b/src/__tests__/specimens/byType/BinaryExpressionModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class BinaryExpressionModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/BlockModule.php b/src/__tests__/specimens/byType/BlockModule.php index b2be0e5b..cac138ed 100644 --- a/src/__tests__/specimens/byType/BlockModule.php +++ b/src/__tests__/specimens/byType/BlockModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class BlockModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/CallExpressionModule.php b/src/__tests__/specimens/byType/CallExpressionModule.php index e81c0b6f..372f62dd 100644 --- a/src/__tests__/specimens/byType/CallExpressionModule.php +++ b/src/__tests__/specimens/byType/CallExpressionModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class CallExpressionModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/ElementAccessExpressionModule.php b/src/__tests__/specimens/byType/ElementAccessExpressionModule.php index dcb91e77..c74942b7 100644 --- a/src/__tests__/specimens/byType/ElementAccessExpressionModule.php +++ b/src/__tests__/specimens/byType/ElementAccessExpressionModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ElementAccessExpressionModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/EnumImportModule.php b/src/__tests__/specimens/byType/EnumImportModule.php index 7dc6e600..b33066d6 100644 --- a/src/__tests__/specimens/byType/EnumImportModule.php +++ b/src/__tests__/specimens/byType/EnumImportModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class EnumImportModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/EnumModule.php b/src/__tests__/specimens/byType/EnumModule.php index 59e9734a..a4a3046a 100644 --- a/src/__tests__/specimens/byType/EnumModule.php +++ b/src/__tests__/specimens/byType/EnumModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class EnumModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/ExportModule.php b/src/__tests__/specimens/byType/ExportModule.php index 7416f6ef..a0e0c28b 100644 --- a/src/__tests__/specimens/byType/ExportModule.php +++ b/src/__tests__/specimens/byType/ExportModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ExportModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/FunctionDeclarationModule.php b/src/__tests__/specimens/byType/FunctionDeclarationModule.php index 477986be..2ae20655 100644 --- a/src/__tests__/specimens/byType/FunctionDeclarationModule.php +++ b/src/__tests__/specimens/byType/FunctionDeclarationModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class FunctionDeclarationModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/IdentifierModule.php b/src/__tests__/specimens/byType/IdentifierModule.php index 072ad55c..9d893509 100644 --- a/src/__tests__/specimens/byType/IdentifierModule.php +++ b/src/__tests__/specimens/byType/IdentifierModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class IdentifierModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/IfStatementModule.php b/src/__tests__/specimens/byType/IfStatementModule.php index c21a3831..3c7f83b0 100644 --- a/src/__tests__/specimens/byType/IfStatementModule.php +++ b/src/__tests__/specimens/byType/IfStatementModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class IfStatementModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/ImportModule.php b/src/__tests__/specimens/byType/ImportModule.php index f71dde06..7f9f18de 100644 --- a/src/__tests__/specimens/byType/ImportModule.php +++ b/src/__tests__/specimens/byType/ImportModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ImportModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/LoopsModule.php b/src/__tests__/specimens/byType/LoopsModule.php index 34fc8fb5..213109e2 100644 --- a/src/__tests__/specimens/byType/LoopsModule.php +++ b/src/__tests__/specimens/byType/LoopsModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class LoopsModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/ObjectComputedPropertiesModule.php b/src/__tests__/specimens/byType/ObjectComputedPropertiesModule.php index e3db800d..2c484af0 100644 --- a/src/__tests__/specimens/byType/ObjectComputedPropertiesModule.php +++ b/src/__tests__/specimens/byType/ObjectComputedPropertiesModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ObjectComputedPropertiesModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/ObjectLiteralExpressionModule.php b/src/__tests__/specimens/byType/ObjectLiteralExpressionModule.php index 5ddd88ac..42ae6e47 100644 --- a/src/__tests__/specimens/byType/ObjectLiteralExpressionModule.php +++ b/src/__tests__/specimens/byType/ObjectLiteralExpressionModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ObjectLiteralExpressionModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/ParameterDestructuringModule.php b/src/__tests__/specimens/byType/ParameterDestructuringModule.php index 98992e98..4fd433c9 100644 --- a/src/__tests__/specimens/byType/ParameterDestructuringModule.php +++ b/src/__tests__/specimens/byType/ParameterDestructuringModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ParameterDestructuringModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/PropertyAccessExpressionModule.php b/src/__tests__/specimens/byType/PropertyAccessExpressionModule.php index f8101121..6321d284 100644 --- a/src/__tests__/specimens/byType/PropertyAccessExpressionModule.php +++ b/src/__tests__/specimens/byType/PropertyAccessExpressionModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class PropertyAccessExpressionModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/RestOperatorModule.php b/src/__tests__/specimens/byType/RestOperatorModule.php index da3d336f..0ea05cbb 100644 --- a/src/__tests__/specimens/byType/RestOperatorModule.php +++ b/src/__tests__/specimens/byType/RestOperatorModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class RestOperatorModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/ServerIfStatementModule.php b/src/__tests__/specimens/byType/ServerIfStatementModule.php index a5441408..b59ba88c 100644 --- a/src/__tests__/specimens/byType/ServerIfStatementModule.php +++ b/src/__tests__/specimens/byType/ServerIfStatementModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ServerIfStatementModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/SpreadOperatorModule.php b/src/__tests__/specimens/byType/SpreadOperatorModule.php index 99dd985a..28a65c05 100644 --- a/src/__tests__/specimens/byType/SpreadOperatorModule.php +++ b/src/__tests__/specimens/byType/SpreadOperatorModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class SpreadOperatorModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/SwitchStatementModule.php b/src/__tests__/specimens/byType/SwitchStatementModule.php index 1017776a..07d73d36 100644 --- a/src/__tests__/specimens/byType/SwitchStatementModule.php +++ b/src/__tests__/specimens/byType/SwitchStatementModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class SwitchStatementModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/TemplateStringModule.php b/src/__tests__/specimens/byType/TemplateStringModule.php index 1d85453d..3f5abefc 100644 --- a/src/__tests__/specimens/byType/TemplateStringModule.php +++ b/src/__tests__/specimens/byType/TemplateStringModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class TemplateStringModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/TsInternalsModule.php b/src/__tests__/specimens/byType/TsInternalsModule.php index 878ec019..509f9fa9 100644 --- a/src/__tests__/specimens/byType/TsInternalsModule.php +++ b/src/__tests__/specimens/byType/TsInternalsModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class TsInternalsModule extends CJSModule { /** diff --git a/src/__tests__/specimens/byType/jsx/Jsx.php b/src/__tests__/specimens/byType/jsx/Jsx.php index b63c8f32..0a4df628 100644 --- a/src/__tests__/specimens/byType/jsx/Jsx.php +++ b/src/__tests__/specimens/byType/jsx/Jsx.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class Jsx extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/BasicComponent/BasicComponent.php b/src/__tests__/specimens/components/BasicComponent/BasicComponent.php index 7df8a601..0c66b1bf 100644 --- a/src/__tests__/specimens/components/BasicComponent/BasicComponent.php +++ b/src/__tests__/specimens/components/BasicComponent/BasicComponent.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class BasicComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/BasicComponentWithProps/BasicComponentWithProps.php b/src/__tests__/specimens/components/BasicComponentWithProps/BasicComponentWithProps.php index 4aac4cbd..913c730e 100644 --- a/src/__tests__/specimens/components/BasicComponentWithProps/BasicComponentWithProps.php +++ b/src/__tests__/specimens/components/BasicComponentWithProps/BasicComponentWithProps.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class BasicComponentWithProps extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/BasicComponentWithViewLogic/BasicComponentWithViewLogic.php b/src/__tests__/specimens/components/BasicComponentWithViewLogic/BasicComponentWithViewLogic.php index d78a8e28..fac06d2e 100644 --- a/src/__tests__/specimens/components/BasicComponentWithViewLogic/BasicComponentWithViewLogic.php +++ b/src/__tests__/specimens/components/BasicComponentWithViewLogic/BasicComponentWithViewLogic.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class BasicComponentWithViewLogic extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/ComponentBinaryOperators/ComponentBinaryOperators.php b/src/__tests__/specimens/components/ComponentBinaryOperators/ComponentBinaryOperators.php index 34266b4e..7c8eadfe 100644 --- a/src/__tests__/specimens/components/ComponentBinaryOperators/ComponentBinaryOperators.php +++ b/src/__tests__/specimens/components/ComponentBinaryOperators/ComponentBinaryOperators.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ComponentBinaryOperators extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/ComponentWithOuterFunction/ComponentWithOuterFunction.php b/src/__tests__/specimens/components/ComponentWithOuterFunction/ComponentWithOuterFunction.php index d22425e1..b4b5cc98 100644 --- a/src/__tests__/specimens/components/ComponentWithOuterFunction/ComponentWithOuterFunction.php +++ b/src/__tests__/specimens/components/ComponentWithOuterFunction/ComponentWithOuterFunction.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ComponentWithOuterFunction extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/ComponentWithOuterFunctionModule.php b/src/__tests__/specimens/components/ComponentWithOuterFunctionModule.php index 8da6cd63..8518ce38 100644 --- a/src/__tests__/specimens/components/ComponentWithOuterFunctionModule.php +++ b/src/__tests__/specimens/components/ComponentWithOuterFunctionModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ComponentWithOuterFunctionModule extends CJSModule { /** diff --git a/src/__tests__/specimens/components/CyclicDeps/CyclicDepsModule.php b/src/__tests__/specimens/components/CyclicDeps/CyclicDepsModule.php index 94446908..02203ecf 100644 --- a/src/__tests__/specimens/components/CyclicDeps/CyclicDepsModule.php +++ b/src/__tests__/specimens/components/CyclicDeps/CyclicDepsModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class CyclicDepsModule extends CJSModule { /** diff --git a/src/__tests__/specimens/components/CyclicDeps/Entry1Module.php b/src/__tests__/specimens/components/CyclicDeps/Entry1Module.php index 15d7029a..cb07fdc7 100644 --- a/src/__tests__/specimens/components/CyclicDeps/Entry1Module.php +++ b/src/__tests__/specimens/components/CyclicDeps/Entry1Module.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class Entry1Module extends CJSModule { /** diff --git a/src/__tests__/specimens/components/CyclicDeps/Entry2Module.php b/src/__tests__/specimens/components/CyclicDeps/Entry2Module.php index cddb1d5e..69d69f04 100644 --- a/src/__tests__/specimens/components/CyclicDeps/Entry2Module.php +++ b/src/__tests__/specimens/components/CyclicDeps/Entry2Module.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class Entry2Module extends CJSModule { /** diff --git a/src/__tests__/specimens/components/CyclicDepsEntryModule.php b/src/__tests__/specimens/components/CyclicDepsEntryModule.php index f0eba253..2c0fc1e8 100644 --- a/src/__tests__/specimens/components/CyclicDepsEntryModule.php +++ b/src/__tests__/specimens/components/CyclicDepsEntryModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class CyclicDepsEntryModule extends CJSModule { /** diff --git a/src/__tests__/specimens/components/DummyComponent/DummyComponent.php b/src/__tests__/specimens/components/DummyComponent/DummyComponent.php index 5e963620..a709a121 100644 --- a/src/__tests__/specimens/components/DummyComponent/DummyComponent.php +++ b/src/__tests__/specimens/components/DummyComponent/DummyComponent.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class DummyComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/ImportResolve2Module.php b/src/__tests__/specimens/components/ImportResolve2Module.php index f80220ab..e116501f 100644 --- a/src/__tests__/specimens/components/ImportResolve2Module.php +++ b/src/__tests__/specimens/components/ImportResolve2Module.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ImportResolve2Module extends CJSModule { /** diff --git a/src/__tests__/specimens/components/ImportResolveModule.php b/src/__tests__/specimens/components/ImportResolveModule.php index 0c648366..3a29f065 100644 --- a/src/__tests__/specimens/components/ImportResolveModule.php +++ b/src/__tests__/specimens/components/ImportResolveModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ImportResolveModule extends CJSModule { /** diff --git a/src/__tests__/specimens/components/InheritedProps/InheritedProps.php b/src/__tests__/specimens/components/InheritedProps/InheritedProps.php index 8ae36548..b53a0e0f 100644 --- a/src/__tests__/specimens/components/InheritedProps/InheritedProps.php +++ b/src/__tests__/specimens/components/InheritedProps/InheritedProps.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class InheritedProps extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/InheritedPropsModule.php b/src/__tests__/specimens/components/InheritedPropsModule.php index d23b3d0e..fbf991ae 100644 --- a/src/__tests__/specimens/components/InheritedPropsModule.php +++ b/src/__tests__/specimens/components/InheritedPropsModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class InheritedPropsModule extends CJSModule { /** diff --git a/src/__tests__/specimens/components/InnerHtmlComponent/InnerHtmlComponent.php b/src/__tests__/specimens/components/InnerHtmlComponent/InnerHtmlComponent.php index 5d8e7f99..ec98fea5 100644 --- a/src/__tests__/specimens/components/InnerHtmlComponent/InnerHtmlComponent.php +++ b/src/__tests__/specimens/components/InnerHtmlComponent/InnerHtmlComponent.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class InnerHtmlComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/NestedComponent/NestedComponent.php b/src/__tests__/specimens/components/NestedComponent/NestedComponent.php index f06aa9b3..4422cfe9 100644 --- a/src/__tests__/specimens/components/NestedComponent/NestedComponent.php +++ b/src/__tests__/specimens/components/NestedComponent/NestedComponent.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class NestedComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/NestedComponentWithDummyInProps/NestedComponentWithDummyInProps.php b/src/__tests__/specimens/components/NestedComponentWithDummyInProps/NestedComponentWithDummyInProps.php index 483e2fa8..527a96b8 100644 --- a/src/__tests__/specimens/components/NestedComponentWithDummyInProps/NestedComponentWithDummyInProps.php +++ b/src/__tests__/specimens/components/NestedComponentWithDummyInProps/NestedComponentWithDummyInProps.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class NestedComponentWithDummyInProps extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/NestedComponentWithDummyInPropsModule.php b/src/__tests__/specimens/components/NestedComponentWithDummyInPropsModule.php index cef7a27d..ef4e4801 100644 --- a/src/__tests__/specimens/components/NestedComponentWithDummyInPropsModule.php +++ b/src/__tests__/specimens/components/NestedComponentWithDummyInPropsModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class NestedComponentWithDummyInPropsModule extends CJSModule { /** diff --git a/src/__tests__/specimens/components/NestedConditionalComponent/ComponentWrapper.php b/src/__tests__/specimens/components/NestedConditionalComponent/ComponentWrapper.php index b148a532..11c3c992 100644 --- a/src/__tests__/specimens/components/NestedConditionalComponent/ComponentWrapper.php +++ b/src/__tests__/specimens/components/NestedConditionalComponent/ComponentWrapper.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ComponentWrapper extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/NullReturnInComponent/NullReturnInComponent.php b/src/__tests__/specimens/components/NullReturnInComponent/NullReturnInComponent.php index 33ae4484..c2eb71c2 100644 --- a/src/__tests__/specimens/components/NullReturnInComponent/NullReturnInComponent.php +++ b/src/__tests__/specimens/components/NullReturnInComponent/NullReturnInComponent.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class NullReturnInComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/PathResolve/HelpersModule.php b/src/__tests__/specimens/components/PathResolve/HelpersModule.php index 86df6656..6286d77b 100644 --- a/src/__tests__/specimens/components/PathResolve/HelpersModule.php +++ b/src/__tests__/specimens/components/PathResolve/HelpersModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class HelpersModule extends CJSModule { /** diff --git a/src/__tests__/specimens/components/PathResolve/PathResolveModule.php b/src/__tests__/specimens/components/PathResolve/PathResolveModule.php index b6967dfc..3ef8dee3 100644 --- a/src/__tests__/specimens/components/PathResolve/PathResolveModule.php +++ b/src/__tests__/specimens/components/PathResolve/PathResolveModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class PathResolveModule extends CJSModule { /** diff --git a/src/__tests__/specimens/components/PathResolve/TsxModule.php b/src/__tests__/specimens/components/PathResolve/TsxModule.php index 32a35f4f..e5de5f82 100644 --- a/src/__tests__/specimens/components/PathResolve/TsxModule.php +++ b/src/__tests__/specimens/components/PathResolve/TsxModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class TsxModule extends CJSModule { /** diff --git a/src/__tests__/specimens/components/PathResolveReact/Component/ReactPathResolveAnonymousComponent.php b/src/__tests__/specimens/components/PathResolveReact/Component/ReactPathResolveAnonymousComponent.php index bb76cc03..41c0a1f8 100644 --- a/src/__tests__/specimens/components/PathResolveReact/Component/ReactPathResolveAnonymousComponent.php +++ b/src/__tests__/specimens/components/PathResolveReact/Component/ReactPathResolveAnonymousComponent.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ReactPathResolveAnonymousComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/PathResolveReact/Component/ReactPathResolveComponent.php b/src/__tests__/specimens/components/PathResolveReact/Component/ReactPathResolveComponent.php index f841b76c..31c2b71e 100644 --- a/src/__tests__/specimens/components/PathResolveReact/Component/ReactPathResolveComponent.php +++ b/src/__tests__/specimens/components/PathResolveReact/Component/ReactPathResolveComponent.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ReactPathResolveComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/PathResolveReact/index/ReactPathResolveAnonymousModule.php b/src/__tests__/specimens/components/PathResolveReact/index/ReactPathResolveAnonymousModule.php index f15c5801..4e4d194f 100644 --- a/src/__tests__/specimens/components/PathResolveReact/index/ReactPathResolveAnonymousModule.php +++ b/src/__tests__/specimens/components/PathResolveReact/index/ReactPathResolveAnonymousModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ReactPathResolveAnonymousModule extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/PathResolveReact/index/ReactPathResolveModule.php b/src/__tests__/specimens/components/PathResolveReact/index/ReactPathResolveModule.php index 4e2b518b..f1094024 100644 --- a/src/__tests__/specimens/components/PathResolveReact/index/ReactPathResolveModule.php +++ b/src/__tests__/specimens/components/PathResolveReact/index/ReactPathResolveModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ReactPathResolveModule extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/ReactContextConsumer/ReactContextConsumer.php b/src/__tests__/specimens/components/ReactContextConsumer/ReactContextConsumer.php index 0f1fb541..ab379ada 100644 --- a/src/__tests__/specimens/components/ReactContextConsumer/ReactContextConsumer.php +++ b/src/__tests__/specimens/components/ReactContextConsumer/ReactContextConsumer.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ReactContextConsumer extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/ReactContextProvider/ReactContextProvider.php b/src/__tests__/specimens/components/ReactContextProvider/ReactContextProvider.php index 71a5364e..35622836 100644 --- a/src/__tests__/specimens/components/ReactContextProvider/ReactContextProvider.php +++ b/src/__tests__/specimens/components/ReactContextProvider/ReactContextProvider.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ReactContextProvider extends RenderableComponent { /** @@ -26,29 +27,26 @@ private function __construct() { * @return ?string */ public function render(array $props, array $children) { - $Ctx2 = \VK\Elephize\Builtins\ReactContext::createWithDefault([ + $Ctx2 = new \VK\Elephize\Builtins\ReactContext([ "testInnerVal" => 2, ]); - return \VK\Elephize\Builtins\ReactContext::render([ - \VK\Elephize\Builtins\ReactContext::pushContext($Ctx2, [ + return \VK\Elephize\Builtins\ReactContextSynthetic::spawn() + ->pushContext($Ctx2, [ "testInnerVal" => 3, - ]), - \VK\Elephize\Builtins\ReactContext::render([ - \VK\Elephize\Builtins\ReactContext::pushContext( - \specimens\components\ReactContextSourceModule::getInstance()->Ctx1, - [ + ]) + ->render([ + \VK\Elephize\Builtins\ReactContextSynthetic::spawn() + ->pushContext(\specimens\components\ReactContextSourceModule::getInstance()->Ctx1, [ "testVal" => 4, - ] - ), - \specimens\components\ReactContextConsumer\ReactContextConsumer::getInstance()->render( - ["someprop" => 123, "innerctx" => $Ctx2], - [] - ), - \VK\Elephize\Builtins\ReactContext::popContext( - \specimens\components\ReactContextSourceModule::getInstance()->Ctx1 - ), - ]), - \VK\Elephize\Builtins\ReactContext::popContext($Ctx2), - ]); + ]) + ->render([ + \specimens\components\ReactContextConsumer\ReactContextConsumer::getInstance()->render( + ["someprop" => 123, "innerctx" => $Ctx2], + [] + ), + ]) + ->popContext(\specimens\components\ReactContextSourceModule::getInstance()->Ctx1), + ]) + ->popContext($Ctx2); } } diff --git a/src/__tests__/specimens/components/ReactContextSourceModule.php b/src/__tests__/specimens/components/ReactContextSourceModule.php index 1381742f..f2cf7d8b 100644 --- a/src/__tests__/specimens/components/ReactContextSourceModule.php +++ b/src/__tests__/specimens/components/ReactContextSourceModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ReactContextSourceModule extends CJSModule { /** @@ -23,7 +24,7 @@ public static function getInstance(): ReactContextSourceModule { public $Ctx1; private function __construct() { - $this->Ctx1 = \VK\Elephize\Builtins\ReactContext::createWithDefault([ + $this->Ctx1 = new \VK\Elephize\Builtins\ReactContext([ "testVal" => 1, ]); } diff --git a/src/__tests__/specimens/components/ReactSupport/ReactSupport.php b/src/__tests__/specimens/components/ReactSupport/ReactSupport.php index 8d731a24..9d34e356 100644 --- a/src/__tests__/specimens/components/ReactSupport/ReactSupport.php +++ b/src/__tests__/specimens/components/ReactSupport/ReactSupport.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ReactSupport extends RenderableComponent { /** @@ -29,9 +30,7 @@ public function render(array $props, array $children) { $anon_9911d2a = [0]; $count = (float) $anon_9911d2a[0]; \VK\Elephize\Builtins\Console::log($count); - $theme = \VK\Elephize\Builtins\ReactContext::getValue( - \VK\Elephize\Builtins\ReactContext::createWithDefault("123") - ); + $theme = \VK\Elephize\Builtins\ReactContext::getValue(new \VK\Elephize\Builtins\ReactContext("123")); \VK\Elephize\Builtins\Console::log($theme); $anon_2e8ff8c = [[1, 2, 3, 4]]; $state = (array) $anon_2e8ff8c[0]; diff --git a/src/__tests__/specimens/components/ReactSupport2/ReactSupport2.php b/src/__tests__/specimens/components/ReactSupport2/ReactSupport2.php index d1ede825..8951b9bc 100644 --- a/src/__tests__/specimens/components/ReactSupport2/ReactSupport2.php +++ b/src/__tests__/specimens/components/ReactSupport2/ReactSupport2.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ReactSupport2 extends RenderableComponent { /** @@ -29,9 +30,7 @@ public function render(array $props, array $children) { $anon_18b93da = [1]; $cnt = (float) $anon_18b93da[0]; \VK\Elephize\Builtins\Console::log($cnt); - $theme = \VK\Elephize\Builtins\ReactContext::getValue( - \VK\Elephize\Builtins\ReactContext::createWithDefault("123") - ); + $theme = \VK\Elephize\Builtins\ReactContext::getValue(new \VK\Elephize\Builtins\ReactContext("123")); \VK\Elephize\Builtins\Console::log($theme); $anon_2e8ff8c = [[1, 2, 3, 4]]; $state = (array) $anon_2e8ff8c[0]; diff --git a/src/__tests__/specimens/components/ReexportResolve/Render.php b/src/__tests__/specimens/components/ReexportResolve/Render.php index 3d2a3c9c..b5d2fab6 100644 --- a/src/__tests__/specimens/components/ReexportResolve/Render.php +++ b/src/__tests__/specimens/components/ReexportResolve/Render.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class Render extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/ReexportResolveModule.php b/src/__tests__/specimens/components/ReexportResolveModule.php index 6f42ec5d..1c215db3 100644 --- a/src/__tests__/specimens/components/ReexportResolveModule.php +++ b/src/__tests__/specimens/components/ReexportResolveModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ReexportResolveModule extends CJSModule { /** diff --git a/src/__tests__/specimens/components/TwoComponents/FirstComponent.php b/src/__tests__/specimens/components/TwoComponents/FirstComponent.php index 717ac6ee..376f97bf 100644 --- a/src/__tests__/specimens/components/TwoComponents/FirstComponent.php +++ b/src/__tests__/specimens/components/TwoComponents/FirstComponent.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class FirstComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/TwoComponents/SecondComponent.php b/src/__tests__/specimens/components/TwoComponents/SecondComponent.php index c1a3ff78..cb562334 100644 --- a/src/__tests__/specimens/components/TwoComponents/SecondComponent.php +++ b/src/__tests__/specimens/components/TwoComponents/SecondComponent.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class SecondComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/TwoComponentsModule.php b/src/__tests__/specimens/components/TwoComponentsModule.php index 8f9875ef..cc943d85 100644 --- a/src/__tests__/specimens/components/TwoComponentsModule.php +++ b/src/__tests__/specimens/components/TwoComponentsModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class TwoComponentsModule extends CJSModule { /** diff --git a/src/__tests__/specimens/components/TypedComponent/TypedComponent.php b/src/__tests__/specimens/components/TypedComponent/TypedComponent.php index 58a73c9c..c189c831 100644 --- a/src/__tests__/specimens/components/TypedComponent/TypedComponent.php +++ b/src/__tests__/specimens/components/TypedComponent/TypedComponent.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class TypedComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/elephize_static/KeywordTestComponent/KeywordTestComponent.php b/src/__tests__/specimens/components/elephize_static/KeywordTestComponent/KeywordTestComponent.php index e39ff6fe..8508ce41 100644 --- a/src/__tests__/specimens/components/elephize_static/KeywordTestComponent/KeywordTestComponent.php +++ b/src/__tests__/specimens/components/elephize_static/KeywordTestComponent/KeywordTestComponent.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class KeywordTestComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/components/elephize_static/KeywordTestComponentImportModule.php b/src/__tests__/specimens/components/elephize_static/KeywordTestComponentImportModule.php index 8e725436..2cdd8018 100644 --- a/src/__tests__/specimens/components/elephize_static/KeywordTestComponentImportModule.php +++ b/src/__tests__/specimens/components/elephize_static/KeywordTestComponentImportModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class KeywordTestComponentImportModule extends CJSModule { /** diff --git a/src/__tests__/specimens/components/elephize_static/KeywordTestModuleImportModule.php b/src/__tests__/specimens/components/elephize_static/KeywordTestModuleImportModule.php index 7969e10a..65eeafab 100644 --- a/src/__tests__/specimens/components/elephize_static/KeywordTestModuleImportModule.php +++ b/src/__tests__/specimens/components/elephize_static/KeywordTestModuleImportModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class KeywordTestModuleImportModule extends CJSModule { /** diff --git a/src/__tests__/specimens/components/elephize_static/KeywordTestModuleModule.php b/src/__tests__/specimens/components/elephize_static/KeywordTestModuleModule.php index 888728f2..b555de64 100644 --- a/src/__tests__/specimens/components/elephize_static/KeywordTestModuleModule.php +++ b/src/__tests__/specimens/components/elephize_static/KeywordTestModuleModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class KeywordTestModuleModule extends CJSModule { /** diff --git a/src/__tests__/specimens/fixes/CheckBox/CheckBox.php b/src/__tests__/specimens/fixes/CheckBox/CheckBox.php index 74753bd4..24795151 100644 --- a/src/__tests__/specimens/fixes/CheckBox/CheckBox.php +++ b/src/__tests__/specimens/fixes/CheckBox/CheckBox.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class CheckBox extends RenderableComponent { /** diff --git a/src/__tests__/specimens/fixes/EscapeHtmlChars/EscapeHtmlChars.php b/src/__tests__/specimens/fixes/EscapeHtmlChars/EscapeHtmlChars.php index 6519110c..71dd83f0 100644 --- a/src/__tests__/specimens/fixes/EscapeHtmlChars/EscapeHtmlChars.php +++ b/src/__tests__/specimens/fixes/EscapeHtmlChars/EscapeHtmlChars.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class EscapeHtmlChars extends RenderableComponent { /** diff --git a/src/__tests__/specimens/fixes/EscapeHtmlChars/NestedEscapeHtmlChars.php b/src/__tests__/specimens/fixes/EscapeHtmlChars/NestedEscapeHtmlChars.php index a2daccea..a300c36e 100644 --- a/src/__tests__/specimens/fixes/EscapeHtmlChars/NestedEscapeHtmlChars.php +++ b/src/__tests__/specimens/fixes/EscapeHtmlChars/NestedEscapeHtmlChars.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class NestedEscapeHtmlChars extends RenderableComponent { /** diff --git a/src/__tests__/specimens/fixes/EscapeHtmlCharsModule.php b/src/__tests__/specimens/fixes/EscapeHtmlCharsModule.php index c50b5cff..53193d3a 100644 --- a/src/__tests__/specimens/fixes/EscapeHtmlCharsModule.php +++ b/src/__tests__/specimens/fixes/EscapeHtmlCharsModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class EscapeHtmlCharsModule extends CJSModule { /** diff --git a/src/__tests__/specimens/fixes/ExcessiveEliminationModule.php b/src/__tests__/specimens/fixes/ExcessiveEliminationModule.php index 7adc4c5e..f8c1107c 100644 --- a/src/__tests__/specimens/fixes/ExcessiveEliminationModule.php +++ b/src/__tests__/specimens/fixes/ExcessiveEliminationModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ExcessiveEliminationModule extends CJSModule { /** diff --git a/src/__tests__/specimens/fixes/ExcessiveEscaping/TextContainer.php b/src/__tests__/specimens/fixes/ExcessiveEscaping/TextContainer.php index 3cb8d3bd..4ea69a93 100644 --- a/src/__tests__/specimens/fixes/ExcessiveEscaping/TextContainer.php +++ b/src/__tests__/specimens/fixes/ExcessiveEscaping/TextContainer.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class TextContainer extends RenderableComponent { /** diff --git a/src/__tests__/specimens/functionMethods/ClosuresModule.php b/src/__tests__/specimens/functionMethods/ClosuresModule.php index 4a36df64..2e5679ac 100644 --- a/src/__tests__/specimens/functionMethods/ClosuresModule.php +++ b/src/__tests__/specimens/functionMethods/ClosuresModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ClosuresModule extends CJSModule { /** diff --git a/src/__tests__/specimens/mathMethods/BasicModule.php b/src/__tests__/specimens/mathMethods/BasicModule.php index 88315eb2..ef1395a5 100644 --- a/src/__tests__/specimens/mathMethods/BasicModule.php +++ b/src/__tests__/specimens/mathMethods/BasicModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class BasicModule extends CJSModule { /** diff --git a/src/__tests__/specimens/mathMethods/ConstantsModule.php b/src/__tests__/specimens/mathMethods/ConstantsModule.php index 4437d76d..06fd0aa2 100644 --- a/src/__tests__/specimens/mathMethods/ConstantsModule.php +++ b/src/__tests__/specimens/mathMethods/ConstantsModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ConstantsModule extends CJSModule { /** diff --git a/src/__tests__/specimens/mathMethods/TrigonometryModule.php b/src/__tests__/specimens/mathMethods/TrigonometryModule.php index a800114f..86c73427 100644 --- a/src/__tests__/specimens/mathMethods/TrigonometryModule.php +++ b/src/__tests__/specimens/mathMethods/TrigonometryModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class TrigonometryModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/AllowedOnClickModule.php b/src/__tests__/specimens/misc/AllowedOnClickModule.php index b95754cf..370b6e7d 100644 --- a/src/__tests__/specimens/misc/AllowedOnClickModule.php +++ b/src/__tests__/specimens/misc/AllowedOnClickModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class AllowedOnClickModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/AstHooksModule.php b/src/__tests__/specimens/misc/AstHooksModule.php index a733933d..d19dd51e 100644 --- a/src/__tests__/specimens/misc/AstHooksModule.php +++ b/src/__tests__/specimens/misc/AstHooksModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class AstHooksModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/ComplexObjectFuncsModule.php b/src/__tests__/specimens/misc/ComplexObjectFuncsModule.php index 817dc64f..433a92df 100644 --- a/src/__tests__/specimens/misc/ComplexObjectFuncsModule.php +++ b/src/__tests__/specimens/misc/ComplexObjectFuncsModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ComplexObjectFuncsModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/ComplexTypeInferenceModule.php b/src/__tests__/specimens/misc/ComplexTypeInferenceModule.php index 7b947818..c6e13606 100644 --- a/src/__tests__/specimens/misc/ComplexTypeInferenceModule.php +++ b/src/__tests__/specimens/misc/ComplexTypeInferenceModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ComplexTypeInferenceModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/ConstructorTypeCastModule.php b/src/__tests__/specimens/misc/ConstructorTypeCastModule.php index 2d7c0a48..57cc23ac 100644 --- a/src/__tests__/specimens/misc/ConstructorTypeCastModule.php +++ b/src/__tests__/specimens/misc/ConstructorTypeCastModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ConstructorTypeCastModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/CustomIsomorphicsModule.php b/src/__tests__/specimens/misc/CustomIsomorphicsModule.php index cb3b36d8..e66846aa 100644 --- a/src/__tests__/specimens/misc/CustomIsomorphicsModule.php +++ b/src/__tests__/specimens/misc/CustomIsomorphicsModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class CustomIsomorphicsModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/DefaultOperatorModule.php b/src/__tests__/specimens/misc/DefaultOperatorModule.php index cd1e0a17..34ff8e1d 100644 --- a/src/__tests__/specimens/misc/DefaultOperatorModule.php +++ b/src/__tests__/specimens/misc/DefaultOperatorModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class DefaultOperatorModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/DefaultValuesModule.php b/src/__tests__/specimens/misc/DefaultValuesModule.php index 7597328e..2105b3ac 100644 --- a/src/__tests__/specimens/misc/DefaultValuesModule.php +++ b/src/__tests__/specimens/misc/DefaultValuesModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class DefaultValuesModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/ElephizeIgnoreModule.php b/src/__tests__/specimens/misc/ElephizeIgnoreModule.php index 836db936..243002c6 100644 --- a/src/__tests__/specimens/misc/ElephizeIgnoreModule.php +++ b/src/__tests__/specimens/misc/ElephizeIgnoreModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ElephizeIgnoreModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/ExportedTypesModule.php b/src/__tests__/specimens/misc/ExportedTypesModule.php index edab5b6a..255d0ee9 100644 --- a/src/__tests__/specimens/misc/ExportedTypesModule.php +++ b/src/__tests__/specimens/misc/ExportedTypesModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ExportedTypesModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/ToReplaceCjsWrapper.php b/src/__tests__/specimens/misc/ToReplaceCjsWrapper.php index e4bac24b..9703c49b 100644 --- a/src/__tests__/specimens/misc/ToReplaceCjsWrapper.php +++ b/src/__tests__/specimens/misc/ToReplaceCjsWrapper.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ToReplaceCjsWrapper extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/TypeInferenceModule.php b/src/__tests__/specimens/misc/TypeInferenceModule.php index 3d7748d2..412bc8bb 100644 --- a/src/__tests__/specimens/misc/TypeInferenceModule.php +++ b/src/__tests__/specimens/misc/TypeInferenceModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class TypeInferenceModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/TypecastModule.php b/src/__tests__/specimens/misc/TypecastModule.php index fc9ee391..9914cc54 100644 --- a/src/__tests__/specimens/misc/TypecastModule.php +++ b/src/__tests__/specimens/misc/TypecastModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class TypecastModule extends CJSModule { /** @@ -47,7 +48,7 @@ private function __construct() { \VK\Elephize\Builtins\Console::log( (array) $this->tca, (bool) $this->tcb, - (boolean) $this->tcb, + (bool) $this->tcb, (int) $this->tcc, (string) $this->tcd, (float) $this->tce diff --git a/src/__tests__/specimens/misc/UnusedVarsEliminationModule.php b/src/__tests__/specimens/misc/UnusedVarsEliminationModule.php index 3462db0e..50cfaef0 100644 --- a/src/__tests__/specimens/misc/UnusedVarsEliminationModule.php +++ b/src/__tests__/specimens/misc/UnusedVarsEliminationModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class UnusedVarsEliminationModule extends CJSModule { /** diff --git a/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClick.php b/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClick.php index 696eb48e..dac9c34e 100644 --- a/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClick.php +++ b/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClick.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class AllowedGlobalClick extends RenderableComponent { /** diff --git a/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar.php b/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar.php index 0221b48d..079679c8 100644 --- a/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar.php +++ b/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class AllowedGlobalClickVar extends RenderableComponent { /** diff --git a/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar2.php b/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar2.php index b961c243..e5565e8a 100644 --- a/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar2.php +++ b/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar2.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class AllowedGlobalClickVar2 extends RenderableComponent { /** diff --git a/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar3.php b/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar3.php index 8cbf6e5c..2f34772f 100644 --- a/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar3.php +++ b/src/__tests__/specimens/misc/allowedOnClick/AllowedGlobalClickVar3.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class AllowedGlobalClickVar3 extends RenderableComponent { /** diff --git a/src/__tests__/specimens/misc/customIsomorphics/IsoComponent.php b/src/__tests__/specimens/misc/customIsomorphics/IsoComponent.php index 92aa7de1..7b4e5793 100644 --- a/src/__tests__/specimens/misc/customIsomorphics/IsoComponent.php +++ b/src/__tests__/specimens/misc/customIsomorphics/IsoComponent.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class IsoComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/misc/elephizeIgnore/ComponentIgnore.php b/src/__tests__/specimens/misc/elephizeIgnore/ComponentIgnore.php index 9df30c42..5af10a4e 100644 --- a/src/__tests__/specimens/misc/elephizeIgnore/ComponentIgnore.php +++ b/src/__tests__/specimens/misc/elephizeIgnore/ComponentIgnore.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ComponentIgnore extends RenderableComponent { /** diff --git a/src/__tests__/specimens/misc/importedTypes/ImportedTypesComponent.php b/src/__tests__/specimens/misc/importedTypes/ImportedTypesComponent.php index 79121ea2..6b22cf17 100644 --- a/src/__tests__/specimens/misc/importedTypes/ImportedTypesComponent.php +++ b/src/__tests__/specimens/misc/importedTypes/ImportedTypesComponent.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ImportedTypesComponent extends RenderableComponent { /** diff --git a/src/__tests__/specimens/misc/toReplaceIndex/ToReplaceIndexCjsWrapper.php b/src/__tests__/specimens/misc/toReplaceIndex/ToReplaceIndexCjsWrapper.php index c57e5da9..39ba52a2 100644 --- a/src/__tests__/specimens/misc/toReplaceIndex/ToReplaceIndexCjsWrapper.php +++ b/src/__tests__/specimens/misc/toReplaceIndex/ToReplaceIndexCjsWrapper.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ToReplaceSecondCjsWrapper extends CJSModule { /** diff --git a/src/__tests__/specimens/objectMethods/HasOwnPropertyModule.php b/src/__tests__/specimens/objectMethods/HasOwnPropertyModule.php index c9bbc95a..d794e40e 100644 --- a/src/__tests__/specimens/objectMethods/HasOwnPropertyModule.php +++ b/src/__tests__/specimens/objectMethods/HasOwnPropertyModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class HasOwnPropertyModule extends CJSModule { /** diff --git a/src/__tests__/specimens/objectMethods/KeysModule.php b/src/__tests__/specimens/objectMethods/KeysModule.php index 1b371fd0..e746050e 100644 --- a/src/__tests__/specimens/objectMethods/KeysModule.php +++ b/src/__tests__/specimens/objectMethods/KeysModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class KeysModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/JoinModule.php b/src/__tests__/specimens/stringMethods/JoinModule.php index 4b883408..cbada88a 100644 --- a/src/__tests__/specimens/stringMethods/JoinModule.php +++ b/src/__tests__/specimens/stringMethods/JoinModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class JoinModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/MatchModule.php b/src/__tests__/specimens/stringMethods/MatchModule.php index ea80c34e..d6437283 100644 --- a/src/__tests__/specimens/stringMethods/MatchModule.php +++ b/src/__tests__/specimens/stringMethods/MatchModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class MatchModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/ParseModule.php b/src/__tests__/specimens/stringMethods/ParseModule.php index 4618ee71..7d19d057 100644 --- a/src/__tests__/specimens/stringMethods/ParseModule.php +++ b/src/__tests__/specimens/stringMethods/ParseModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ParseModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/ReplaceModule.php b/src/__tests__/specimens/stringMethods/ReplaceModule.php index 63f368e8..fc5dc6be 100644 --- a/src/__tests__/specimens/stringMethods/ReplaceModule.php +++ b/src/__tests__/specimens/stringMethods/ReplaceModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ReplaceModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/SplitModule.php b/src/__tests__/specimens/stringMethods/SplitModule.php index b1d41dc8..3d8bae1f 100644 --- a/src/__tests__/specimens/stringMethods/SplitModule.php +++ b/src/__tests__/specimens/stringMethods/SplitModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class SplitModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/StartsWithModule.php b/src/__tests__/specimens/stringMethods/StartsWithModule.php index 33758861..37c642fa 100644 --- a/src/__tests__/specimens/stringMethods/StartsWithModule.php +++ b/src/__tests__/specimens/stringMethods/StartsWithModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class StartsWithModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/StrIncludesModule.php b/src/__tests__/specimens/stringMethods/StrIncludesModule.php index 903d8465..e2225635 100644 --- a/src/__tests__/specimens/stringMethods/StrIncludesModule.php +++ b/src/__tests__/specimens/stringMethods/StrIncludesModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class StrIncludesModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/StrIndexOfModule.php b/src/__tests__/specimens/stringMethods/StrIndexOfModule.php index 898dee7f..db48ab1d 100644 --- a/src/__tests__/specimens/stringMethods/StrIndexOfModule.php +++ b/src/__tests__/specimens/stringMethods/StrIndexOfModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class StrIndexOfModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/StrSliceModule.php b/src/__tests__/specimens/stringMethods/StrSliceModule.php index ee65502c..d556d2a3 100644 --- a/src/__tests__/specimens/stringMethods/StrSliceModule.php +++ b/src/__tests__/specimens/stringMethods/StrSliceModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class StrSliceModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/SubstrModule.php b/src/__tests__/specimens/stringMethods/SubstrModule.php index 5ecb9451..55c6b4bc 100644 --- a/src/__tests__/specimens/stringMethods/SubstrModule.php +++ b/src/__tests__/specimens/stringMethods/SubstrModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class SubstrModule extends CJSModule { /** diff --git a/src/__tests__/specimens/stringMethods/TrimModule.php b/src/__tests__/specimens/stringMethods/TrimModule.php index 64b45bc2..15322c5e 100644 --- a/src/__tests__/specimens/stringMethods/TrimModule.php +++ b/src/__tests__/specimens/stringMethods/TrimModule.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class TrimModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/BrokenTsSyntaxModule.1.php b/src/__tests__/watchSpecimens/BrokenTsSyntaxModule.1.php index 3a1d4f4a..b5ce7e9d 100644 --- a/src/__tests__/watchSpecimens/BrokenTsSyntaxModule.1.php +++ b/src/__tests__/watchSpecimens/BrokenTsSyntaxModule.1.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class BrokenTsSyntaxModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/BrokenTsSyntaxModule.2.php b/src/__tests__/watchSpecimens/BrokenTsSyntaxModule.2.php index 0c804e1b..cb1fd4b9 100644 --- a/src/__tests__/watchSpecimens/BrokenTsSyntaxModule.2.php +++ b/src/__tests__/watchSpecimens/BrokenTsSyntaxModule.2.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class BrokenTsSyntaxModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/BrokenTsTypingModule.1.php b/src/__tests__/watchSpecimens/BrokenTsTypingModule.1.php index 5188f94c..ace91b2d 100644 --- a/src/__tests__/watchSpecimens/BrokenTsTypingModule.1.php +++ b/src/__tests__/watchSpecimens/BrokenTsTypingModule.1.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class BrokenTsTypingModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/BrokenTsTypingModule.2.php b/src/__tests__/watchSpecimens/BrokenTsTypingModule.2.php index 97b530e2..cf23a8cd 100644 --- a/src/__tests__/watchSpecimens/BrokenTsTypingModule.2.php +++ b/src/__tests__/watchSpecimens/BrokenTsTypingModule.2.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class BrokenTsTypingModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/ElephizeAnnotationTarget.1.php b/src/__tests__/watchSpecimens/ElephizeAnnotationTarget.1.php index 73bcf92b..a0325b36 100644 --- a/src/__tests__/watchSpecimens/ElephizeAnnotationTarget.1.php +++ b/src/__tests__/watchSpecimens/ElephizeAnnotationTarget.1.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\RenderableComponent; use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ElephizeAnnotationTarget extends RenderableComponent { /** diff --git a/src/__tests__/watchSpecimens/ElephizeAnnotationTargetModule.2.php b/src/__tests__/watchSpecimens/ElephizeAnnotationTargetModule.2.php index 8d0db376..73213e1b 100644 --- a/src/__tests__/watchSpecimens/ElephizeAnnotationTargetModule.2.php +++ b/src/__tests__/watchSpecimens/ElephizeAnnotationTargetModule.2.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ElephizeAnnotationTargetModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/ImportNewFileModule.1.php b/src/__tests__/watchSpecimens/ImportNewFileModule.1.php index 66dabe94..eec12d3e 100644 --- a/src/__tests__/watchSpecimens/ImportNewFileModule.1.php +++ b/src/__tests__/watchSpecimens/ImportNewFileModule.1.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ImportNewFileModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/ImportNewFileToImportModule.1.php b/src/__tests__/watchSpecimens/ImportNewFileToImportModule.1.php index 32b8c955..f20a63ee 100644 --- a/src/__tests__/watchSpecimens/ImportNewFileToImportModule.1.php +++ b/src/__tests__/watchSpecimens/ImportNewFileToImportModule.1.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ImportNewFileToImportModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/ModifyFileModule.1.php b/src/__tests__/watchSpecimens/ModifyFileModule.1.php index e45394f7..8d3475cb 100644 --- a/src/__tests__/watchSpecimens/ModifyFileModule.1.php +++ b/src/__tests__/watchSpecimens/ModifyFileModule.1.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ModifyFileModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/ModifyFileModule.2.php b/src/__tests__/watchSpecimens/ModifyFileModule.2.php index 3131554c..e4fd5048 100644 --- a/src/__tests__/watchSpecimens/ModifyFileModule.2.php +++ b/src/__tests__/watchSpecimens/ModifyFileModule.2.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ModifyFileModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/ModifyFileTypehintsModule.1.php b/src/__tests__/watchSpecimens/ModifyFileTypehintsModule.1.php index b47c1766..805670d2 100644 --- a/src/__tests__/watchSpecimens/ModifyFileTypehintsModule.1.php +++ b/src/__tests__/watchSpecimens/ModifyFileTypehintsModule.1.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ModifyFileTypehintsModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/ModifyFileTypehintsModule.2.php b/src/__tests__/watchSpecimens/ModifyFileTypehintsModule.2.php index b25b902d..0822eaf9 100644 --- a/src/__tests__/watchSpecimens/ModifyFileTypehintsModule.2.php +++ b/src/__tests__/watchSpecimens/ModifyFileTypehintsModule.2.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class ModifyFileTypehintsModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/RemoveImportModule.1.php b/src/__tests__/watchSpecimens/RemoveImportModule.1.php index 34feaf14..dc5ce664 100644 --- a/src/__tests__/watchSpecimens/RemoveImportModule.1.php +++ b/src/__tests__/watchSpecimens/RemoveImportModule.1.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class RemoveImportModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/UndefVariableUsageModule.1.php b/src/__tests__/watchSpecimens/UndefVariableUsageModule.1.php index 546e1047..6471c573 100644 --- a/src/__tests__/watchSpecimens/UndefVariableUsageModule.1.php +++ b/src/__tests__/watchSpecimens/UndefVariableUsageModule.1.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class UndefVariableUsageModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/UndefVariableUsageModule.2.php b/src/__tests__/watchSpecimens/UndefVariableUsageModule.2.php index ae83c844..bbb56b64 100644 --- a/src/__tests__/watchSpecimens/UndefVariableUsageModule.2.php +++ b/src/__tests__/watchSpecimens/UndefVariableUsageModule.2.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class UndefVariableUsageModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/UnusedVariableModule.1.php b/src/__tests__/watchSpecimens/UnusedVariableModule.1.php index 10328beb..c24f15c2 100644 --- a/src/__tests__/watchSpecimens/UnusedVariableModule.1.php +++ b/src/__tests__/watchSpecimens/UnusedVariableModule.1.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class UnusedVariableModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/VariableUsageModule.1.php b/src/__tests__/watchSpecimens/VariableUsageModule.1.php index 7c41ad64..e8f53f0f 100644 --- a/src/__tests__/watchSpecimens/VariableUsageModule.1.php +++ b/src/__tests__/watchSpecimens/VariableUsageModule.1.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class VariableUsageModule extends CJSModule { /** diff --git a/src/__tests__/watchSpecimens/VariableUsageModule.2.php b/src/__tests__/watchSpecimens/VariableUsageModule.2.php index 8e3e0d31..9ef4adac 100644 --- a/src/__tests__/watchSpecimens/VariableUsageModule.2.php +++ b/src/__tests__/watchSpecimens/VariableUsageModule.2.php @@ -4,6 +4,7 @@ use VK\Elephize\Builtins\Stdlib; use VK\Elephize\Builtins\CJSModule; use VK\Elephize\Builtins\ReactContext; +use VK\Elephize\Builtins\ReactContextSynthetic; class VariableUsageModule extends CJSModule { /** diff --git a/src/builtins/AbstractComponent.php b/src/builtins/AbstractComponent.php new file mode 100644 index 00000000..68b0b9c0 --- /dev/null +++ b/src/builtins/AbstractComponent.php @@ -0,0 +1,34 @@ +flatten($rendered_components)); + } + + /** + * @param array $array + * @return string[] + */ + protected function flatten($array) { + /** @var string[] $flat */ + $flat = []; + + foreach ($array as $item) { + if (is_array($item)) { + $flat = array_merge($flat, $this->flatten($item)); + } else if ($item !== null) { + $flat[] = (string)$item; + } + } + + return $flat; + } +} diff --git a/src/builtins/ReactContext.php b/src/builtins/ReactContext.php index 2c56217f..75a384f0 100644 --- a/src/builtins/ReactContext.php +++ b/src/builtins/ReactContext.php @@ -21,37 +21,27 @@ public function __construct($initialValue) { } /** - * @param mixed $initialValue - * @return ReactContext - */ - public static function createWithDefault($initialValue) { - return new self($initialValue); - } - - /** - * @param ReactContext $ctx * @param ?mixed $providerValue * @return null */ - public static function pushContext(ReactContext &$ctx, $providerValue = null) { - $ctx->_valuesStack []= $providerValue; + public function pushContext($providerValue = null) { + $this->_valuesStack []= $providerValue; if ($providerValue !== null) { - $ctx->_lastNotNullValue = $providerValue; + $this->_lastNotNullValue = $providerValue; } return null; } /** - * @param ReactContext $ctx * @return null */ - public static function popContext(ReactContext &$ctx) { - $val = array_pop($ctx->_valuesStack); + public function popContext() { + $val = array_pop($this->_valuesStack); if ($val !== null) { - $ctx->_lastNotNullValue = null; - for ($i = count($ctx->_valuesStack) - 1; $i >= 0; $i--) { - if ($ctx->_valuesStack[$i] !== null) { - $ctx->_lastNotNullValue = $ctx->_valuesStack[$i]; + $this->_lastNotNullValue = null; + for ($i = count($this->_valuesStack) - 1; $i >= 0; $i--) { + if ($this->_valuesStack[$i] !== null) { + $this->_lastNotNullValue = $this->_valuesStack[$i]; return null; } } @@ -59,14 +49,6 @@ public static function popContext(ReactContext &$ctx) { return null; } - /** - * @param mixed[] $children - * @return string - */ - public static function render($children) { - return implode('', array_filter($children)); - } - /** * @param ReactContext $ctx * @return mixed diff --git a/src/builtins/ReactContextSynthetic.php b/src/builtins/ReactContextSynthetic.php new file mode 100644 index 00000000..c1a40d1f --- /dev/null +++ b/src/builtins/ReactContextSynthetic.php @@ -0,0 +1,63 @@ +pushContext($providerValue); + return $this; + } + + /** + * @param array $children + * @return self + */ + public function render(array $children) + { + $this->_renderedString = $this->frg($children); + return $this; + } + + /** + * @param ReactContext $ctx + * @return ?string + */ + public function popContext(ReactContext $ctx) + { + $ctx->popContext(); + return $this->_renderedString; + } +} + diff --git a/src/builtins/RenderableComponent.php b/src/builtins/RenderableComponent.php index 84311b4b..551518f0 100644 --- a/src/builtins/RenderableComponent.php +++ b/src/builtins/RenderableComponent.php @@ -2,40 +2,11 @@ namespace __ROOTNS__\Builtins; -abstract class RenderableComponent extends CJSModule { +abstract class RenderableComponent extends AbstractComponent { /** * @param array $props * @param array $children * @return ?string */ abstract public function render(array $props, array $children); - - /** - * React.Fragment support - * - * @param array $rendered_components - * @return string - */ - protected function frg(array $rendered_components) { - return implode("\n", $this->flatten($rendered_components)); - } - - /** - * @param array $array - * @return string[] - */ - protected function flatten($array) { - /** @var string[] $flat */ - $flat = []; - - foreach ($array as $item) { - if (is_array($item)) { - $flat = array_merge($flat, $this->flatten($item)); - } else if ($item !== null) { - $flat[] = (string)$item; - } - } - - return $flat; - } } diff --git a/src/ts2php/components/cjsModules/commonjsExternalModule.ts b/src/ts2php/components/cjsModules/commonjsExternalModule.ts index 96aa194b..60c807e0 100644 --- a/src/ts2php/components/cjsModules/commonjsExternalModule.ts +++ b/src/ts2php/components/cjsModules/commonjsExternalModule.ts @@ -59,6 +59,7 @@ namespace ${fullyQualifiedNamespace}; use ${this._namespaces.builtins}\\Stdlib; use ${this._namespaces.builtins}\\CJSModule; use ${this._namespaces.builtins}\\ReactContext; +use ${this._namespaces.builtins}\\ReactContextSynthetic; class ${this.className} extends CJSModule { /** diff --git a/src/ts2php/components/cjsModules/commonjsModule.ts b/src/ts2php/components/cjsModules/commonjsModule.ts index f99d61e8..aca1f9a5 100644 --- a/src/ts2php/components/cjsModules/commonjsModule.ts +++ b/src/ts2php/components/cjsModules/commonjsModule.ts @@ -164,6 +164,7 @@ namespace ${fullyQualifiedNamespace}; use ${this._namespaces.builtins}\\Stdlib; use ${this._namespaces.builtins}\\CJSModule; use ${this._namespaces.builtins}\\ReactContext; +use ${this._namespaces.builtins}\\ReactContextSynthetic; class ${this.className} extends CJSModule { /** diff --git a/src/ts2php/components/cjsModules/reactModule.ts b/src/ts2php/components/cjsModules/reactModule.ts index c76e07a0..f3878004 100644 --- a/src/ts2php/components/cjsModules/reactModule.ts +++ b/src/ts2php/components/cjsModules/reactModule.ts @@ -56,6 +56,7 @@ namespace ${fullyQualifiedNamespace}; use ${this._namespaces.builtins}\\RenderableComponent; use ${this._namespaces.builtins}\\Stdlib; use ${this._namespaces.builtins}\\ReactContext; +use ${this._namespaces.builtins}\\ReactContextSynthetic; class ${this.className} extends RenderableComponent { /** diff --git a/src/ts2php/components/react/reactHooks.ts b/src/ts2php/components/react/reactHooks.ts index 34eb42bb..781f716d 100644 --- a/src/ts2php/components/react/reactHooks.ts +++ b/src/ts2php/components/react/reactHooks.ts @@ -67,7 +67,7 @@ const hookRenderers: HookRenderers = { // React contexts processing 'createContext': (node, context) => { const contextValue = renderNode(node.arguments[0], context); - return `\\${context.namespaces.builtins}\\ReactContext::createWithDefault(${contextValue})`; + return `new \\${context.namespaces.builtins}\\ReactContext(${contextValue})`; }, 'useContext': (node, context) => { const contextNode = renderNode(node.arguments[0], context); diff --git a/src/ts2php/renderers/jsxElement.ts b/src/ts2php/renderers/jsxElement.ts index cc67fa43..837d5841 100644 --- a/src/ts2php/renderers/jsxElement.ts +++ b/src/ts2php/renderers/jsxElement.ts @@ -37,9 +37,10 @@ export function tJsxElement(node: ts.JsxElement, context: Context) ); const contextNode = renderNode(node.openingElement.tagName.expression, context); const ctxChildren = renderNodes(Array.from(node.children), context, true).join(', '); - const pushContext = `\\${context.namespaces.builtins}\\ReactContext::pushContext(${contextNode}, ${contextValue})`; - const popContext = `\\${context.namespaces.builtins}\\ReactContext::popContext(${contextNode})`; - return `\\${context.namespaces.builtins}\\ReactContext::render([${pushContext}, ${ctxChildren}, ${popContext}])`; + return `\\${context.namespaces.builtins}\\ReactContextSynthetic::spawn() + ->pushContext(${contextNode}, ${contextValue}) + ->render([${ctxChildren}]) + ->popContext(${contextNode})`; } }