@semcore/core 1.11.13 → 1.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,12 @@
2
2
 
3
3
  CHANGELOG.md standards are inspired by [keepachangelog.com](https://keepachangelog.com/en/1.0.0/).
4
4
 
5
+ ## [1.12.0] - 2022-10-04
6
+
7
+ ### Changed
8
+
9
+ - Changed approach to children index calculation with React parallel rendering.
10
+
5
11
  ## [1.11.13] - 2022-10-04
6
12
 
7
13
  ### Changed
@@ -5,7 +5,9 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
5
5
  Object.defineProperty(exports, "__esModule", {
6
6
  value: true
7
7
  });
8
- exports["default"] = exports.STATIC_COMPONENT = void 0;
8
+ exports["default"] = exports.STATIC_COMPONENT = exports.ROOT_COMPONENT = void 0;
9
+ exports.getterMethodName = getterMethodName;
10
+ exports.getterMethodNameByDisplayName = getterMethodNameByDisplayName;
9
11
 
10
12
  var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
11
13
 
@@ -36,7 +38,8 @@ function getterMethodName(name) {
36
38
  return "get".concat(name, "Props");
37
39
  }
38
40
 
39
- function getterMethodNameByDisplayName(displayName) {
41
+ function getterMethodNameByDisplayName() {
42
+ var displayName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
40
43
  var displayNames = displayName.split('.');
41
44
  var name = displayNames.slice(-(displayNames.length - 1)).join('');
42
45
  return getterMethodName(name);
@@ -60,6 +63,8 @@ function flatGetterMethodNames(childComponents, parentName) {
60
63
 
61
64
  var STATIC_COMPONENT = Symbol('STATIC_COMPONENT');
62
65
  exports.STATIC_COMPONENT = STATIC_COMPONENT;
66
+ var ROOT_COMPONENT = Symbol('ROOT_COMPONENT');
67
+ exports.ROOT_COMPONENT = ROOT_COMPONENT;
63
68
  var SELF_GETTER_METHOD = Symbol('SELF_GETTER_METHOD');
64
69
 
65
70
  function Enhancement(childComponents, createComponent, options) {
@@ -86,15 +91,15 @@ function Enhancement(childComponents, createComponent, options) {
86
91
  acc[name] = function () {
87
92
  var childrenProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
88
93
  var getterProps = getterMethod.call(_this, childrenProps, acc[name].index);
89
- acc[name].index++;
90
94
  return (0, _assignProps["default"])(childrenProps, getterProps);
91
95
  };
92
96
 
93
- acc[name].index = 0;
97
+ acc[name].index = -1;
98
+ acc[name].cache = new Set();
94
99
  return acc;
95
100
  }, {}));
96
101
  },
97
- "static": function _static(WrapperComponent) {
102
+ "static": function _static(WrapperComponent, Component) {
98
103
  if (Object.keys(childComponents).length && !WrapperComponent.displayName) {
99
104
  throw new Error('"displayName" is not defined');
100
105
  }
@@ -117,6 +122,7 @@ function Enhancement(childComponents, createComponent, options) {
117
122
 
118
123
  value.displayName = WrapperComponent.displayName + '.' + name;
119
124
  value[STATIC_COMPONENT] = true;
125
+ value[ROOT_COMPONENT] = Component[ROOT_COMPONENT] || Component;
120
126
  acc[name] = createComponent(value, childComponents, options); // @ts-ignore
121
127
 
122
128
  value.displayName = prevDisplayName;
@@ -136,6 +142,11 @@ function Enhancement(childComponents, createComponent, options) {
136
142
  var getterMethod = context[getterMethodNameByDisplayName(WrapperComponent.displayName)];
137
143
 
138
144
  if (getterMethod) {
145
+ if (!getterMethod.cache.has(this)) {
146
+ getterMethod.cache.add(this);
147
+ getterMethod.index++;
148
+ }
149
+
139
150
  return getterMethod(props);
140
151
  }
141
152
 
@@ -146,7 +157,9 @@ function Enhancement(childComponents, createComponent, options) {
146
157
 
147
158
  getterMethodNames.forEach(function (name) {
148
159
  if (_this2[name] === undefined) return;
149
- _this2[name].index = 0;
160
+ _this2[name].index = -1;
161
+
162
+ _this2[name].cache.clear();
150
163
  });
151
164
  return _render;
152
165
  }
@@ -1 +1 @@
1
- {"version":3,"file":"staticChildren.js","names":["assign","target","source","Object","defineProperties","keys","reduce","descriptors","key","getOwnPropertyDescriptor","getterMethodName","name","getterMethodNameByDisplayName","displayName","displayNames","split","slice","length","join","flatGetterMethodNames","childComponents","parentName","entries","acc","value","Array","isArray","push","STATIC_COMPONENT","Symbol","SELF_GETTER_METHOD","Enhancement","createComponent","options","getterMethodNames","condition","Component","Boolean","init","props","WrapperComponent","getterMethods","pick","selfGetterMethod","logger","warn","getterMethod","childrenProps","getterProps","call","index","assignProps","Error","prevStaticComponent","prevDisplayName","context","wrapperProps","useContext","render","forEach","undefined"],"sources":["../../../src/enhancement/staticChildren.tsx"],"sourcesContent":["import { useContext } from 'react';\n// @ts-ignore\nimport assignProps from '@semcore/utils/lib/assignProps';\n// @ts-ignore\nimport pick from '@semcore/utils/lib/pick';\n// @ts-ignore\nimport logger from '@semcore/utils/lib/logger';\n\nfunction assign(target, source) {\n return Object.defineProperties(\n target,\n Object.keys(source).reduce((descriptors, key) => {\n descriptors[key] = Object.getOwnPropertyDescriptor(source, key);\n return descriptors;\n }, {}),\n );\n}\n\nfunction getterMethodName(name) {\n return `get${name}Props`;\n}\n\nfunction getterMethodNameByDisplayName(displayName) {\n const displayNames = displayName.split('.');\n const name = displayNames.slice(-(displayNames.length - 1)).join('');\n return getterMethodName(name);\n}\n\nfunction flatGetterMethodNames(childComponents, parentName?: string) {\n return Object.entries(childComponents).reduce<string[]>((acc, [name, value]) => {\n if (Array.isArray(value)) {\n acc = [...acc, ...flatGetterMethodNames(value[1], name)];\n }\n name = parentName ? `${parentName}${name}` : name;\n acc.push(getterMethodName(name));\n return acc;\n }, []);\n}\n\nexport const STATIC_COMPONENT = Symbol('STATIC_COMPONENT');\nconst SELF_GETTER_METHOD = Symbol('SELF_GETTER_METHOD');\n\nfunction Enhancement(childComponents, createComponent, options) {\n const getterMethodNames = flatGetterMethodNames(childComponents);\n return {\n condition: function (Component) {\n return Boolean(Component[STATIC_COMPONENT] || Object.keys(childComponents).length);\n },\n init: function (props, WrapperComponent) {\n const getterMethods = pick(this, getterMethodNames);\n this[SELF_GETTER_METHOD] = () => {\n const selfGetterMethod = getterMethodNameByDisplayName(WrapperComponent.displayName);\n logger.warn(\n true,\n `Getter \\`${selfGetterMethod}\\` can't be fired as it is a getter of static component`,\n props['data-ui-name'] || WrapperComponent.displayName,\n );\n };\n assign(\n this,\n getterMethodNames.reduce((acc, name) => {\n const getterMethod = getterMethods[name];\n if (!getterMethod) return acc;\n acc[name] = (childrenProps = {}) => {\n const getterProps = getterMethod.call(this, childrenProps, acc[name].index);\n acc[name].index++;\n return assignProps(childrenProps, getterProps);\n };\n acc[name].index = 0;\n return acc;\n }, {}),\n );\n },\n static: function (WrapperComponent) {\n if (Object.keys(childComponents).length && !WrapperComponent.displayName) {\n throw new Error('\"displayName\" is not defined');\n }\n return Object.entries(childComponents).reduce((acc, [name, value]) => {\n let childComponents = {};\n\n if (Array.isArray(value)) {\n childComponents = value[1];\n value = value[0];\n }\n\n const prevStaticComponent = value[STATIC_COMPONENT];\n // @ts-ignore\n const prevDisplayName = value.displayName;\n // @ts-ignore\n value.displayName = WrapperComponent.displayName + '.' + name;\n value[STATIC_COMPONENT] = true;\n acc[name] = createComponent(value, childComponents, options);\n // @ts-ignore\n value.displayName = prevDisplayName;\n value[STATIC_COMPONENT] = prevStaticComponent;\n return acc;\n }, {});\n },\n context: function (context /*, WrapperComponent*/) {\n // const getterMethod = getterMethodNameByDisplayName(WrapperComponent.displayName);\n\n return {\n ...context,\n // [getterMethod]: this[SELF_GETTER_METHOD],\n ...pick(this, getterMethodNames),\n };\n },\n wrapperProps: function (props, WrapperComponent) {\n if (!WrapperComponent[STATIC_COMPONENT]) return props;\n\n const context = useContext(options.context);\n const getterMethod = context[getterMethodNameByDisplayName(WrapperComponent.displayName)];\n if (getterMethod) {\n return getterMethod(props);\n }\n return props;\n },\n render: function (render) {\n getterMethodNames.forEach((name) => {\n if (this[name] === undefined) return;\n this[name].index = 0;\n });\n return render;\n },\n };\n}\n\nexport default Enhancement;\n"],"mappings":"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"}
1
+ {"version":3,"file":"staticChildren.js","names":["assign","target","source","Object","defineProperties","keys","reduce","descriptors","key","getOwnPropertyDescriptor","getterMethodName","name","getterMethodNameByDisplayName","displayName","displayNames","split","slice","length","join","flatGetterMethodNames","childComponents","parentName","entries","acc","value","Array","isArray","push","STATIC_COMPONENT","Symbol","ROOT_COMPONENT","SELF_GETTER_METHOD","Enhancement","createComponent","options","getterMethodNames","condition","Component","Boolean","init","props","WrapperComponent","getterMethods","pick","selfGetterMethod","logger","warn","getterMethod","childrenProps","getterProps","call","index","assignProps","cache","Set","Error","prevStaticComponent","prevDisplayName","context","wrapperProps","useContext","has","add","render","forEach","undefined","clear"],"sources":["../../../src/enhancement/staticChildren.tsx"],"sourcesContent":["import { useContext } from 'react';\n// @ts-ignore\nimport assignProps from '@semcore/utils/lib/assignProps';\n// @ts-ignore\nimport pick from '@semcore/utils/lib/pick';\n// @ts-ignore\nimport logger from '@semcore/utils/lib/logger';\n\nfunction assign(target, source) {\n return Object.defineProperties(\n target,\n Object.keys(source).reduce((descriptors, key) => {\n descriptors[key] = Object.getOwnPropertyDescriptor(source, key);\n return descriptors;\n }, {}),\n );\n}\n\nexport function getterMethodName(name) {\n return `get${name}Props`;\n}\n\nexport function getterMethodNameByDisplayName(displayName = '') {\n const displayNames = displayName.split('.');\n const name = displayNames.slice(-(displayNames.length - 1)).join('');\n return getterMethodName(name);\n}\n\nfunction flatGetterMethodNames(childComponents, parentName?: string) {\n return Object.entries(childComponents).reduce<string[]>((acc, [name, value]) => {\n if (Array.isArray(value)) {\n acc = [...acc, ...flatGetterMethodNames(value[1], name)];\n }\n name = parentName ? `${parentName}${name}` : name;\n acc.push(getterMethodName(name));\n return acc;\n }, []);\n}\n\nexport const STATIC_COMPONENT = Symbol('STATIC_COMPONENT');\nexport const ROOT_COMPONENT = Symbol('ROOT_COMPONENT');\nconst SELF_GETTER_METHOD = Symbol('SELF_GETTER_METHOD');\n\nfunction Enhancement(childComponents, createComponent, options) {\n const getterMethodNames = flatGetterMethodNames(childComponents);\n return {\n condition: function (Component) {\n return Boolean(Component[STATIC_COMPONENT] || Object.keys(childComponents).length);\n },\n init: function (props, WrapperComponent) {\n const getterMethods = pick(this, getterMethodNames);\n this[SELF_GETTER_METHOD] = () => {\n const selfGetterMethod = getterMethodNameByDisplayName(WrapperComponent.displayName);\n logger.warn(\n true,\n `Getter \\`${selfGetterMethod}\\` can't be fired as it is a getter of static component`,\n props['data-ui-name'] || WrapperComponent.displayName,\n );\n };\n assign(\n this,\n getterMethodNames.reduce((acc, name) => {\n const getterMethod = getterMethods[name];\n if (!getterMethod) return acc;\n acc[name] = (childrenProps = {}) => {\n const getterProps = getterMethod.call(this, childrenProps, acc[name].index);\n return assignProps(childrenProps, getterProps);\n };\n acc[name].index = -1;\n acc[name].cache = new Set();\n return acc;\n }, {}),\n );\n },\n static: function (WrapperComponent, Component) {\n if (Object.keys(childComponents).length && !WrapperComponent.displayName) {\n throw new Error('\"displayName\" is not defined');\n }\n return Object.entries(childComponents).reduce((acc, [name, value]) => {\n let childComponents = {};\n\n if (Array.isArray(value)) {\n childComponents = value[1];\n value = value[0];\n }\n\n const prevStaticComponent = value[STATIC_COMPONENT];\n // @ts-ignore\n const prevDisplayName = value.displayName;\n // @ts-ignore\n value.displayName = WrapperComponent.displayName + '.' + name;\n value[STATIC_COMPONENT] = true;\n value[ROOT_COMPONENT] = Component[ROOT_COMPONENT] || Component;\n acc[name] = createComponent(value, childComponents, options);\n // @ts-ignore\n value.displayName = prevDisplayName;\n value[STATIC_COMPONENT] = prevStaticComponent;\n return acc;\n }, {});\n },\n context: function (context /*, WrapperComponent*/) {\n // const getterMethod = getterMethodNameByDisplayName(WrapperComponent.displayName);\n return {\n ...context,\n // [getterMethod]: this[SELF_GETTER_METHOD],\n ...pick(this, getterMethodNames),\n };\n },\n wrapperProps: function (props, WrapperComponent) {\n if (!WrapperComponent[STATIC_COMPONENT]) return props;\n const context = useContext(options.context);\n const getterMethod = context[getterMethodNameByDisplayName(WrapperComponent.displayName)];\n if (getterMethod) {\n if (!getterMethod.cache.has(this)) {\n getterMethod.cache.add(this);\n getterMethod.index++;\n }\n return getterMethod(props);\n }\n return props;\n },\n render: function (render) {\n getterMethodNames.forEach((name) => {\n if (this[name] === undefined) return;\n this[name].index = -1;\n this[name].cache.clear();\n });\n return render;\n },\n };\n}\n\nexport default Enhancement;\n"],"mappings":"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"}
package/lib/cjs/index.js CHANGED
@@ -17,6 +17,7 @@ var _exportNames = {
17
17
  register: true,
18
18
  CHILDREN_COMPONENT: true,
19
19
  STATIC_COMPONENT: true,
20
+ ROOT_COMPONENT: true,
20
21
  INHERITED_NAME: true
21
22
  };
22
23
  Object.defineProperty(exports, "CHILDREN_COMPONENT", {
@@ -32,6 +33,12 @@ Object.defineProperty(exports, "INHERITED_NAME", {
32
33
  return _inheritedName.INHERITED_NAME;
33
34
  }
34
35
  });
36
+ Object.defineProperty(exports, "ROOT_COMPONENT", {
37
+ enumerable: true,
38
+ get: function get() {
39
+ return _staticChildren.ROOT_COMPONENT;
40
+ }
41
+ });
35
42
  Object.defineProperty(exports, "STATIC_COMPONENT", {
36
43
  enumerable: true,
37
44
  get: function get() {
@@ -50,22 +57,22 @@ Object.defineProperty(exports, "register", {
50
57
 
51
58
  var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
52
59
 
53
- var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
54
-
55
- var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
56
-
57
60
  var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized"));
58
61
 
59
62
  var _get2 = _interopRequireDefault(require("@babel/runtime/helpers/get"));
60
63
 
64
+ var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
65
+
66
+ var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
67
+
68
+ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
69
+
61
70
  var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
62
71
 
63
72
  var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
64
73
 
65
74
  var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
66
75
 
67
- var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
68
-
69
76
  var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
70
77
 
71
78
  var _objectWithoutProperties2 = _interopRequireDefault(require("@babel/runtime/helpers/objectWithoutProperties"));
@@ -74,7 +81,7 @@ var _react = _interopRequireWildcard(require("react"));
74
81
 
75
82
  var _hoistNonReactStatics = _interopRequireDefault(require("hoist-non-react-statics"));
76
83
 
77
- var _ref3 = require("@semcore/utils/lib/ref");
84
+ var _ref4 = require("@semcore/utils/lib/ref");
78
85
 
79
86
  var _useEnhancedEffect = _interopRequireDefault(require("@semcore/utils/lib/use/useEnhancedEffect"));
80
87
 
@@ -144,7 +151,8 @@ Object.keys(_styled).forEach(function (key) {
144
151
  });
145
152
  });
146
153
  var _excluded = ["forwardRef"],
147
- _excluded2 = ["ref"];
154
+ _excluded2 = ["forwardRef", "__WRAPPER_PROPS_BIND__"],
155
+ _excluded3 = ["ref"];
148
156
 
149
157
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
150
158
 
@@ -194,25 +202,64 @@ function createGetField(enhancements, Component, isFunction) {
194
202
  }
195
203
 
196
204
  function createForwardWrapper(Component, wrapperProps, statics, isFunction) {
197
- // @ts-ignore
198
- var WrapperComponent = /*#__PURE__*/_react["default"].forwardRef(function (_ref, ref) {
205
+ var RootComponent = Component[_staticChildren.ROOT_COMPONENT];
206
+ var getterMethodName = (0, _staticChildren.getterMethodNameByDisplayName)(Component === null || Component === void 0 ? void 0 : Component.displayName);
207
+ var getterMethod = RootComponent !== null && RootComponent !== void 0 && RootComponent.prototype ? RootComponent.prototype[getterMethodName] : undefined;
208
+ var useGetterIndex = (getterMethod === null || getterMethod === void 0 ? void 0 : getterMethod.length) >= 2;
209
+
210
+ function WrapperForwardRefWithBind(_ref, ref) {
199
211
  var _ref$forwardRef = _ref.forwardRef,
200
212
  forwardRef = _ref$forwardRef === void 0 ? null : _ref$forwardRef,
201
213
  other = (0, _objectWithoutProperties2["default"])(_ref, _excluded);
214
+ return /*#__PURE__*/_react["default"].createElement(BindingWrapper, (0, _extends2["default"])({}, other, {
215
+ forwardRef: (0, _ref4.useForkRef)(ref, forwardRef)
216
+ }));
217
+ }
202
218
 
203
- // WRAPPER PROPS
204
- var _wrapperProps$reduce = wrapperProps.reduce(function (acc, enhancement) {
219
+ function WrapperForwardRef(_ref2, ref) {
220
+ var _ref2$forwardRef = _ref2.forwardRef,
221
+ forwardRef = _ref2$forwardRef === void 0 ? null : _ref2$forwardRef,
222
+ __WRAPPER_PROPS_BIND__ = _ref2.__WRAPPER_PROPS_BIND__,
223
+ other = (0, _objectWithoutProperties2["default"])(_ref2, _excluded2);
224
+
225
+ var _reduce = (__WRAPPER_PROPS_BIND__ || wrapperProps).reduce(function (acc, enhancement) {
205
226
  return enhancement(acc, WrapperComponent, isFunction);
206
227
  }, other),
207
- _wrapperProps$reduce$ = _wrapperProps$reduce.ref,
208
- enhancementRef = _wrapperProps$reduce$ === void 0 ? null : _wrapperProps$reduce$,
209
- props = (0, _objectWithoutProperties2["default"])(_wrapperProps$reduce, _excluded2); // @ts-ignore
210
-
228
+ _reduce$ref = _reduce.ref,
229
+ enhancementRef = _reduce$ref === void 0 ? null : _reduce$ref,
230
+ props = (0, _objectWithoutProperties2["default"])(_reduce, _excluded3);
211
231
 
212
232
  return /*#__PURE__*/_react["default"].createElement(Component, (0, _extends2["default"])({}, props, {
213
- forwardRef: (0, _ref3.useForkRef)(enhancementRef, ref, forwardRef)
233
+ forwardRef: (0, _ref4.useForkRef)(enhancementRef, ref, forwardRef)
214
234
  }));
215
- });
235
+ }
236
+
237
+ var BindingWrapper = /*#__PURE__*/function (_React$Component) {
238
+ (0, _inherits2["default"])(BindingWrapper, _React$Component);
239
+
240
+ var _super = _createSuper(BindingWrapper);
241
+
242
+ function BindingWrapper() {
243
+ (0, _classCallCheck2["default"])(this, BindingWrapper);
244
+ return _super.apply(this, arguments);
245
+ }
246
+
247
+ (0, _createClass2["default"])(BindingWrapper, [{
248
+ key: "render",
249
+ value: function render() {
250
+ var _this = this;
251
+
252
+ return /*#__PURE__*/_react["default"].createElement(WrapperForwardRef, (0, _extends2["default"])({}, this.props, {
253
+ __WRAPPER_PROPS_BIND__: wrapperProps.map(function (fn) {
254
+ return fn.bind(_this);
255
+ })
256
+ }));
257
+ }
258
+ }]);
259
+ return BindingWrapper;
260
+ }(_react["default"].Component);
261
+
262
+ var WrapperComponent = /*#__PURE__*/_react["default"].forwardRef(useGetterIndex ? WrapperForwardRefWithBind : WrapperForwardRef);
216
263
 
217
264
  (0, _hoistNonReactStatics["default"])(WrapperComponent, Component);
218
265
  WrapperComponent.displayName = Component.displayName; // TODO: defaultProps is only empty
@@ -220,7 +267,7 @@ function createForwardWrapper(Component, wrapperProps, statics, isFunction) {
220
267
  WrapperComponent.defaultProps = Component.defaultProps; // STATIC
221
268
 
222
269
  statics.forEach(function (enhancement) {
223
- return Object.assign(WrapperComponent, enhancement(WrapperComponent, isFunction));
270
+ return Object.assign(WrapperComponent, enhancement(WrapperComponent, Component, isFunction));
224
271
  });
225
272
  return WrapperComponent;
226
273
  }
@@ -237,28 +284,28 @@ function wrapClass(OriginComponent, enhancements, Context) {
237
284
  var Component = /*#__PURE__*/function (_OriginComponent2) {
238
285
  (0, _inherits2["default"])(Component, _OriginComponent2);
239
286
 
240
- var _super = _createSuper(Component);
287
+ var _super2 = _createSuper(Component);
241
288
 
242
289
  function Component(props, context) {
243
- var _this;
290
+ var _this2;
244
291
 
245
292
  (0, _classCallCheck2["default"])(this, Component);
246
- _this = _super.call(this, props, context); // INITS
293
+ _this2 = _super2.call(this, props, context); // INITS
247
294
 
248
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), CORE_AS_PROPS, null);
249
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), CORE_INSTANCE, WrapperComponent);
250
- (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), CORE_INIT, false);
295
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), CORE_AS_PROPS, null);
296
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), CORE_INSTANCE, WrapperComponent);
297
+ (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this2), CORE_INIT, false);
251
298
  inits.forEach(function (enhancement) {
252
- return enhancement.call((0, _assertThisInitialized2["default"])(_this), props, WrapperComponent, false);
299
+ return enhancement.call((0, _assertThisInitialized2["default"])(_this2), props, WrapperComponent, false);
253
300
  });
254
- _this[CORE_INIT] = true;
255
- return _this;
301
+ _this2[CORE_INIT] = true;
302
+ return _this2;
256
303
  }
257
304
 
258
305
  (0, _createClass2["default"])(Component, [{
259
306
  key: "asProps",
260
307
  get: function get() {
261
- var _this2 = this;
308
+ var _this3 = this;
262
309
 
263
310
  // TODO if not production
264
311
  if (!this[CORE_INIT]) {
@@ -268,7 +315,7 @@ function wrapClass(OriginComponent, enhancements, Context) {
268
315
  if (!this[CORE_AS_PROPS]) {
269
316
  // PROPS
270
317
  this[CORE_AS_PROPS] = props.reduce(function (acc, enhancement) {
271
- return enhancement.call(_this2, acc, WrapperComponent, false);
318
+ return enhancement.call(_this3, acc, WrapperComponent, false);
272
319
  }, this.props);
273
320
  }
274
321
 
@@ -277,18 +324,18 @@ function wrapClass(OriginComponent, enhancements, Context) {
277
324
  }, {
278
325
  key: "setContext",
279
326
  value: function setContext() {
280
- var _this3 = this;
327
+ var _this4 = this;
281
328
 
282
329
  var contextProps = (0, _get2["default"])((0, _getPrototypeOf2["default"])(Component.prototype), "setContext", this) ? (0, _get2["default"])((0, _getPrototypeOf2["default"])(Component.prototype), "setContext", this).call(this) : {}; // CONTEXT
283
330
 
284
331
  return contexts.reduce(function (acc, enhancement) {
285
- return enhancement.call(_this3, acc, WrapperComponent, false);
332
+ return enhancement.call(_this4, acc, WrapperComponent, false);
286
333
  }, contextProps);
287
334
  }
288
335
  }, {
289
336
  key: "render",
290
337
  value: function render() {
291
- var _this4 = this;
338
+ var _this5 = this;
292
339
 
293
340
  this[CORE_AS_PROPS] = null; // TODO if not production
294
341
 
@@ -300,7 +347,7 @@ function wrapClass(OriginComponent, enhancements, Context) {
300
347
  var ctx = this.setContext(); // RENDER
301
348
 
302
349
  var render = renders.reduce(function (acc, enhancement) {
303
- return enhancement.call(_this4, acc, asProps, WrapperComponent, false);
350
+ return enhancement.call(_this5, acc, asProps, WrapperComponent, false);
304
351
  }, (0, _get2["default"])((0, _getPrototypeOf2["default"])(Component.prototype), "render", this).call(this));
305
352
 
306
353
  if (!WrapperComponent[_staticChildren.STATIC_COMPONENT] && !isEmptyObject(ctx)) {
@@ -370,8 +417,8 @@ function wrapFunction(OriginComponent, enhancements, Context) {
370
417
  }
371
418
 
372
419
  function wrapCore(OriginComponent, enhancements, Context) {
373
- var Component = function Component(_ref2) {
374
- var Root = _ref2.Root;
420
+ var Component = function Component(_ref3) {
421
+ var Root = _ref3.Root;
375
422
  return /*#__PURE__*/_react["default"].createElement(Root, {
376
423
  render: OriginComponent
377
424
  });
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["CORE_COMPONENT","Symbol","CORE_INSTANCE","CORE_AS_PROPS","CORE_INIT","CONTEXT_COMPONENT","CREATE_COMPONENT","PARENT_COMPONENTS","isEmptyObject","obj","Object","getOwnPropertyNames","length","getOwnPropertySymbols","getPrototypeOf","prototype","createGetField","enhancements","Component","isFunction","getField","key","filter","enhancement","condition","reduce","acc","item","push","createForwardWrapper","wrapperProps","statics","WrapperComponent","React","forwardRef","ref","other","enhancementRef","props","useForkRef","hoistNonReactStatics","displayName","defaultProps","forEach","assign","wrapClass","OriginComponent","Context","inits","renders","contexts","context","call","Error","contextProps","asProps","ctx","setContext","render","STATIC_COMPONENT","wrapFunction","memo","FunctionMemoComponent","selfRef","useRef","firstRender","useEnhancedEffect","current","wrapCore","Root","createComposeComponent","PureComponent","isPrototypeOf","assignProps","p1","p2","_assignProps","createComponent","childComponents","options","createContext","parent","parents","Array","isArray","wholeFamily","map","f","bindHandlerEnhancement","childrenEnhancement","rootEnhancement","uncontrolledPropsEnhancement","staticChildrenEnhancement","functionDefaultPropsEnhancement","inheritedNameEnhancement","dataNameEnhancement","enhanceEnhancement","styleEnhancement","hoistPropsEnhancement","_OriginComponent","_childComponents","_options","createBaseComponent"],"sources":["../../src/index.tsx"],"sourcesContent":["import React, { ForwardRefExoticComponent, RefAttributes, useRef } from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\n// @ts-ignore\nimport { useForkRef } from '@semcore/utils/lib/ref';\n// @ts-ignore\nimport useEnhancedEffect from '@semcore/utils/lib/use/useEnhancedEffect';\n// @ts-ignore\nimport _assignProps from '@semcore/utils/lib/assignProps';\n\nimport { Component, PropsWithRenderFnChildren } from './Component';\nimport register from './register';\n\nimport childrenEnhancement, { CHILDREN_COMPONENT } from './enhancement/Children';\nimport rootEnhancement from './enhancement/Root';\nimport uncontrolledPropsEnhancement from './enhancement/uncontrolledProps';\nimport functionDefaultPropsEnhancement from './enhancement/functionDefaultProps';\nimport staticChildrenEnhancement, { STATIC_COMPONENT } from './enhancement/staticChildren';\nimport inheritedNameEnhancement, { INHERITED_NAME } from './enhancement/inheritedName';\nimport hoistPropsEnhancement from './enhancement/hoistProps';\nimport dataNameEnhancement from './enhancement/dataName';\nimport enhanceEnhancement from './enhancement/enhance';\nimport styleEnhancement from './enhancement/style';\nimport bindHandlerEnhancement from './enhancement/bindHandler';\n\nconst CORE_COMPONENT = Symbol('CORE_COMPONENT');\nconst CORE_INSTANCE = Symbol('CORE_INSTANCE');\nconst CORE_AS_PROPS = Symbol('CORE_AS_PROPS');\nconst CORE_INIT = Symbol('CORE_INIT');\nconst CONTEXT_COMPONENT = Symbol('CONTEXT_COMPONENT');\nconst CREATE_COMPONENT = Symbol('CREATE_COMPONENT');\nconst PARENT_COMPONENTS = Symbol('PARENT_COMPONENTS');\n\nfunction isEmptyObject(obj) {\n return (\n Object.getOwnPropertyNames(obj).length === 0 &&\n Object.getOwnPropertySymbols && // For IE 11\n Object.getOwnPropertySymbols(obj).length === 0 &&\n Object.getPrototypeOf(obj) === Object.prototype\n );\n}\n\nfunction createGetField(enhancements, Component, isFunction) {\n return function getField(key) {\n return enhancements\n .filter((enhancement) => {\n if (!enhancement.condition) {\n return true;\n }\n return enhancement.condition(Component, isFunction);\n })\n .reduce((acc, item) => {\n if (item[key]) {\n acc.push(item[key]);\n }\n return acc;\n }, []);\n };\n}\n\nfunction createForwardWrapper(Component, wrapperProps, statics, isFunction) {\n // @ts-ignore\n const WrapperComponent = React.forwardRef(function ({ forwardRef = null, ...other }, ref) {\n // WRAPPER PROPS\n const { ref: enhancementRef = null, ...props } = wrapperProps.reduce(\n (acc, enhancement) => enhancement(acc, WrapperComponent, isFunction),\n other,\n );\n // @ts-ignore\n return <Component {...props} forwardRef={useForkRef(enhancementRef, ref, forwardRef)} />;\n });\n\n hoistNonReactStatics(WrapperComponent, Component);\n\n WrapperComponent.displayName = Component.displayName;\n // TODO: defaultProps is only empty\n WrapperComponent.defaultProps = Component.defaultProps;\n // STATIC\n statics.forEach((enhancement) =>\n Object.assign(WrapperComponent, enhancement(WrapperComponent, isFunction)),\n );\n\n return WrapperComponent;\n}\n\nfunction wrapClass(OriginComponent, enhancements, Context) {\n const getField = createGetField(enhancements, OriginComponent, false);\n\n const inits = getField('init');\n const props = getField('asProps');\n const renders = getField('render');\n const statics = getField('static');\n const wrapperProps = getField('wrapperProps');\n const contexts = getField('context');\n\n class Component extends OriginComponent {\n [CORE_AS_PROPS] = null;\n [CORE_INSTANCE] = WrapperComponent;\n [CORE_INIT] = false;\n\n constructor(props, context) {\n super(props, context);\n // INITS\n inits.forEach((enhancement) => enhancement.call(this, props, WrapperComponent, false));\n this[CORE_INIT] = true;\n }\n\n get asProps() {\n // TODO if not production\n if (!this[CORE_INIT]) {\n throw new Error('Can not call asProps in constructor');\n }\n if (!this[CORE_AS_PROPS]) {\n // PROPS\n this[CORE_AS_PROPS] = props.reduce(\n (acc, enhancement) => enhancement.call(this, acc, WrapperComponent, false),\n this.props,\n );\n }\n return this[CORE_AS_PROPS];\n }\n\n setContext() {\n const contextProps = super.setContext ? super.setContext() : {};\n // CONTEXT\n return contexts.reduce(\n (acc, enhancement) => enhancement.call(this, acc, WrapperComponent, false),\n contextProps,\n );\n }\n\n render() {\n this[CORE_AS_PROPS] = null;\n // TODO if not production\n if (!super.render) {\n throw new Error('Component `render` method is not defined');\n }\n const asProps = this.asProps;\n const ctx = this.setContext();\n // RENDER\n const render = renders.reduce(\n (acc, enhancement) => enhancement.call(this, acc, asProps, WrapperComponent, false),\n super.render(),\n );\n if (!WrapperComponent[STATIC_COMPONENT] && !isEmptyObject(ctx)) {\n return <Context.Provider value={{ ...asProps, ...ctx }}>{render}</Context.Provider>;\n } else {\n return render;\n }\n }\n }\n\n const WrapperComponent = createForwardWrapper(Component, wrapperProps, statics, false);\n return WrapperComponent;\n}\n\nfunction wrapFunction(OriginComponent, enhancements, Context) {\n const getField = createGetField(enhancements, OriginComponent, true);\n\n const inits = getField('init');\n const props = getField('asProps');\n const renders = getField('render');\n const statics = getField('static');\n const wrapperProps = getField('wrapperProps');\n const contexts = getField('context');\n\n const Component = React.memo(function FunctionMemoComponent(other) {\n const selfRef = useRef({});\n const firstRender = useRef(true);\n useEnhancedEffect(() => {\n firstRender.current = false;\n }, []);\n if (firstRender.current) {\n // INITS\n inits.forEach((enhancement) =>\n enhancement.call(selfRef.current, other, WrapperComponent, true),\n );\n }\n // PROPS\n const asProps = props.reduce(\n (acc, enhancement) => enhancement.call(selfRef.current, acc, WrapperComponent, true),\n other,\n );\n // CONTEXT\n const ctx = contexts.reduce(\n (acc, enhancement) => enhancement.call(selfRef.current, acc, WrapperComponent, true),\n {},\n );\n\n // RENDER\n const render = renders.reduce(\n (acc, enhancement) => enhancement.call(selfRef.current, acc, asProps, WrapperComponent, true),\n <OriginComponent {...asProps} />,\n );\n\n if (!WrapperComponent[STATIC_COMPONENT] && !isEmptyObject(ctx)) {\n return <Context.Provider value={{ ...asProps, ...ctx }}>{render}</Context.Provider>;\n } else {\n return render;\n }\n });\n Object.assign(Component, OriginComponent);\n const WrapperComponent = createForwardWrapper(Component, wrapperProps, statics, true);\n return WrapperComponent;\n}\n\nfunction wrapCore(OriginComponent, enhancements, Context) {\n const Component = function ({ Root }) {\n return <Root render={OriginComponent} />;\n };\n hoistNonReactStatics(Component, OriginComponent);\n Component.displayName = OriginComponent.displayName;\n Component.defaultProps = OriginComponent.defaultProps;\n return wrapFunction(Component, enhancements, Context);\n}\n\nfunction createComposeComponent(OriginComponent, Context, enhancements): any {\n if (\n React.PureComponent.isPrototypeOf(OriginComponent) ||\n React.Component.isPrototypeOf(OriginComponent)\n ) {\n if (OriginComponent.prototype instanceof Component) {\n return wrapClass(OriginComponent, enhancements, Context);\n } else {\n throw new Error('Must inherit from our component');\n }\n } else if (typeof OriginComponent === 'function') {\n return wrapFunction(OriginComponent, enhancements, Context);\n } else if (OriginComponent[CORE_COMPONENT]) {\n return wrapCore(OriginComponent, enhancements, Context);\n } else {\n throw new Error('Must be a React component');\n }\n}\n\nexport type PropsAndRef<T, Ctx, UCProps> = PropsWithRenderFnChildren<T, Ctx, UCProps> &\n RefAttributes<unknown>;\nexport type ForwardRefComponent<T, Ctx, UCProps> = ForwardRefExoticComponent<\n PropsAndRef<T, Ctx, UCProps>\n>;\ntype ComponentOrProps<T, Context, UCProps> = T extends [infer ParentProps, infer ChildProps]\n ? ComponentType<ParentProps, ChildProps, Context, UCProps>\n : ForwardRefComponent<T, Context, UCProps>;\n\nexport type ComponentType<\n ComponentProps,\n ChildComponentProps = {},\n ContextType = {},\n UCProps = {},\n FNType = null,\n> = (FNType extends null\n ? ForwardRefComponent<ComponentProps, ContextType, UCProps>\n : FNType & { displayName: string }) & {\n [K in keyof ChildComponentProps]: ComponentOrProps<ChildComponentProps[K], ContextType, UCProps>;\n} & {\n [CORE_COMPONENT]: boolean;\n [CREATE_COMPONENT]: () => ComponentType<\n ComponentProps,\n ChildComponentProps,\n ContextType,\n UCProps\n >;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ninterface ClassWithUncontrolledProps<Props> {\n uncontrolledProps(): unknown;\n}\n\nfunction assignProps(p1, p2) {\n return _assignProps(p2, p1);\n}\n\nfunction createComponent<ComponentProps, ChildComponentProps = {}, ContextType = {}, FNType = null>(\n OriginComponent,\n childComponents = {},\n options: {\n context?: React.Context<ContextType>;\n parent?: ComponentType<unknown> | ComponentType<unknown>[];\n enhancements?: [any];\n } = {},\n): ComponentType<\n ComponentProps extends Component<infer Props> ? Props : ComponentProps,\n ChildComponentProps,\n ContextType,\n ComponentProps extends ClassWithUncontrolledProps<any>\n ? ReturnType<ComponentProps['uncontrolledProps']>\n : { [key: string]: (arg: unknown) => void },\n FNType\n> {\n const {\n context = React.createContext<ContextType>({} as ContextType),\n parent = [],\n enhancements = [],\n } = options;\n let parents = Array.isArray(parent) ? parent : [parent];\n if (parents.length) {\n const wholeFamily = parents.reduce((acc, parent) => {\n if (parent[PARENT_COMPONENTS]) {\n acc = [...parent[PARENT_COMPONENTS], ...acc];\n }\n return acc;\n }, parents);\n OriginComponent[PARENT_COMPONENTS] = wholeFamily;\n parents = wholeFamily;\n }\n if (OriginComponent[CORE_COMPONENT]) {\n parents.push(OriginComponent);\n }\n const Component = createComposeComponent(OriginComponent, context, [\n // @ts-ignore\n ...enhancements.map((f) => f(context, parents, createComponent, childComponents)),\n bindHandlerEnhancement(),\n childrenEnhancement(context, parents),\n // root must be under the children\n rootEnhancement(),\n uncontrolledPropsEnhancement(),\n staticChildrenEnhancement(childComponents, createComponent, {\n context,\n parent,\n enhancements,\n }),\n // functionDefaultProps must be under the staticChild\n functionDefaultPropsEnhancement(),\n // inheritedName must be under the staticChild\n inheritedNameEnhancement(),\n // dataName must be under the staticChild\n dataNameEnhancement(),\n // enhanceEnhancement must be under the functionDefaultPropsEnhancement\n enhanceEnhancement(),\n styleEnhancement(childComponents, context),\n // must be the last one so any properties can be raised\n hoistPropsEnhancement(childComponents, context),\n ]);\n Component[CONTEXT_COMPONENT] = context;\n Component[CREATE_COMPONENT] = function (\n _OriginComponent = OriginComponent,\n _childComponents = childComponents,\n _options = options,\n ) {\n return createComponent(_OriginComponent, _childComponents, _options);\n };\n Component[CORE_COMPONENT] = true;\n return Component;\n}\n\nfunction createBaseComponent<ComponentProps>(OriginComponent): ComponentType<ComponentProps> {\n let Component = null;\n if (\n !React.PureComponent.isPrototypeOf(OriginComponent) &&\n !React.Component.isPrototypeOf(OriginComponent) &&\n typeof OriginComponent === 'function'\n ) {\n Component = React.forwardRef(OriginComponent);\n Component.displayName = OriginComponent.displayName;\n Component.defaultProps = {\n 'data-ui-name': OriginComponent.displayName,\n ...OriginComponent.defaultProps,\n };\n Component[CORE_COMPONENT] = true;\n } else {\n throw new Error('createBaseComponent accepts only functional component');\n }\n return Component;\n}\n\nexport * from './Component';\nexport * from './styled';\nexport * from './register';\nexport {\n createBaseComponent,\n register,\n CREATE_COMPONENT,\n CORE_INSTANCE,\n CONTEXT_COMPONENT,\n CHILDREN_COMPONENT,\n INHERITED_NAME,\n CORE_COMPONENT,\n STATIC_COMPONENT,\n assignProps,\n};\nexport default createComponent;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["CORE_COMPONENT","Symbol","CORE_INSTANCE","CORE_AS_PROPS","CORE_INIT","CONTEXT_COMPONENT","CREATE_COMPONENT","PARENT_COMPONENTS","isEmptyObject","obj","Object","getOwnPropertyNames","length","getOwnPropertySymbols","getPrototypeOf","prototype","createGetField","enhancements","Component","isFunction","getField","key","filter","enhancement","condition","reduce","acc","item","push","createForwardWrapper","wrapperProps","statics","RootComponent","ROOT_COMPONENT","getterMethodName","getterMethodNameByDisplayName","displayName","getterMethod","undefined","useGetterIndex","WrapperForwardRefWithBind","ref","forwardRef","other","useForkRef","WrapperForwardRef","__WRAPPER_PROPS_BIND__","WrapperComponent","enhancementRef","props","BindingWrapper","map","fn","bind","React","hoistNonReactStatics","defaultProps","forEach","assign","wrapClass","OriginComponent","Context","inits","renders","contexts","context","call","Error","contextProps","asProps","ctx","setContext","render","STATIC_COMPONENT","wrapFunction","memo","FunctionMemoComponent","selfRef","useRef","firstRender","useEnhancedEffect","current","wrapCore","Root","createComposeComponent","PureComponent","isPrototypeOf","assignProps","p1","p2","_assignProps","createComponent","childComponents","options","createContext","parent","parents","Array","isArray","wholeFamily","f","bindHandlerEnhancement","childrenEnhancement","rootEnhancement","uncontrolledPropsEnhancement","staticChildrenEnhancement","functionDefaultPropsEnhancement","inheritedNameEnhancement","dataNameEnhancement","enhanceEnhancement","styleEnhancement","hoistPropsEnhancement","_OriginComponent","_childComponents","_options","createBaseComponent"],"sources":["../../src/index.tsx"],"sourcesContent":["import React, { ForwardRefExoticComponent, RefAttributes, useRef } from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\n// @ts-ignore\nimport { useForkRef } from '@semcore/utils/lib/ref';\n// @ts-ignore\nimport useEnhancedEffect from '@semcore/utils/lib/use/useEnhancedEffect';\n// @ts-ignore\nimport _assignProps from '@semcore/utils/lib/assignProps';\n\nimport { Component, PropsWithRenderFnChildren } from './Component';\nimport register from './register';\n\nimport childrenEnhancement, { CHILDREN_COMPONENT } from './enhancement/Children';\nimport rootEnhancement from './enhancement/Root';\nimport uncontrolledPropsEnhancement from './enhancement/uncontrolledProps';\nimport functionDefaultPropsEnhancement from './enhancement/functionDefaultProps';\nimport staticChildrenEnhancement, {\n STATIC_COMPONENT,\n ROOT_COMPONENT,\n getterMethodNameByDisplayName,\n} from './enhancement/staticChildren';\nimport inheritedNameEnhancement, { INHERITED_NAME } from './enhancement/inheritedName';\nimport hoistPropsEnhancement from './enhancement/hoistProps';\nimport dataNameEnhancement from './enhancement/dataName';\nimport enhanceEnhancement from './enhancement/enhance';\nimport styleEnhancement from './enhancement/style';\nimport bindHandlerEnhancement from './enhancement/bindHandler';\n\nconst CORE_COMPONENT = Symbol('CORE_COMPONENT');\nconst CORE_INSTANCE = Symbol('CORE_INSTANCE');\nconst CORE_AS_PROPS = Symbol('CORE_AS_PROPS');\nconst CORE_INIT = Symbol('CORE_INIT');\nconst CONTEXT_COMPONENT = Symbol('CONTEXT_COMPONENT');\nconst CREATE_COMPONENT = Symbol('CREATE_COMPONENT');\nconst PARENT_COMPONENTS = Symbol('PARENT_COMPONENTS');\n\nfunction isEmptyObject(obj) {\n return (\n Object.getOwnPropertyNames(obj).length === 0 &&\n Object.getOwnPropertySymbols && // For IE 11\n Object.getOwnPropertySymbols(obj).length === 0 &&\n Object.getPrototypeOf(obj) === Object.prototype\n );\n}\n\nfunction createGetField(enhancements, Component, isFunction) {\n return function getField(key) {\n return enhancements\n .filter((enhancement) => {\n if (!enhancement.condition) {\n return true;\n }\n return enhancement.condition(Component, isFunction);\n })\n .reduce((acc, item) => {\n if (item[key]) {\n acc.push(item[key]);\n }\n return acc;\n }, []);\n };\n}\n\nfunction createForwardWrapper(Component, wrapperProps, statics, isFunction) {\n const RootComponent = Component[ROOT_COMPONENT];\n const getterMethodName = getterMethodNameByDisplayName(Component?.displayName);\n const getterMethod = RootComponent?.prototype\n ? RootComponent.prototype[getterMethodName]\n : undefined;\n const useGetterIndex = getterMethod?.length >= 2;\n\n function WrapperForwardRefWithBind({ forwardRef = null, ...other }, ref) {\n return <BindingWrapper {...other} forwardRef={useForkRef(ref, forwardRef)} />;\n }\n\n function WrapperForwardRef({ forwardRef = null, __WRAPPER_PROPS_BIND__, ...other }, ref) {\n const { ref: enhancementRef = null, ...props } = (\n __WRAPPER_PROPS_BIND__ || wrapperProps\n ).reduce((acc, enhancement) => enhancement(acc, WrapperComponent, isFunction), other);\n return <Component {...props} forwardRef={useForkRef(enhancementRef, ref, forwardRef)} />;\n }\n\n class BindingWrapper extends React.Component<any> {\n render() {\n return (\n <WrapperForwardRef\n {...this.props}\n __WRAPPER_PROPS_BIND__={wrapperProps.map((fn) => fn.bind(this))}\n />\n );\n }\n }\n\n const WrapperComponent = React.forwardRef(\n useGetterIndex ? WrapperForwardRefWithBind : WrapperForwardRef,\n );\n\n hoistNonReactStatics(WrapperComponent, Component);\n\n WrapperComponent.displayName = Component.displayName;\n // TODO: defaultProps is only empty\n WrapperComponent.defaultProps = Component.defaultProps;\n // STATIC\n statics.forEach((enhancement) =>\n Object.assign(WrapperComponent, enhancement(WrapperComponent, Component, isFunction)),\n );\n\n return WrapperComponent;\n}\n\nfunction wrapClass(OriginComponent, enhancements, Context) {\n const getField = createGetField(enhancements, OriginComponent, false);\n\n const inits = getField('init');\n const props = getField('asProps');\n const renders = getField('render');\n const statics = getField('static');\n const wrapperProps = getField('wrapperProps');\n const contexts = getField('context');\n\n class Component extends OriginComponent {\n [CORE_AS_PROPS] = null;\n [CORE_INSTANCE] = WrapperComponent;\n [CORE_INIT] = false;\n\n constructor(props, context) {\n super(props, context);\n // INITS\n inits.forEach((enhancement) => enhancement.call(this, props, WrapperComponent, false));\n this[CORE_INIT] = true;\n }\n\n get asProps() {\n // TODO if not production\n if (!this[CORE_INIT]) {\n throw new Error('Can not call asProps in constructor');\n }\n if (!this[CORE_AS_PROPS]) {\n // PROPS\n this[CORE_AS_PROPS] = props.reduce(\n (acc, enhancement) => enhancement.call(this, acc, WrapperComponent, false),\n this.props,\n );\n }\n return this[CORE_AS_PROPS];\n }\n\n setContext() {\n const contextProps = super.setContext ? super.setContext() : {};\n // CONTEXT\n return contexts.reduce(\n (acc, enhancement) => enhancement.call(this, acc, WrapperComponent, false),\n contextProps,\n );\n }\n\n render() {\n this[CORE_AS_PROPS] = null;\n // TODO if not production\n if (!super.render) {\n throw new Error('Component `render` method is not defined');\n }\n const asProps = this.asProps;\n const ctx = this.setContext();\n // RENDER\n const render = renders.reduce(\n (acc, enhancement) => enhancement.call(this, acc, asProps, WrapperComponent, false),\n super.render(),\n );\n if (!WrapperComponent[STATIC_COMPONENT] && !isEmptyObject(ctx)) {\n return <Context.Provider value={{ ...asProps, ...ctx }}>{render}</Context.Provider>;\n } else {\n return render;\n }\n }\n }\n\n const WrapperComponent = createForwardWrapper(Component, wrapperProps, statics, false);\n return WrapperComponent;\n}\n\nfunction wrapFunction(OriginComponent, enhancements, Context) {\n const getField = createGetField(enhancements, OriginComponent, true);\n\n const inits = getField('init');\n const props = getField('asProps');\n const renders = getField('render');\n const statics = getField('static');\n const wrapperProps = getField('wrapperProps');\n const contexts = getField('context');\n\n const Component = React.memo(function FunctionMemoComponent(other) {\n const selfRef = useRef({});\n const firstRender = useRef(true);\n useEnhancedEffect(() => {\n firstRender.current = false;\n }, []);\n if (firstRender.current) {\n // INITS\n inits.forEach((enhancement) =>\n enhancement.call(selfRef.current, other, WrapperComponent, true),\n );\n }\n // PROPS\n const asProps = props.reduce(\n (acc, enhancement) => enhancement.call(selfRef.current, acc, WrapperComponent, true),\n other,\n );\n // CONTEXT\n const ctx = contexts.reduce(\n (acc, enhancement) => enhancement.call(selfRef.current, acc, WrapperComponent, true),\n {},\n );\n\n // RENDER\n const render = renders.reduce(\n (acc, enhancement) => enhancement.call(selfRef.current, acc, asProps, WrapperComponent, true),\n <OriginComponent {...asProps} />,\n );\n\n if (!WrapperComponent[STATIC_COMPONENT] && !isEmptyObject(ctx)) {\n return <Context.Provider value={{ ...asProps, ...ctx }}>{render}</Context.Provider>;\n } else {\n return render;\n }\n });\n Object.assign(Component, OriginComponent);\n const WrapperComponent = createForwardWrapper(Component, wrapperProps, statics, true);\n return WrapperComponent;\n}\n\nfunction wrapCore(OriginComponent, enhancements, Context) {\n const Component = function ({ Root }) {\n return <Root render={OriginComponent} />;\n };\n hoistNonReactStatics(Component, OriginComponent);\n Component.displayName = OriginComponent.displayName;\n Component.defaultProps = OriginComponent.defaultProps;\n return wrapFunction(Component, enhancements, Context);\n}\n\nfunction createComposeComponent(OriginComponent, Context, enhancements): any {\n if (\n React.PureComponent.isPrototypeOf(OriginComponent) ||\n React.Component.isPrototypeOf(OriginComponent)\n ) {\n if (OriginComponent.prototype instanceof Component) {\n return wrapClass(OriginComponent, enhancements, Context);\n } else {\n throw new Error('Must inherit from our component');\n }\n } else if (typeof OriginComponent === 'function') {\n return wrapFunction(OriginComponent, enhancements, Context);\n } else if (OriginComponent[CORE_COMPONENT]) {\n return wrapCore(OriginComponent, enhancements, Context);\n } else {\n throw new Error('Must be a React component');\n }\n}\n\nexport type PropsAndRef<T, Ctx, UCProps> = PropsWithRenderFnChildren<T, Ctx, UCProps> &\n RefAttributes<unknown>;\nexport type ForwardRefComponent<T, Ctx, UCProps> = ForwardRefExoticComponent<\n PropsAndRef<T, Ctx, UCProps>\n>;\ntype ComponentOrProps<T, Context, UCProps> = T extends [infer ParentProps, infer ChildProps]\n ? ComponentType<ParentProps, ChildProps, Context, UCProps>\n : ForwardRefComponent<T, Context, UCProps>;\n\nexport type ComponentType<\n ComponentProps,\n ChildComponentProps = {},\n ContextType = {},\n UCProps = {},\n FNType = null,\n> = (FNType extends null\n ? ForwardRefComponent<ComponentProps, ContextType, UCProps>\n : FNType & { displayName: string }) & {\n [K in keyof ChildComponentProps]: ComponentOrProps<ChildComponentProps[K], ContextType, UCProps>;\n} & {\n [CORE_COMPONENT]: boolean;\n [CREATE_COMPONENT]: () => ComponentType<\n ComponentProps,\n ChildComponentProps,\n ContextType,\n UCProps\n >;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ninterface ClassWithUncontrolledProps<Props> {\n uncontrolledProps(): unknown;\n}\n\nfunction assignProps(p1, p2) {\n return _assignProps(p2, p1);\n}\n\nfunction createComponent<ComponentProps, ChildComponentProps = {}, ContextType = {}, FNType = null>(\n OriginComponent,\n childComponents = {},\n options: {\n context?: React.Context<ContextType>;\n parent?: ComponentType<unknown> | ComponentType<unknown>[];\n enhancements?: [any];\n } = {},\n): ComponentType<\n ComponentProps extends Component<infer Props> ? Props : ComponentProps,\n ChildComponentProps,\n ContextType,\n ComponentProps extends ClassWithUncontrolledProps<any>\n ? ReturnType<ComponentProps['uncontrolledProps']>\n : { [key: string]: (arg: unknown) => void },\n FNType\n> {\n const {\n context = React.createContext<ContextType>({} as ContextType),\n parent = [],\n enhancements = [],\n } = options;\n let parents = Array.isArray(parent) ? parent : [parent];\n if (parents.length) {\n const wholeFamily = parents.reduce((acc, parent) => {\n if (parent[PARENT_COMPONENTS]) {\n acc = [...parent[PARENT_COMPONENTS], ...acc];\n }\n return acc;\n }, parents);\n OriginComponent[PARENT_COMPONENTS] = wholeFamily;\n parents = wholeFamily;\n }\n if (OriginComponent[CORE_COMPONENT]) {\n parents.push(OriginComponent);\n }\n const Component = createComposeComponent(OriginComponent, context, [\n // @ts-ignore\n ...enhancements.map((f) => f(context, parents, createComponent, childComponents)),\n bindHandlerEnhancement(),\n childrenEnhancement(context, parents),\n // root must be under the children\n rootEnhancement(),\n uncontrolledPropsEnhancement(),\n staticChildrenEnhancement(childComponents, createComponent, {\n context,\n parent,\n enhancements,\n }),\n // functionDefaultProps must be under the staticChild\n functionDefaultPropsEnhancement(),\n // inheritedName must be under the staticChild\n inheritedNameEnhancement(),\n // dataName must be under the staticChild\n dataNameEnhancement(),\n // enhanceEnhancement must be under the functionDefaultPropsEnhancement\n enhanceEnhancement(),\n styleEnhancement(childComponents, context),\n // must be the last one so any properties can be raised\n hoistPropsEnhancement(childComponents, context),\n ]);\n Component[CONTEXT_COMPONENT] = context;\n Component[CREATE_COMPONENT] = function (\n _OriginComponent = OriginComponent,\n _childComponents = childComponents,\n _options = options,\n ) {\n return createComponent(_OriginComponent, _childComponents, _options);\n };\n Component[CORE_COMPONENT] = true;\n return Component;\n}\n\nfunction createBaseComponent<ComponentProps>(OriginComponent): ComponentType<ComponentProps> {\n let Component = null;\n if (\n !React.PureComponent.isPrototypeOf(OriginComponent) &&\n !React.Component.isPrototypeOf(OriginComponent) &&\n typeof OriginComponent === 'function'\n ) {\n Component = React.forwardRef(OriginComponent);\n Component.displayName = OriginComponent.displayName;\n Component.defaultProps = {\n 'data-ui-name': OriginComponent.displayName,\n ...OriginComponent.defaultProps,\n };\n Component[CORE_COMPONENT] = true;\n } else {\n throw new Error('createBaseComponent accepts only functional component');\n }\n return Component;\n}\n\nexport * from './Component';\nexport * from './styled';\nexport * from './register';\nexport {\n createBaseComponent,\n register,\n CREATE_COMPONENT,\n CORE_INSTANCE,\n CONTEXT_COMPONENT,\n CHILDREN_COMPONENT,\n INHERITED_NAME,\n CORE_COMPONENT,\n STATIC_COMPONENT,\n ROOT_COMPONENT,\n assignProps,\n};\nexport default createComponent;\n"],"mappings":"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"}
@@ -21,11 +21,11 @@ function assign(target, source) {
21
21
  }, {}));
22
22
  }
23
23
 
24
- function getterMethodName(name) {
24
+ export function getterMethodName(name) {
25
25
  return "get".concat(name, "Props");
26
26
  }
27
-
28
- function getterMethodNameByDisplayName(displayName) {
27
+ export function getterMethodNameByDisplayName() {
28
+ var displayName = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
29
29
  var displayNames = displayName.split('.');
30
30
  var name = displayNames.slice(-(displayNames.length - 1)).join('');
31
31
  return getterMethodName(name);
@@ -48,6 +48,7 @@ function flatGetterMethodNames(childComponents, parentName) {
48
48
  }
49
49
 
50
50
  export var STATIC_COMPONENT = Symbol('STATIC_COMPONENT');
51
+ export var ROOT_COMPONENT = Symbol('ROOT_COMPONENT');
51
52
  var SELF_GETTER_METHOD = Symbol('SELF_GETTER_METHOD');
52
53
 
53
54
  function Enhancement(childComponents, createComponent, options) {
@@ -73,15 +74,15 @@ function Enhancement(childComponents, createComponent, options) {
73
74
  acc[name] = function () {
74
75
  var childrenProps = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
75
76
  var getterProps = getterMethod.call(_this, childrenProps, acc[name].index);
76
- acc[name].index++;
77
77
  return assignProps(childrenProps, getterProps);
78
78
  };
79
79
 
80
- acc[name].index = 0;
80
+ acc[name].index = -1;
81
+ acc[name].cache = new Set();
81
82
  return acc;
82
83
  }, {}));
83
84
  },
84
- "static": function _static(WrapperComponent) {
85
+ "static": function _static(WrapperComponent, Component) {
85
86
  if (Object.keys(childComponents).length && !WrapperComponent.displayName) {
86
87
  throw new Error('"displayName" is not defined');
87
88
  }
@@ -104,6 +105,7 @@ function Enhancement(childComponents, createComponent, options) {
104
105
 
105
106
  value.displayName = WrapperComponent.displayName + '.' + name;
106
107
  value[STATIC_COMPONENT] = true;
108
+ value[ROOT_COMPONENT] = Component[ROOT_COMPONENT] || Component;
107
109
  acc[name] = createComponent(value, childComponents, options); // @ts-ignore
108
110
 
109
111
  value.displayName = prevDisplayName;
@@ -123,6 +125,11 @@ function Enhancement(childComponents, createComponent, options) {
123
125
  var getterMethod = context[getterMethodNameByDisplayName(WrapperComponent.displayName)];
124
126
 
125
127
  if (getterMethod) {
128
+ if (!getterMethod.cache.has(this)) {
129
+ getterMethod.cache.add(this);
130
+ getterMethod.index++;
131
+ }
132
+
126
133
  return getterMethod(props);
127
134
  }
128
135
 
@@ -133,7 +140,9 @@ function Enhancement(childComponents, createComponent, options) {
133
140
 
134
141
  getterMethodNames.forEach(function (name) {
135
142
  if (_this2[name] === undefined) return;
136
- _this2[name].index = 0;
143
+ _this2[name].index = -1;
144
+
145
+ _this2[name].cache.clear();
137
146
  });
138
147
  return _render;
139
148
  }
@@ -1 +1 @@
1
- {"version":3,"file":"staticChildren.js","names":["useContext","assignProps","pick","logger","assign","target","source","Object","defineProperties","keys","reduce","descriptors","key","getOwnPropertyDescriptor","getterMethodName","name","getterMethodNameByDisplayName","displayName","displayNames","split","slice","length","join","flatGetterMethodNames","childComponents","parentName","entries","acc","value","Array","isArray","push","STATIC_COMPONENT","Symbol","SELF_GETTER_METHOD","Enhancement","createComponent","options","getterMethodNames","condition","Component","Boolean","init","props","WrapperComponent","getterMethods","selfGetterMethod","warn","getterMethod","childrenProps","getterProps","call","index","Error","prevStaticComponent","prevDisplayName","context","wrapperProps","render","forEach","undefined"],"sources":["../../../src/enhancement/staticChildren.tsx"],"sourcesContent":["import { useContext } from 'react';\n// @ts-ignore\nimport assignProps from '@semcore/utils/lib/assignProps';\n// @ts-ignore\nimport pick from '@semcore/utils/lib/pick';\n// @ts-ignore\nimport logger from '@semcore/utils/lib/logger';\n\nfunction assign(target, source) {\n return Object.defineProperties(\n target,\n Object.keys(source).reduce((descriptors, key) => {\n descriptors[key] = Object.getOwnPropertyDescriptor(source, key);\n return descriptors;\n }, {}),\n );\n}\n\nfunction getterMethodName(name) {\n return `get${name}Props`;\n}\n\nfunction getterMethodNameByDisplayName(displayName) {\n const displayNames = displayName.split('.');\n const name = displayNames.slice(-(displayNames.length - 1)).join('');\n return getterMethodName(name);\n}\n\nfunction flatGetterMethodNames(childComponents, parentName?: string) {\n return Object.entries(childComponents).reduce<string[]>((acc, [name, value]) => {\n if (Array.isArray(value)) {\n acc = [...acc, ...flatGetterMethodNames(value[1], name)];\n }\n name = parentName ? `${parentName}${name}` : name;\n acc.push(getterMethodName(name));\n return acc;\n }, []);\n}\n\nexport const STATIC_COMPONENT = Symbol('STATIC_COMPONENT');\nconst SELF_GETTER_METHOD = Symbol('SELF_GETTER_METHOD');\n\nfunction Enhancement(childComponents, createComponent, options) {\n const getterMethodNames = flatGetterMethodNames(childComponents);\n return {\n condition: function (Component) {\n return Boolean(Component[STATIC_COMPONENT] || Object.keys(childComponents).length);\n },\n init: function (props, WrapperComponent) {\n const getterMethods = pick(this, getterMethodNames);\n this[SELF_GETTER_METHOD] = () => {\n const selfGetterMethod = getterMethodNameByDisplayName(WrapperComponent.displayName);\n logger.warn(\n true,\n `Getter \\`${selfGetterMethod}\\` can't be fired as it is a getter of static component`,\n props['data-ui-name'] || WrapperComponent.displayName,\n );\n };\n assign(\n this,\n getterMethodNames.reduce((acc, name) => {\n const getterMethod = getterMethods[name];\n if (!getterMethod) return acc;\n acc[name] = (childrenProps = {}) => {\n const getterProps = getterMethod.call(this, childrenProps, acc[name].index);\n acc[name].index++;\n return assignProps(childrenProps, getterProps);\n };\n acc[name].index = 0;\n return acc;\n }, {}),\n );\n },\n static: function (WrapperComponent) {\n if (Object.keys(childComponents).length && !WrapperComponent.displayName) {\n throw new Error('\"displayName\" is not defined');\n }\n return Object.entries(childComponents).reduce((acc, [name, value]) => {\n let childComponents = {};\n\n if (Array.isArray(value)) {\n childComponents = value[1];\n value = value[0];\n }\n\n const prevStaticComponent = value[STATIC_COMPONENT];\n // @ts-ignore\n const prevDisplayName = value.displayName;\n // @ts-ignore\n value.displayName = WrapperComponent.displayName + '.' + name;\n value[STATIC_COMPONENT] = true;\n acc[name] = createComponent(value, childComponents, options);\n // @ts-ignore\n value.displayName = prevDisplayName;\n value[STATIC_COMPONENT] = prevStaticComponent;\n return acc;\n }, {});\n },\n context: function (context /*, WrapperComponent*/) {\n // const getterMethod = getterMethodNameByDisplayName(WrapperComponent.displayName);\n\n return {\n ...context,\n // [getterMethod]: this[SELF_GETTER_METHOD],\n ...pick(this, getterMethodNames),\n };\n },\n wrapperProps: function (props, WrapperComponent) {\n if (!WrapperComponent[STATIC_COMPONENT]) return props;\n\n const context = useContext(options.context);\n const getterMethod = context[getterMethodNameByDisplayName(WrapperComponent.displayName)];\n if (getterMethod) {\n return getterMethod(props);\n }\n return props;\n },\n render: function (render) {\n getterMethodNames.forEach((name) => {\n if (this[name] === undefined) return;\n this[name].index = 0;\n });\n return render;\n },\n };\n}\n\nexport default Enhancement;\n"],"mappings":"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"}
1
+ {"version":3,"file":"staticChildren.js","names":["useContext","assignProps","pick","logger","assign","target","source","Object","defineProperties","keys","reduce","descriptors","key","getOwnPropertyDescriptor","getterMethodName","name","getterMethodNameByDisplayName","displayName","displayNames","split","slice","length","join","flatGetterMethodNames","childComponents","parentName","entries","acc","value","Array","isArray","push","STATIC_COMPONENT","Symbol","ROOT_COMPONENT","SELF_GETTER_METHOD","Enhancement","createComponent","options","getterMethodNames","condition","Component","Boolean","init","props","WrapperComponent","getterMethods","selfGetterMethod","warn","getterMethod","childrenProps","getterProps","call","index","cache","Set","Error","prevStaticComponent","prevDisplayName","context","wrapperProps","has","add","render","forEach","undefined","clear"],"sources":["../../../src/enhancement/staticChildren.tsx"],"sourcesContent":["import { useContext } from 'react';\n// @ts-ignore\nimport assignProps from '@semcore/utils/lib/assignProps';\n// @ts-ignore\nimport pick from '@semcore/utils/lib/pick';\n// @ts-ignore\nimport logger from '@semcore/utils/lib/logger';\n\nfunction assign(target, source) {\n return Object.defineProperties(\n target,\n Object.keys(source).reduce((descriptors, key) => {\n descriptors[key] = Object.getOwnPropertyDescriptor(source, key);\n return descriptors;\n }, {}),\n );\n}\n\nexport function getterMethodName(name) {\n return `get${name}Props`;\n}\n\nexport function getterMethodNameByDisplayName(displayName = '') {\n const displayNames = displayName.split('.');\n const name = displayNames.slice(-(displayNames.length - 1)).join('');\n return getterMethodName(name);\n}\n\nfunction flatGetterMethodNames(childComponents, parentName?: string) {\n return Object.entries(childComponents).reduce<string[]>((acc, [name, value]) => {\n if (Array.isArray(value)) {\n acc = [...acc, ...flatGetterMethodNames(value[1], name)];\n }\n name = parentName ? `${parentName}${name}` : name;\n acc.push(getterMethodName(name));\n return acc;\n }, []);\n}\n\nexport const STATIC_COMPONENT = Symbol('STATIC_COMPONENT');\nexport const ROOT_COMPONENT = Symbol('ROOT_COMPONENT');\nconst SELF_GETTER_METHOD = Symbol('SELF_GETTER_METHOD');\n\nfunction Enhancement(childComponents, createComponent, options) {\n const getterMethodNames = flatGetterMethodNames(childComponents);\n return {\n condition: function (Component) {\n return Boolean(Component[STATIC_COMPONENT] || Object.keys(childComponents).length);\n },\n init: function (props, WrapperComponent) {\n const getterMethods = pick(this, getterMethodNames);\n this[SELF_GETTER_METHOD] = () => {\n const selfGetterMethod = getterMethodNameByDisplayName(WrapperComponent.displayName);\n logger.warn(\n true,\n `Getter \\`${selfGetterMethod}\\` can't be fired as it is a getter of static component`,\n props['data-ui-name'] || WrapperComponent.displayName,\n );\n };\n assign(\n this,\n getterMethodNames.reduce((acc, name) => {\n const getterMethod = getterMethods[name];\n if (!getterMethod) return acc;\n acc[name] = (childrenProps = {}) => {\n const getterProps = getterMethod.call(this, childrenProps, acc[name].index);\n return assignProps(childrenProps, getterProps);\n };\n acc[name].index = -1;\n acc[name].cache = new Set();\n return acc;\n }, {}),\n );\n },\n static: function (WrapperComponent, Component) {\n if (Object.keys(childComponents).length && !WrapperComponent.displayName) {\n throw new Error('\"displayName\" is not defined');\n }\n return Object.entries(childComponents).reduce((acc, [name, value]) => {\n let childComponents = {};\n\n if (Array.isArray(value)) {\n childComponents = value[1];\n value = value[0];\n }\n\n const prevStaticComponent = value[STATIC_COMPONENT];\n // @ts-ignore\n const prevDisplayName = value.displayName;\n // @ts-ignore\n value.displayName = WrapperComponent.displayName + '.' + name;\n value[STATIC_COMPONENT] = true;\n value[ROOT_COMPONENT] = Component[ROOT_COMPONENT] || Component;\n acc[name] = createComponent(value, childComponents, options);\n // @ts-ignore\n value.displayName = prevDisplayName;\n value[STATIC_COMPONENT] = prevStaticComponent;\n return acc;\n }, {});\n },\n context: function (context /*, WrapperComponent*/) {\n // const getterMethod = getterMethodNameByDisplayName(WrapperComponent.displayName);\n return {\n ...context,\n // [getterMethod]: this[SELF_GETTER_METHOD],\n ...pick(this, getterMethodNames),\n };\n },\n wrapperProps: function (props, WrapperComponent) {\n if (!WrapperComponent[STATIC_COMPONENT]) return props;\n const context = useContext(options.context);\n const getterMethod = context[getterMethodNameByDisplayName(WrapperComponent.displayName)];\n if (getterMethod) {\n if (!getterMethod.cache.has(this)) {\n getterMethod.cache.add(this);\n getterMethod.index++;\n }\n return getterMethod(props);\n }\n return props;\n },\n render: function (render) {\n getterMethodNames.forEach((name) => {\n if (this[name] === undefined) return;\n this[name].index = -1;\n this[name].cache.clear();\n });\n return render;\n },\n };\n}\n\nexport default Enhancement;\n"],"mappings":"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"}
package/lib/es6/index.js CHANGED
@@ -1,16 +1,17 @@
1
1
  import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
- import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
3
- import _createClass from "@babel/runtime/helpers/createClass";
4
2
  import _assertThisInitialized from "@babel/runtime/helpers/assertThisInitialized";
5
3
  import _get from "@babel/runtime/helpers/get";
4
+ import _defineProperty from "@babel/runtime/helpers/defineProperty";
5
+ import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
6
+ import _createClass from "@babel/runtime/helpers/createClass";
6
7
  import _inherits from "@babel/runtime/helpers/inherits";
7
8
  import _possibleConstructorReturn from "@babel/runtime/helpers/possibleConstructorReturn";
8
9
  import _getPrototypeOf from "@babel/runtime/helpers/getPrototypeOf";
9
- import _defineProperty from "@babel/runtime/helpers/defineProperty";
10
10
  import _extends from "@babel/runtime/helpers/extends";
11
11
  import _objectWithoutProperties from "@babel/runtime/helpers/objectWithoutProperties";
12
12
  var _excluded = ["forwardRef"],
13
- _excluded2 = ["ref"];
13
+ _excluded2 = ["forwardRef", "__WRAPPER_PROPS_BIND__"],
14
+ _excluded3 = ["ref"];
14
15
 
15
16
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
16
17
 
@@ -34,7 +35,7 @@ import childrenEnhancement, { CHILDREN_COMPONENT } from './enhancement/Children'
34
35
  import rootEnhancement from './enhancement/Root';
35
36
  import uncontrolledPropsEnhancement from './enhancement/uncontrolledProps';
36
37
  import functionDefaultPropsEnhancement from './enhancement/functionDefaultProps';
37
- import staticChildrenEnhancement, { STATIC_COMPONENT } from './enhancement/staticChildren';
38
+ import staticChildrenEnhancement, { STATIC_COMPONENT, ROOT_COMPONENT, getterMethodNameByDisplayName } from './enhancement/staticChildren';
38
39
  import inheritedNameEnhancement, { INHERITED_NAME } from './enhancement/inheritedName';
39
40
  import hoistPropsEnhancement from './enhancement/hoistProps';
40
41
  import dataNameEnhancement from './enhancement/dataName';
@@ -73,32 +74,74 @@ function createGetField(enhancements, Component, isFunction) {
73
74
  }
74
75
 
75
76
  function createForwardWrapper(Component, wrapperProps, statics, isFunction) {
76
- // @ts-ignore
77
- var WrapperComponent = /*#__PURE__*/React.forwardRef(function (_ref, ref) {
77
+ var RootComponent = Component[ROOT_COMPONENT];
78
+ var getterMethodName = getterMethodNameByDisplayName(Component === null || Component === void 0 ? void 0 : Component.displayName);
79
+ var getterMethod = RootComponent !== null && RootComponent !== void 0 && RootComponent.prototype ? RootComponent.prototype[getterMethodName] : undefined;
80
+ var useGetterIndex = (getterMethod === null || getterMethod === void 0 ? void 0 : getterMethod.length) >= 2;
81
+
82
+ function WrapperForwardRefWithBind(_ref, ref) {
78
83
  var _ref$forwardRef = _ref.forwardRef,
79
84
  forwardRef = _ref$forwardRef === void 0 ? null : _ref$forwardRef,
80
85
  other = _objectWithoutProperties(_ref, _excluded);
81
86
 
82
- // WRAPPER PROPS
83
- var _wrapperProps$reduce = wrapperProps.reduce(function (acc, enhancement) {
87
+ return /*#__PURE__*/React.createElement(BindingWrapper, _extends({}, other, {
88
+ forwardRef: useForkRef(ref, forwardRef)
89
+ }));
90
+ }
91
+
92
+ function WrapperForwardRef(_ref2, ref) {
93
+ var _ref2$forwardRef = _ref2.forwardRef,
94
+ forwardRef = _ref2$forwardRef === void 0 ? null : _ref2$forwardRef,
95
+ __WRAPPER_PROPS_BIND__ = _ref2.__WRAPPER_PROPS_BIND__,
96
+ other = _objectWithoutProperties(_ref2, _excluded2);
97
+
98
+ var _reduce = (__WRAPPER_PROPS_BIND__ || wrapperProps).reduce(function (acc, enhancement) {
84
99
  return enhancement(acc, WrapperComponent, isFunction);
85
100
  }, other),
86
- _wrapperProps$reduce$ = _wrapperProps$reduce.ref,
87
- enhancementRef = _wrapperProps$reduce$ === void 0 ? null : _wrapperProps$reduce$,
88
- props = _objectWithoutProperties(_wrapperProps$reduce, _excluded2); // @ts-ignore
89
-
101
+ _reduce$ref = _reduce.ref,
102
+ enhancementRef = _reduce$ref === void 0 ? null : _reduce$ref,
103
+ props = _objectWithoutProperties(_reduce, _excluded3);
90
104
 
91
105
  return /*#__PURE__*/React.createElement(Component, _extends({}, props, {
92
106
  forwardRef: useForkRef(enhancementRef, ref, forwardRef)
93
107
  }));
94
- });
108
+ }
109
+
110
+ var BindingWrapper = /*#__PURE__*/function (_React$Component) {
111
+ _inherits(BindingWrapper, _React$Component);
112
+
113
+ var _super = _createSuper(BindingWrapper);
114
+
115
+ function BindingWrapper() {
116
+ _classCallCheck(this, BindingWrapper);
117
+
118
+ return _super.apply(this, arguments);
119
+ }
120
+
121
+ _createClass(BindingWrapper, [{
122
+ key: "render",
123
+ value: function render() {
124
+ var _this = this;
125
+
126
+ return /*#__PURE__*/React.createElement(WrapperForwardRef, _extends({}, this.props, {
127
+ __WRAPPER_PROPS_BIND__: wrapperProps.map(function (fn) {
128
+ return fn.bind(_this);
129
+ })
130
+ }));
131
+ }
132
+ }]);
133
+
134
+ return BindingWrapper;
135
+ }(React.Component);
136
+
137
+ var WrapperComponent = /*#__PURE__*/React.forwardRef(useGetterIndex ? WrapperForwardRefWithBind : WrapperForwardRef);
95
138
  hoistNonReactStatics(WrapperComponent, Component);
96
139
  WrapperComponent.displayName = Component.displayName; // TODO: defaultProps is only empty
97
140
 
98
141
  WrapperComponent.defaultProps = Component.defaultProps; // STATIC
99
142
 
100
143
  statics.forEach(function (enhancement) {
101
- return Object.assign(WrapperComponent, enhancement(WrapperComponent, isFunction));
144
+ return Object.assign(WrapperComponent, enhancement(WrapperComponent, Component, isFunction));
102
145
  });
103
146
  return WrapperComponent;
104
147
  }
@@ -115,32 +158,32 @@ function wrapClass(OriginComponent, enhancements, Context) {
115
158
  var Component = /*#__PURE__*/function (_OriginComponent2) {
116
159
  _inherits(Component, _OriginComponent2);
117
160
 
118
- var _super = _createSuper(Component);
161
+ var _super2 = _createSuper(Component);
119
162
 
120
163
  function Component(props, context) {
121
- var _this;
164
+ var _this2;
122
165
 
123
166
  _classCallCheck(this, Component);
124
167
 
125
- _this = _super.call(this, props, context); // INITS
168
+ _this2 = _super2.call(this, props, context); // INITS
126
169
 
127
- _defineProperty(_assertThisInitialized(_this), CORE_AS_PROPS, null);
170
+ _defineProperty(_assertThisInitialized(_this2), CORE_AS_PROPS, null);
128
171
 
129
- _defineProperty(_assertThisInitialized(_this), CORE_INSTANCE, WrapperComponent);
172
+ _defineProperty(_assertThisInitialized(_this2), CORE_INSTANCE, WrapperComponent);
130
173
 
131
- _defineProperty(_assertThisInitialized(_this), CORE_INIT, false);
174
+ _defineProperty(_assertThisInitialized(_this2), CORE_INIT, false);
132
175
 
133
176
  inits.forEach(function (enhancement) {
134
- return enhancement.call(_assertThisInitialized(_this), props, WrapperComponent, false);
177
+ return enhancement.call(_assertThisInitialized(_this2), props, WrapperComponent, false);
135
178
  });
136
- _this[CORE_INIT] = true;
137
- return _this;
179
+ _this2[CORE_INIT] = true;
180
+ return _this2;
138
181
  }
139
182
 
140
183
  _createClass(Component, [{
141
184
  key: "asProps",
142
185
  get: function get() {
143
- var _this2 = this;
186
+ var _this3 = this;
144
187
 
145
188
  // TODO if not production
146
189
  if (!this[CORE_INIT]) {
@@ -150,7 +193,7 @@ function wrapClass(OriginComponent, enhancements, Context) {
150
193
  if (!this[CORE_AS_PROPS]) {
151
194
  // PROPS
152
195
  this[CORE_AS_PROPS] = props.reduce(function (acc, enhancement) {
153
- return enhancement.call(_this2, acc, WrapperComponent, false);
196
+ return enhancement.call(_this3, acc, WrapperComponent, false);
154
197
  }, this.props);
155
198
  }
156
199
 
@@ -159,18 +202,18 @@ function wrapClass(OriginComponent, enhancements, Context) {
159
202
  }, {
160
203
  key: "setContext",
161
204
  value: function setContext() {
162
- var _this3 = this;
205
+ var _this4 = this;
163
206
 
164
207
  var contextProps = _get(_getPrototypeOf(Component.prototype), "setContext", this) ? _get(_getPrototypeOf(Component.prototype), "setContext", this).call(this) : {}; // CONTEXT
165
208
 
166
209
  return contexts.reduce(function (acc, enhancement) {
167
- return enhancement.call(_this3, acc, WrapperComponent, false);
210
+ return enhancement.call(_this4, acc, WrapperComponent, false);
168
211
  }, contextProps);
169
212
  }
170
213
  }, {
171
214
  key: "render",
172
215
  value: function render() {
173
- var _this4 = this;
216
+ var _this5 = this;
174
217
 
175
218
  this[CORE_AS_PROPS] = null; // TODO if not production
176
219
 
@@ -182,7 +225,7 @@ function wrapClass(OriginComponent, enhancements, Context) {
182
225
  var ctx = this.setContext(); // RENDER
183
226
 
184
227
  var render = renders.reduce(function (acc, enhancement) {
185
- return enhancement.call(_this4, acc, asProps, WrapperComponent, false);
228
+ return enhancement.call(_this5, acc, asProps, WrapperComponent, false);
186
229
  }, _get(_getPrototypeOf(Component.prototype), "render", this).call(this));
187
230
 
188
231
  if (!WrapperComponent[STATIC_COMPONENT] && !isEmptyObject(ctx)) {
@@ -251,8 +294,8 @@ function wrapFunction(OriginComponent, enhancements, Context) {
251
294
  }
252
295
 
253
296
  function wrapCore(OriginComponent, enhancements, Context) {
254
- var Component = function Component(_ref2) {
255
- var Root = _ref2.Root;
297
+ var Component = function Component(_ref3) {
298
+ var Root = _ref3.Root;
256
299
  return /*#__PURE__*/React.createElement(Root, {
257
300
  render: OriginComponent
258
301
  });
@@ -360,6 +403,6 @@ function createBaseComponent(OriginComponent) {
360
403
  export * from './Component';
361
404
  export * from './styled';
362
405
  export * from './register';
363
- export { createBaseComponent, register, CREATE_COMPONENT, CORE_INSTANCE, CONTEXT_COMPONENT, CHILDREN_COMPONENT, INHERITED_NAME, CORE_COMPONENT, STATIC_COMPONENT, assignProps };
406
+ export { createBaseComponent, register, CREATE_COMPONENT, CORE_INSTANCE, CONTEXT_COMPONENT, CHILDREN_COMPONENT, INHERITED_NAME, CORE_COMPONENT, STATIC_COMPONENT, ROOT_COMPONENT, assignProps };
364
407
  export default createComponent;
365
408
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["React","useRef","hoistNonReactStatics","useForkRef","useEnhancedEffect","_assignProps","Component","register","childrenEnhancement","CHILDREN_COMPONENT","rootEnhancement","uncontrolledPropsEnhancement","functionDefaultPropsEnhancement","staticChildrenEnhancement","STATIC_COMPONENT","inheritedNameEnhancement","INHERITED_NAME","hoistPropsEnhancement","dataNameEnhancement","enhanceEnhancement","styleEnhancement","bindHandlerEnhancement","CORE_COMPONENT","Symbol","CORE_INSTANCE","CORE_AS_PROPS","CORE_INIT","CONTEXT_COMPONENT","CREATE_COMPONENT","PARENT_COMPONENTS","isEmptyObject","obj","Object","getOwnPropertyNames","length","getOwnPropertySymbols","getPrototypeOf","prototype","createGetField","enhancements","isFunction","getField","key","filter","enhancement","condition","reduce","acc","item","push","createForwardWrapper","wrapperProps","statics","WrapperComponent","forwardRef","ref","other","enhancementRef","props","displayName","defaultProps","forEach","assign","wrapClass","OriginComponent","Context","inits","renders","contexts","context","call","Error","contextProps","asProps","ctx","setContext","render","wrapFunction","memo","FunctionMemoComponent","selfRef","firstRender","current","wrapCore","Root","createComposeComponent","PureComponent","isPrototypeOf","assignProps","p1","p2","createComponent","childComponents","options","createContext","parent","parents","Array","isArray","wholeFamily","map","f","_OriginComponent","_childComponents","_options","createBaseComponent"],"sources":["../../src/index.tsx"],"sourcesContent":["import React, { ForwardRefExoticComponent, RefAttributes, useRef } from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\n// @ts-ignore\nimport { useForkRef } from '@semcore/utils/lib/ref';\n// @ts-ignore\nimport useEnhancedEffect from '@semcore/utils/lib/use/useEnhancedEffect';\n// @ts-ignore\nimport _assignProps from '@semcore/utils/lib/assignProps';\n\nimport { Component, PropsWithRenderFnChildren } from './Component';\nimport register from './register';\n\nimport childrenEnhancement, { CHILDREN_COMPONENT } from './enhancement/Children';\nimport rootEnhancement from './enhancement/Root';\nimport uncontrolledPropsEnhancement from './enhancement/uncontrolledProps';\nimport functionDefaultPropsEnhancement from './enhancement/functionDefaultProps';\nimport staticChildrenEnhancement, { STATIC_COMPONENT } from './enhancement/staticChildren';\nimport inheritedNameEnhancement, { INHERITED_NAME } from './enhancement/inheritedName';\nimport hoistPropsEnhancement from './enhancement/hoistProps';\nimport dataNameEnhancement from './enhancement/dataName';\nimport enhanceEnhancement from './enhancement/enhance';\nimport styleEnhancement from './enhancement/style';\nimport bindHandlerEnhancement from './enhancement/bindHandler';\n\nconst CORE_COMPONENT = Symbol('CORE_COMPONENT');\nconst CORE_INSTANCE = Symbol('CORE_INSTANCE');\nconst CORE_AS_PROPS = Symbol('CORE_AS_PROPS');\nconst CORE_INIT = Symbol('CORE_INIT');\nconst CONTEXT_COMPONENT = Symbol('CONTEXT_COMPONENT');\nconst CREATE_COMPONENT = Symbol('CREATE_COMPONENT');\nconst PARENT_COMPONENTS = Symbol('PARENT_COMPONENTS');\n\nfunction isEmptyObject(obj) {\n return (\n Object.getOwnPropertyNames(obj).length === 0 &&\n Object.getOwnPropertySymbols && // For IE 11\n Object.getOwnPropertySymbols(obj).length === 0 &&\n Object.getPrototypeOf(obj) === Object.prototype\n );\n}\n\nfunction createGetField(enhancements, Component, isFunction) {\n return function getField(key) {\n return enhancements\n .filter((enhancement) => {\n if (!enhancement.condition) {\n return true;\n }\n return enhancement.condition(Component, isFunction);\n })\n .reduce((acc, item) => {\n if (item[key]) {\n acc.push(item[key]);\n }\n return acc;\n }, []);\n };\n}\n\nfunction createForwardWrapper(Component, wrapperProps, statics, isFunction) {\n // @ts-ignore\n const WrapperComponent = React.forwardRef(function ({ forwardRef = null, ...other }, ref) {\n // WRAPPER PROPS\n const { ref: enhancementRef = null, ...props } = wrapperProps.reduce(\n (acc, enhancement) => enhancement(acc, WrapperComponent, isFunction),\n other,\n );\n // @ts-ignore\n return <Component {...props} forwardRef={useForkRef(enhancementRef, ref, forwardRef)} />;\n });\n\n hoistNonReactStatics(WrapperComponent, Component);\n\n WrapperComponent.displayName = Component.displayName;\n // TODO: defaultProps is only empty\n WrapperComponent.defaultProps = Component.defaultProps;\n // STATIC\n statics.forEach((enhancement) =>\n Object.assign(WrapperComponent, enhancement(WrapperComponent, isFunction)),\n );\n\n return WrapperComponent;\n}\n\nfunction wrapClass(OriginComponent, enhancements, Context) {\n const getField = createGetField(enhancements, OriginComponent, false);\n\n const inits = getField('init');\n const props = getField('asProps');\n const renders = getField('render');\n const statics = getField('static');\n const wrapperProps = getField('wrapperProps');\n const contexts = getField('context');\n\n class Component extends OriginComponent {\n [CORE_AS_PROPS] = null;\n [CORE_INSTANCE] = WrapperComponent;\n [CORE_INIT] = false;\n\n constructor(props, context) {\n super(props, context);\n // INITS\n inits.forEach((enhancement) => enhancement.call(this, props, WrapperComponent, false));\n this[CORE_INIT] = true;\n }\n\n get asProps() {\n // TODO if not production\n if (!this[CORE_INIT]) {\n throw new Error('Can not call asProps in constructor');\n }\n if (!this[CORE_AS_PROPS]) {\n // PROPS\n this[CORE_AS_PROPS] = props.reduce(\n (acc, enhancement) => enhancement.call(this, acc, WrapperComponent, false),\n this.props,\n );\n }\n return this[CORE_AS_PROPS];\n }\n\n setContext() {\n const contextProps = super.setContext ? super.setContext() : {};\n // CONTEXT\n return contexts.reduce(\n (acc, enhancement) => enhancement.call(this, acc, WrapperComponent, false),\n contextProps,\n );\n }\n\n render() {\n this[CORE_AS_PROPS] = null;\n // TODO if not production\n if (!super.render) {\n throw new Error('Component `render` method is not defined');\n }\n const asProps = this.asProps;\n const ctx = this.setContext();\n // RENDER\n const render = renders.reduce(\n (acc, enhancement) => enhancement.call(this, acc, asProps, WrapperComponent, false),\n super.render(),\n );\n if (!WrapperComponent[STATIC_COMPONENT] && !isEmptyObject(ctx)) {\n return <Context.Provider value={{ ...asProps, ...ctx }}>{render}</Context.Provider>;\n } else {\n return render;\n }\n }\n }\n\n const WrapperComponent = createForwardWrapper(Component, wrapperProps, statics, false);\n return WrapperComponent;\n}\n\nfunction wrapFunction(OriginComponent, enhancements, Context) {\n const getField = createGetField(enhancements, OriginComponent, true);\n\n const inits = getField('init');\n const props = getField('asProps');\n const renders = getField('render');\n const statics = getField('static');\n const wrapperProps = getField('wrapperProps');\n const contexts = getField('context');\n\n const Component = React.memo(function FunctionMemoComponent(other) {\n const selfRef = useRef({});\n const firstRender = useRef(true);\n useEnhancedEffect(() => {\n firstRender.current = false;\n }, []);\n if (firstRender.current) {\n // INITS\n inits.forEach((enhancement) =>\n enhancement.call(selfRef.current, other, WrapperComponent, true),\n );\n }\n // PROPS\n const asProps = props.reduce(\n (acc, enhancement) => enhancement.call(selfRef.current, acc, WrapperComponent, true),\n other,\n );\n // CONTEXT\n const ctx = contexts.reduce(\n (acc, enhancement) => enhancement.call(selfRef.current, acc, WrapperComponent, true),\n {},\n );\n\n // RENDER\n const render = renders.reduce(\n (acc, enhancement) => enhancement.call(selfRef.current, acc, asProps, WrapperComponent, true),\n <OriginComponent {...asProps} />,\n );\n\n if (!WrapperComponent[STATIC_COMPONENT] && !isEmptyObject(ctx)) {\n return <Context.Provider value={{ ...asProps, ...ctx }}>{render}</Context.Provider>;\n } else {\n return render;\n }\n });\n Object.assign(Component, OriginComponent);\n const WrapperComponent = createForwardWrapper(Component, wrapperProps, statics, true);\n return WrapperComponent;\n}\n\nfunction wrapCore(OriginComponent, enhancements, Context) {\n const Component = function ({ Root }) {\n return <Root render={OriginComponent} />;\n };\n hoistNonReactStatics(Component, OriginComponent);\n Component.displayName = OriginComponent.displayName;\n Component.defaultProps = OriginComponent.defaultProps;\n return wrapFunction(Component, enhancements, Context);\n}\n\nfunction createComposeComponent(OriginComponent, Context, enhancements): any {\n if (\n React.PureComponent.isPrototypeOf(OriginComponent) ||\n React.Component.isPrototypeOf(OriginComponent)\n ) {\n if (OriginComponent.prototype instanceof Component) {\n return wrapClass(OriginComponent, enhancements, Context);\n } else {\n throw new Error('Must inherit from our component');\n }\n } else if (typeof OriginComponent === 'function') {\n return wrapFunction(OriginComponent, enhancements, Context);\n } else if (OriginComponent[CORE_COMPONENT]) {\n return wrapCore(OriginComponent, enhancements, Context);\n } else {\n throw new Error('Must be a React component');\n }\n}\n\nexport type PropsAndRef<T, Ctx, UCProps> = PropsWithRenderFnChildren<T, Ctx, UCProps> &\n RefAttributes<unknown>;\nexport type ForwardRefComponent<T, Ctx, UCProps> = ForwardRefExoticComponent<\n PropsAndRef<T, Ctx, UCProps>\n>;\ntype ComponentOrProps<T, Context, UCProps> = T extends [infer ParentProps, infer ChildProps]\n ? ComponentType<ParentProps, ChildProps, Context, UCProps>\n : ForwardRefComponent<T, Context, UCProps>;\n\nexport type ComponentType<\n ComponentProps,\n ChildComponentProps = {},\n ContextType = {},\n UCProps = {},\n FNType = null,\n> = (FNType extends null\n ? ForwardRefComponent<ComponentProps, ContextType, UCProps>\n : FNType & { displayName: string }) & {\n [K in keyof ChildComponentProps]: ComponentOrProps<ChildComponentProps[K], ContextType, UCProps>;\n} & {\n [CORE_COMPONENT]: boolean;\n [CREATE_COMPONENT]: () => ComponentType<\n ComponentProps,\n ChildComponentProps,\n ContextType,\n UCProps\n >;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ninterface ClassWithUncontrolledProps<Props> {\n uncontrolledProps(): unknown;\n}\n\nfunction assignProps(p1, p2) {\n return _assignProps(p2, p1);\n}\n\nfunction createComponent<ComponentProps, ChildComponentProps = {}, ContextType = {}, FNType = null>(\n OriginComponent,\n childComponents = {},\n options: {\n context?: React.Context<ContextType>;\n parent?: ComponentType<unknown> | ComponentType<unknown>[];\n enhancements?: [any];\n } = {},\n): ComponentType<\n ComponentProps extends Component<infer Props> ? Props : ComponentProps,\n ChildComponentProps,\n ContextType,\n ComponentProps extends ClassWithUncontrolledProps<any>\n ? ReturnType<ComponentProps['uncontrolledProps']>\n : { [key: string]: (arg: unknown) => void },\n FNType\n> {\n const {\n context = React.createContext<ContextType>({} as ContextType),\n parent = [],\n enhancements = [],\n } = options;\n let parents = Array.isArray(parent) ? parent : [parent];\n if (parents.length) {\n const wholeFamily = parents.reduce((acc, parent) => {\n if (parent[PARENT_COMPONENTS]) {\n acc = [...parent[PARENT_COMPONENTS], ...acc];\n }\n return acc;\n }, parents);\n OriginComponent[PARENT_COMPONENTS] = wholeFamily;\n parents = wholeFamily;\n }\n if (OriginComponent[CORE_COMPONENT]) {\n parents.push(OriginComponent);\n }\n const Component = createComposeComponent(OriginComponent, context, [\n // @ts-ignore\n ...enhancements.map((f) => f(context, parents, createComponent, childComponents)),\n bindHandlerEnhancement(),\n childrenEnhancement(context, parents),\n // root must be under the children\n rootEnhancement(),\n uncontrolledPropsEnhancement(),\n staticChildrenEnhancement(childComponents, createComponent, {\n context,\n parent,\n enhancements,\n }),\n // functionDefaultProps must be under the staticChild\n functionDefaultPropsEnhancement(),\n // inheritedName must be under the staticChild\n inheritedNameEnhancement(),\n // dataName must be under the staticChild\n dataNameEnhancement(),\n // enhanceEnhancement must be under the functionDefaultPropsEnhancement\n enhanceEnhancement(),\n styleEnhancement(childComponents, context),\n // must be the last one so any properties can be raised\n hoistPropsEnhancement(childComponents, context),\n ]);\n Component[CONTEXT_COMPONENT] = context;\n Component[CREATE_COMPONENT] = function (\n _OriginComponent = OriginComponent,\n _childComponents = childComponents,\n _options = options,\n ) {\n return createComponent(_OriginComponent, _childComponents, _options);\n };\n Component[CORE_COMPONENT] = true;\n return Component;\n}\n\nfunction createBaseComponent<ComponentProps>(OriginComponent): ComponentType<ComponentProps> {\n let Component = null;\n if (\n !React.PureComponent.isPrototypeOf(OriginComponent) &&\n !React.Component.isPrototypeOf(OriginComponent) &&\n typeof OriginComponent === 'function'\n ) {\n Component = React.forwardRef(OriginComponent);\n Component.displayName = OriginComponent.displayName;\n Component.defaultProps = {\n 'data-ui-name': OriginComponent.displayName,\n ...OriginComponent.defaultProps,\n };\n Component[CORE_COMPONENT] = true;\n } else {\n throw new Error('createBaseComponent accepts only functional component');\n }\n return Component;\n}\n\nexport * from './Component';\nexport * from './styled';\nexport * from './register';\nexport {\n createBaseComponent,\n register,\n CREATE_COMPONENT,\n CORE_INSTANCE,\n CONTEXT_COMPONENT,\n CHILDREN_COMPONENT,\n INHERITED_NAME,\n CORE_COMPONENT,\n STATIC_COMPONENT,\n assignProps,\n};\nexport default createComponent;\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["React","useRef","hoistNonReactStatics","useForkRef","useEnhancedEffect","_assignProps","Component","register","childrenEnhancement","CHILDREN_COMPONENT","rootEnhancement","uncontrolledPropsEnhancement","functionDefaultPropsEnhancement","staticChildrenEnhancement","STATIC_COMPONENT","ROOT_COMPONENT","getterMethodNameByDisplayName","inheritedNameEnhancement","INHERITED_NAME","hoistPropsEnhancement","dataNameEnhancement","enhanceEnhancement","styleEnhancement","bindHandlerEnhancement","CORE_COMPONENT","Symbol","CORE_INSTANCE","CORE_AS_PROPS","CORE_INIT","CONTEXT_COMPONENT","CREATE_COMPONENT","PARENT_COMPONENTS","isEmptyObject","obj","Object","getOwnPropertyNames","length","getOwnPropertySymbols","getPrototypeOf","prototype","createGetField","enhancements","isFunction","getField","key","filter","enhancement","condition","reduce","acc","item","push","createForwardWrapper","wrapperProps","statics","RootComponent","getterMethodName","displayName","getterMethod","undefined","useGetterIndex","WrapperForwardRefWithBind","ref","forwardRef","other","WrapperForwardRef","__WRAPPER_PROPS_BIND__","WrapperComponent","enhancementRef","props","BindingWrapper","map","fn","bind","defaultProps","forEach","assign","wrapClass","OriginComponent","Context","inits","renders","contexts","context","call","Error","contextProps","asProps","ctx","setContext","render","wrapFunction","memo","FunctionMemoComponent","selfRef","firstRender","current","wrapCore","Root","createComposeComponent","PureComponent","isPrototypeOf","assignProps","p1","p2","createComponent","childComponents","options","createContext","parent","parents","Array","isArray","wholeFamily","f","_OriginComponent","_childComponents","_options","createBaseComponent"],"sources":["../../src/index.tsx"],"sourcesContent":["import React, { ForwardRefExoticComponent, RefAttributes, useRef } from 'react';\nimport hoistNonReactStatics from 'hoist-non-react-statics';\n// @ts-ignore\nimport { useForkRef } from '@semcore/utils/lib/ref';\n// @ts-ignore\nimport useEnhancedEffect from '@semcore/utils/lib/use/useEnhancedEffect';\n// @ts-ignore\nimport _assignProps from '@semcore/utils/lib/assignProps';\n\nimport { Component, PropsWithRenderFnChildren } from './Component';\nimport register from './register';\n\nimport childrenEnhancement, { CHILDREN_COMPONENT } from './enhancement/Children';\nimport rootEnhancement from './enhancement/Root';\nimport uncontrolledPropsEnhancement from './enhancement/uncontrolledProps';\nimport functionDefaultPropsEnhancement from './enhancement/functionDefaultProps';\nimport staticChildrenEnhancement, {\n STATIC_COMPONENT,\n ROOT_COMPONENT,\n getterMethodNameByDisplayName,\n} from './enhancement/staticChildren';\nimport inheritedNameEnhancement, { INHERITED_NAME } from './enhancement/inheritedName';\nimport hoistPropsEnhancement from './enhancement/hoistProps';\nimport dataNameEnhancement from './enhancement/dataName';\nimport enhanceEnhancement from './enhancement/enhance';\nimport styleEnhancement from './enhancement/style';\nimport bindHandlerEnhancement from './enhancement/bindHandler';\n\nconst CORE_COMPONENT = Symbol('CORE_COMPONENT');\nconst CORE_INSTANCE = Symbol('CORE_INSTANCE');\nconst CORE_AS_PROPS = Symbol('CORE_AS_PROPS');\nconst CORE_INIT = Symbol('CORE_INIT');\nconst CONTEXT_COMPONENT = Symbol('CONTEXT_COMPONENT');\nconst CREATE_COMPONENT = Symbol('CREATE_COMPONENT');\nconst PARENT_COMPONENTS = Symbol('PARENT_COMPONENTS');\n\nfunction isEmptyObject(obj) {\n return (\n Object.getOwnPropertyNames(obj).length === 0 &&\n Object.getOwnPropertySymbols && // For IE 11\n Object.getOwnPropertySymbols(obj).length === 0 &&\n Object.getPrototypeOf(obj) === Object.prototype\n );\n}\n\nfunction createGetField(enhancements, Component, isFunction) {\n return function getField(key) {\n return enhancements\n .filter((enhancement) => {\n if (!enhancement.condition) {\n return true;\n }\n return enhancement.condition(Component, isFunction);\n })\n .reduce((acc, item) => {\n if (item[key]) {\n acc.push(item[key]);\n }\n return acc;\n }, []);\n };\n}\n\nfunction createForwardWrapper(Component, wrapperProps, statics, isFunction) {\n const RootComponent = Component[ROOT_COMPONENT];\n const getterMethodName = getterMethodNameByDisplayName(Component?.displayName);\n const getterMethod = RootComponent?.prototype\n ? RootComponent.prototype[getterMethodName]\n : undefined;\n const useGetterIndex = getterMethod?.length >= 2;\n\n function WrapperForwardRefWithBind({ forwardRef = null, ...other }, ref) {\n return <BindingWrapper {...other} forwardRef={useForkRef(ref, forwardRef)} />;\n }\n\n function WrapperForwardRef({ forwardRef = null, __WRAPPER_PROPS_BIND__, ...other }, ref) {\n const { ref: enhancementRef = null, ...props } = (\n __WRAPPER_PROPS_BIND__ || wrapperProps\n ).reduce((acc, enhancement) => enhancement(acc, WrapperComponent, isFunction), other);\n return <Component {...props} forwardRef={useForkRef(enhancementRef, ref, forwardRef)} />;\n }\n\n class BindingWrapper extends React.Component<any> {\n render() {\n return (\n <WrapperForwardRef\n {...this.props}\n __WRAPPER_PROPS_BIND__={wrapperProps.map((fn) => fn.bind(this))}\n />\n );\n }\n }\n\n const WrapperComponent = React.forwardRef(\n useGetterIndex ? WrapperForwardRefWithBind : WrapperForwardRef,\n );\n\n hoistNonReactStatics(WrapperComponent, Component);\n\n WrapperComponent.displayName = Component.displayName;\n // TODO: defaultProps is only empty\n WrapperComponent.defaultProps = Component.defaultProps;\n // STATIC\n statics.forEach((enhancement) =>\n Object.assign(WrapperComponent, enhancement(WrapperComponent, Component, isFunction)),\n );\n\n return WrapperComponent;\n}\n\nfunction wrapClass(OriginComponent, enhancements, Context) {\n const getField = createGetField(enhancements, OriginComponent, false);\n\n const inits = getField('init');\n const props = getField('asProps');\n const renders = getField('render');\n const statics = getField('static');\n const wrapperProps = getField('wrapperProps');\n const contexts = getField('context');\n\n class Component extends OriginComponent {\n [CORE_AS_PROPS] = null;\n [CORE_INSTANCE] = WrapperComponent;\n [CORE_INIT] = false;\n\n constructor(props, context) {\n super(props, context);\n // INITS\n inits.forEach((enhancement) => enhancement.call(this, props, WrapperComponent, false));\n this[CORE_INIT] = true;\n }\n\n get asProps() {\n // TODO if not production\n if (!this[CORE_INIT]) {\n throw new Error('Can not call asProps in constructor');\n }\n if (!this[CORE_AS_PROPS]) {\n // PROPS\n this[CORE_AS_PROPS] = props.reduce(\n (acc, enhancement) => enhancement.call(this, acc, WrapperComponent, false),\n this.props,\n );\n }\n return this[CORE_AS_PROPS];\n }\n\n setContext() {\n const contextProps = super.setContext ? super.setContext() : {};\n // CONTEXT\n return contexts.reduce(\n (acc, enhancement) => enhancement.call(this, acc, WrapperComponent, false),\n contextProps,\n );\n }\n\n render() {\n this[CORE_AS_PROPS] = null;\n // TODO if not production\n if (!super.render) {\n throw new Error('Component `render` method is not defined');\n }\n const asProps = this.asProps;\n const ctx = this.setContext();\n // RENDER\n const render = renders.reduce(\n (acc, enhancement) => enhancement.call(this, acc, asProps, WrapperComponent, false),\n super.render(),\n );\n if (!WrapperComponent[STATIC_COMPONENT] && !isEmptyObject(ctx)) {\n return <Context.Provider value={{ ...asProps, ...ctx }}>{render}</Context.Provider>;\n } else {\n return render;\n }\n }\n }\n\n const WrapperComponent = createForwardWrapper(Component, wrapperProps, statics, false);\n return WrapperComponent;\n}\n\nfunction wrapFunction(OriginComponent, enhancements, Context) {\n const getField = createGetField(enhancements, OriginComponent, true);\n\n const inits = getField('init');\n const props = getField('asProps');\n const renders = getField('render');\n const statics = getField('static');\n const wrapperProps = getField('wrapperProps');\n const contexts = getField('context');\n\n const Component = React.memo(function FunctionMemoComponent(other) {\n const selfRef = useRef({});\n const firstRender = useRef(true);\n useEnhancedEffect(() => {\n firstRender.current = false;\n }, []);\n if (firstRender.current) {\n // INITS\n inits.forEach((enhancement) =>\n enhancement.call(selfRef.current, other, WrapperComponent, true),\n );\n }\n // PROPS\n const asProps = props.reduce(\n (acc, enhancement) => enhancement.call(selfRef.current, acc, WrapperComponent, true),\n other,\n );\n // CONTEXT\n const ctx = contexts.reduce(\n (acc, enhancement) => enhancement.call(selfRef.current, acc, WrapperComponent, true),\n {},\n );\n\n // RENDER\n const render = renders.reduce(\n (acc, enhancement) => enhancement.call(selfRef.current, acc, asProps, WrapperComponent, true),\n <OriginComponent {...asProps} />,\n );\n\n if (!WrapperComponent[STATIC_COMPONENT] && !isEmptyObject(ctx)) {\n return <Context.Provider value={{ ...asProps, ...ctx }}>{render}</Context.Provider>;\n } else {\n return render;\n }\n });\n Object.assign(Component, OriginComponent);\n const WrapperComponent = createForwardWrapper(Component, wrapperProps, statics, true);\n return WrapperComponent;\n}\n\nfunction wrapCore(OriginComponent, enhancements, Context) {\n const Component = function ({ Root }) {\n return <Root render={OriginComponent} />;\n };\n hoistNonReactStatics(Component, OriginComponent);\n Component.displayName = OriginComponent.displayName;\n Component.defaultProps = OriginComponent.defaultProps;\n return wrapFunction(Component, enhancements, Context);\n}\n\nfunction createComposeComponent(OriginComponent, Context, enhancements): any {\n if (\n React.PureComponent.isPrototypeOf(OriginComponent) ||\n React.Component.isPrototypeOf(OriginComponent)\n ) {\n if (OriginComponent.prototype instanceof Component) {\n return wrapClass(OriginComponent, enhancements, Context);\n } else {\n throw new Error('Must inherit from our component');\n }\n } else if (typeof OriginComponent === 'function') {\n return wrapFunction(OriginComponent, enhancements, Context);\n } else if (OriginComponent[CORE_COMPONENT]) {\n return wrapCore(OriginComponent, enhancements, Context);\n } else {\n throw new Error('Must be a React component');\n }\n}\n\nexport type PropsAndRef<T, Ctx, UCProps> = PropsWithRenderFnChildren<T, Ctx, UCProps> &\n RefAttributes<unknown>;\nexport type ForwardRefComponent<T, Ctx, UCProps> = ForwardRefExoticComponent<\n PropsAndRef<T, Ctx, UCProps>\n>;\ntype ComponentOrProps<T, Context, UCProps> = T extends [infer ParentProps, infer ChildProps]\n ? ComponentType<ParentProps, ChildProps, Context, UCProps>\n : ForwardRefComponent<T, Context, UCProps>;\n\nexport type ComponentType<\n ComponentProps,\n ChildComponentProps = {},\n ContextType = {},\n UCProps = {},\n FNType = null,\n> = (FNType extends null\n ? ForwardRefComponent<ComponentProps, ContextType, UCProps>\n : FNType & { displayName: string }) & {\n [K in keyof ChildComponentProps]: ComponentOrProps<ChildComponentProps[K], ContextType, UCProps>;\n} & {\n [CORE_COMPONENT]: boolean;\n [CREATE_COMPONENT]: () => ComponentType<\n ComponentProps,\n ChildComponentProps,\n ContextType,\n UCProps\n >;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\ninterface ClassWithUncontrolledProps<Props> {\n uncontrolledProps(): unknown;\n}\n\nfunction assignProps(p1, p2) {\n return _assignProps(p2, p1);\n}\n\nfunction createComponent<ComponentProps, ChildComponentProps = {}, ContextType = {}, FNType = null>(\n OriginComponent,\n childComponents = {},\n options: {\n context?: React.Context<ContextType>;\n parent?: ComponentType<unknown> | ComponentType<unknown>[];\n enhancements?: [any];\n } = {},\n): ComponentType<\n ComponentProps extends Component<infer Props> ? Props : ComponentProps,\n ChildComponentProps,\n ContextType,\n ComponentProps extends ClassWithUncontrolledProps<any>\n ? ReturnType<ComponentProps['uncontrolledProps']>\n : { [key: string]: (arg: unknown) => void },\n FNType\n> {\n const {\n context = React.createContext<ContextType>({} as ContextType),\n parent = [],\n enhancements = [],\n } = options;\n let parents = Array.isArray(parent) ? parent : [parent];\n if (parents.length) {\n const wholeFamily = parents.reduce((acc, parent) => {\n if (parent[PARENT_COMPONENTS]) {\n acc = [...parent[PARENT_COMPONENTS], ...acc];\n }\n return acc;\n }, parents);\n OriginComponent[PARENT_COMPONENTS] = wholeFamily;\n parents = wholeFamily;\n }\n if (OriginComponent[CORE_COMPONENT]) {\n parents.push(OriginComponent);\n }\n const Component = createComposeComponent(OriginComponent, context, [\n // @ts-ignore\n ...enhancements.map((f) => f(context, parents, createComponent, childComponents)),\n bindHandlerEnhancement(),\n childrenEnhancement(context, parents),\n // root must be under the children\n rootEnhancement(),\n uncontrolledPropsEnhancement(),\n staticChildrenEnhancement(childComponents, createComponent, {\n context,\n parent,\n enhancements,\n }),\n // functionDefaultProps must be under the staticChild\n functionDefaultPropsEnhancement(),\n // inheritedName must be under the staticChild\n inheritedNameEnhancement(),\n // dataName must be under the staticChild\n dataNameEnhancement(),\n // enhanceEnhancement must be under the functionDefaultPropsEnhancement\n enhanceEnhancement(),\n styleEnhancement(childComponents, context),\n // must be the last one so any properties can be raised\n hoistPropsEnhancement(childComponents, context),\n ]);\n Component[CONTEXT_COMPONENT] = context;\n Component[CREATE_COMPONENT] = function (\n _OriginComponent = OriginComponent,\n _childComponents = childComponents,\n _options = options,\n ) {\n return createComponent(_OriginComponent, _childComponents, _options);\n };\n Component[CORE_COMPONENT] = true;\n return Component;\n}\n\nfunction createBaseComponent<ComponentProps>(OriginComponent): ComponentType<ComponentProps> {\n let Component = null;\n if (\n !React.PureComponent.isPrototypeOf(OriginComponent) &&\n !React.Component.isPrototypeOf(OriginComponent) &&\n typeof OriginComponent === 'function'\n ) {\n Component = React.forwardRef(OriginComponent);\n Component.displayName = OriginComponent.displayName;\n Component.defaultProps = {\n 'data-ui-name': OriginComponent.displayName,\n ...OriginComponent.defaultProps,\n };\n Component[CORE_COMPONENT] = true;\n } else {\n throw new Error('createBaseComponent accepts only functional component');\n }\n return Component;\n}\n\nexport * from './Component';\nexport * from './styled';\nexport * from './register';\nexport {\n createBaseComponent,\n register,\n CREATE_COMPONENT,\n CORE_INSTANCE,\n CONTEXT_COMPONENT,\n CHILDREN_COMPONENT,\n INHERITED_NAME,\n CORE_COMPONENT,\n STATIC_COMPONENT,\n ROOT_COMPONENT,\n assignProps,\n};\nexport default createComponent;\n"],"mappings":"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"}
@@ -1,8 +1,11 @@
1
+ export declare function getterMethodName(name: any): string;
2
+ export declare function getterMethodNameByDisplayName(displayName?: string): string;
1
3
  export declare const STATIC_COMPONENT: unique symbol;
4
+ export declare const ROOT_COMPONENT: unique symbol;
2
5
  declare function Enhancement(childComponents: any, createComponent: any, options: any): {
3
6
  condition: (Component: any) => boolean;
4
7
  init: (props: any, WrapperComponent: any) => void;
5
- static: (WrapperComponent: any) => {};
8
+ static: (WrapperComponent: any, Component: any) => {};
6
9
  context: (context: any) => any;
7
10
  wrapperProps: (props: any, WrapperComponent: any) => any;
8
11
  render: (render: any) => any;
@@ -2,7 +2,7 @@ import React, { ForwardRefExoticComponent, RefAttributes } from 'react';
2
2
  import { Component, PropsWithRenderFnChildren } from './Component';
3
3
  import register from './register';
4
4
  import { CHILDREN_COMPONENT } from './enhancement/Children';
5
- import { STATIC_COMPONENT } from './enhancement/staticChildren';
5
+ import { STATIC_COMPONENT, ROOT_COMPONENT } from './enhancement/staticChildren';
6
6
  import { INHERITED_NAME } from './enhancement/inheritedName';
7
7
  declare const CORE_COMPONENT: unique symbol;
8
8
  declare const CORE_INSTANCE: unique symbol;
@@ -34,5 +34,5 @@ declare function createBaseComponent<ComponentProps>(OriginComponent: any): Comp
34
34
  export * from './Component';
35
35
  export * from './styled';
36
36
  export * from './register';
37
- export { createBaseComponent, register, CREATE_COMPONENT, CORE_INSTANCE, CONTEXT_COMPONENT, CHILDREN_COMPONENT, INHERITED_NAME, CORE_COMPONENT, STATIC_COMPONENT, assignProps, };
37
+ export { createBaseComponent, register, CREATE_COMPONENT, CORE_INSTANCE, CONTEXT_COMPONENT, CHILDREN_COMPONENT, INHERITED_NAME, CORE_COMPONENT, STATIC_COMPONENT, ROOT_COMPONENT, assignProps, };
38
38
  export default createComponent;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/core",
3
3
  "description": "Semrush Core Component",
4
- "version": "1.11.13",
4
+ "version": "1.12.0",
5
5
  "main": "lib/cjs/index.js",
6
6
  "module": "lib/es6/index.js",
7
7
  "typings": "lib/types/index.d.ts",