@semcore/core 17.2.1 → 17.3.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
+ ## [17.3.0] - 2026-07-30
6
+
7
+ ### Added
8
+
9
+ - `instanceRef` property to all class components.
10
+
5
11
  ## [17.2.1] - 2026-06-26
6
12
 
7
13
  ### Fixed
@@ -1,9 +1,11 @@
1
1
  declare class LastInteractionType {
2
2
  private lastFocusSource;
3
+ private lastKeyboardKey;
3
4
  constructor();
4
5
  get type(): "mouse" | "keyboard" | "none";
5
6
  isKeyboard(): boolean;
6
7
  isMouse(): boolean;
8
+ get isTab(): boolean;
7
9
  private handleMouseDown;
8
10
  private handleKeyDown;
9
11
  }
@@ -10,6 +10,7 @@ var _canUseDOM = _interopRequireDefault(require("./utils/canUseDOM"));
10
10
  class LastInteractionType {
11
11
  constructor() {
12
12
  (0, _defineProperty2.default)(this, "lastFocusSource", 'none');
13
+ (0, _defineProperty2.default)(this, "lastKeyboardKey", '');
13
14
  this.handleKeyDown = this.handleKeyDown.bind(this);
14
15
  this.handleMouseDown = this.handleMouseDown.bind(this);
15
16
  if ((0, _canUseDOM.default)()) {
@@ -30,11 +31,15 @@ class LastInteractionType {
30
31
  isMouse() {
31
32
  return this.lastFocusSource === 'mouse';
32
33
  }
34
+ get isTab() {
35
+ return this.isKeyboard() && this.lastKeyboardKey === 'tab';
36
+ }
33
37
  handleMouseDown() {
34
38
  this.lastFocusSource = 'mouse';
35
39
  }
36
- handleKeyDown() {
40
+ handleKeyDown(e) {
37
41
  this.lastFocusSource = 'keyboard';
42
+ this.lastKeyboardKey = e.key.toLowerCase();
38
43
  }
39
44
  }
40
45
  const lastInteraction = exports.lastInteraction = new LastInteractionType();
@@ -1 +1 @@
1
- {"version":3,"file":"LastInteractionType.js","names":["_canUseDOM","_interopRequireDefault","require","LastInteractionType","constructor","_defineProperty2","default","handleKeyDown","bind","handleMouseDown","canUseDOM","document","addEventListener","capture","type","lastFocusSource","isKeyboard","isMouse","lastInteraction","exports"],"sources":["../src/LastInteractionType.ts"],"sourcesContent":["import canUseDOM from './utils/canUseDOM';\n\nclass LastInteractionType {\n private lastFocusSource: 'mouse' | 'keyboard' | 'none' = 'none';\n\n constructor() {\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n\n if (canUseDOM()) {\n document.addEventListener('mousedown', this.handleMouseDown, { capture: true });\n document.addEventListener('keydown', this.handleKeyDown, { capture: true });\n }\n }\n\n public get type() {\n return this.lastFocusSource;\n }\n\n public isKeyboard() {\n return this.lastFocusSource === 'keyboard';\n }\n\n public isMouse() {\n return this.lastFocusSource === 'mouse';\n }\n\n private handleMouseDown() {\n this.lastFocusSource = 'mouse';\n }\n\n private handleKeyDown() {\n this.lastFocusSource = 'keyboard';\n }\n}\n\nexport const lastInteraction = new LastInteractionType();\n"],"mappings":";;;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,MAAMC,mBAAmB,CAAC;EAGxBC,WAAWA,CAAA,EAAG;IAAA,IAAAC,gBAAA,CAAAC,OAAA,2BAF2C,MAAM;IAG7D,IAAI,CAACC,aAAa,GAAG,IAAI,CAACA,aAAa,CAACC,IAAI,CAAC,IAAI,CAAC;IAClD,IAAI,CAACC,eAAe,GAAG,IAAI,CAACA,eAAe,CAACD,IAAI,CAAC,IAAI,CAAC;IAEtD,IAAI,IAAAE,kBAAS,EAAC,CAAC,EAAE;MACfC,QAAQ,CAACC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACH,eAAe,EAAE;QAAEI,OAAO,EAAE;MAAK,CAAC,CAAC;MAC/EF,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACL,aAAa,EAAE;QAAEM,OAAO,EAAE;MAAK,CAAC,CAAC;IAC7E;EACF;EAEA,IAAWC,IAAIA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACC,eAAe;EAC7B;EAEOC,UAAUA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACD,eAAe,KAAK,UAAU;EAC5C;EAEOE,OAAOA,CAAA,EAAG;IACf,OAAO,IAAI,CAACF,eAAe,KAAK,OAAO;EACzC;EAEQN,eAAeA,CAAA,EAAG;IACxB,IAAI,CAACM,eAAe,GAAG,OAAO;EAChC;EAEQR,aAAaA,CAAA,EAAG;IACtB,IAAI,CAACQ,eAAe,GAAG,UAAU;EACnC;AACF;AAEO,MAAMG,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,IAAIf,mBAAmB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"LastInteractionType.js","names":["_canUseDOM","_interopRequireDefault","require","LastInteractionType","constructor","_defineProperty2","default","handleKeyDown","bind","handleMouseDown","canUseDOM","document","addEventListener","capture","type","lastFocusSource","isKeyboard","isMouse","isTab","lastKeyboardKey","e","key","toLowerCase","lastInteraction","exports"],"sources":["../src/LastInteractionType.ts"],"sourcesContent":["import canUseDOM from './utils/canUseDOM';\n\nclass LastInteractionType {\n private lastFocusSource: 'mouse' | 'keyboard' | 'none' = 'none';\n private lastKeyboardKey: string = '';\n\n constructor() {\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n\n if (canUseDOM()) {\n document.addEventListener('mousedown', this.handleMouseDown, { capture: true });\n document.addEventListener('keydown', this.handleKeyDown, { capture: true });\n }\n }\n\n public get type() {\n return this.lastFocusSource;\n }\n\n public isKeyboard() {\n return this.lastFocusSource === 'keyboard';\n }\n\n public isMouse() {\n return this.lastFocusSource === 'mouse';\n }\n\n public get isTab(): boolean {\n return this.isKeyboard() && this.lastKeyboardKey === 'tab';\n }\n\n private handleMouseDown() {\n this.lastFocusSource = 'mouse';\n }\n\n private handleKeyDown(e: KeyboardEvent) {\n this.lastFocusSource = 'keyboard';\n this.lastKeyboardKey = e.key.toLowerCase();\n }\n}\n\nexport const lastInteraction = new LastInteractionType();\n"],"mappings":";;;;;;;;AAAA,IAAAA,UAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,MAAMC,mBAAmB,CAAC;EAIxBC,WAAWA,CAAA,EAAG;IAAA,IAAAC,gBAAA,CAAAC,OAAA,2BAH2C,MAAM;IAAA,IAAAD,gBAAA,CAAAC,OAAA,2BAC7B,EAAE;IAGlC,IAAI,CAACC,aAAa,GAAG,IAAI,CAACA,aAAa,CAACC,IAAI,CAAC,IAAI,CAAC;IAClD,IAAI,CAACC,eAAe,GAAG,IAAI,CAACA,eAAe,CAACD,IAAI,CAAC,IAAI,CAAC;IAEtD,IAAI,IAAAE,kBAAS,EAAC,CAAC,EAAE;MACfC,QAAQ,CAACC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACH,eAAe,EAAE;QAAEI,OAAO,EAAE;MAAK,CAAC,CAAC;MAC/EF,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACL,aAAa,EAAE;QAAEM,OAAO,EAAE;MAAK,CAAC,CAAC;IAC7E;EACF;EAEA,IAAWC,IAAIA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACC,eAAe;EAC7B;EAEOC,UAAUA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACD,eAAe,KAAK,UAAU;EAC5C;EAEOE,OAAOA,CAAA,EAAG;IACf,OAAO,IAAI,CAACF,eAAe,KAAK,OAAO;EACzC;EAEA,IAAWG,KAAKA,CAAA,EAAY;IAC1B,OAAO,IAAI,CAACF,UAAU,CAAC,CAAC,IAAI,IAAI,CAACG,eAAe,KAAK,KAAK;EAC5D;EAEQV,eAAeA,CAAA,EAAG;IACxB,IAAI,CAACM,eAAe,GAAG,OAAO;EAChC;EAEQR,aAAaA,CAACa,CAAgB,EAAE;IACtC,IAAI,CAACL,eAAe,GAAG,UAAU;IACjC,IAAI,CAACI,eAAe,GAAGC,CAAC,CAACC,GAAG,CAACC,WAAW,CAAC,CAAC;EAC5C;AACF;AAEO,MAAMC,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAG,IAAIpB,mBAAmB,CAAC,CAAC","ignoreList":[]}
@@ -3,6 +3,7 @@ import canUseDOM from "./utils/canUseDOM.mjs";
3
3
  class LastInteractionType {
4
4
  constructor() {
5
5
  _defineProperty(this, "lastFocusSource", "none");
6
+ _defineProperty(this, "lastKeyboardKey", "");
6
7
  this.handleKeyDown = this.handleKeyDown.bind(this);
7
8
  this.handleMouseDown = this.handleMouseDown.bind(this);
8
9
  if (canUseDOM()) {
@@ -23,11 +24,15 @@ class LastInteractionType {
23
24
  isMouse() {
24
25
  return this.lastFocusSource === "mouse";
25
26
  }
27
+ get isTab() {
28
+ return this.isKeyboard() && this.lastKeyboardKey === "tab";
29
+ }
26
30
  handleMouseDown() {
27
31
  this.lastFocusSource = "mouse";
28
32
  }
29
- handleKeyDown() {
33
+ handleKeyDown(e) {
30
34
  this.lastFocusSource = "keyboard";
35
+ this.lastKeyboardKey = e.key.toLowerCase();
31
36
  }
32
37
  }
33
38
  const lastInteraction = new LastInteractionType();
@@ -1 +1 @@
1
- {"version":3,"file":"LastInteractionType.mjs","names":["canUseDOM","LastInteractionType","constructor","_defineProperty","handleKeyDown","bind","handleMouseDown","document","addEventListener","capture","type","lastFocusSource","isKeyboard","isMouse","lastInteraction"],"sources":["../src/LastInteractionType.ts"],"sourcesContent":["import canUseDOM from './utils/canUseDOM';\n\nclass LastInteractionType {\n private lastFocusSource: 'mouse' | 'keyboard' | 'none' = 'none';\n\n constructor() {\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n\n if (canUseDOM()) {\n document.addEventListener('mousedown', this.handleMouseDown, { capture: true });\n document.addEventListener('keydown', this.handleKeyDown, { capture: true });\n }\n }\n\n public get type() {\n return this.lastFocusSource;\n }\n\n public isKeyboard() {\n return this.lastFocusSource === 'keyboard';\n }\n\n public isMouse() {\n return this.lastFocusSource === 'mouse';\n }\n\n private handleMouseDown() {\n this.lastFocusSource = 'mouse';\n }\n\n private handleKeyDown() {\n this.lastFocusSource = 'keyboard';\n }\n}\n\nexport const lastInteraction = new LastInteractionType();\n"],"mappings":";AAAA,OAAOA,SAAS,MAAM,uBAAmB;AAEzC,MAAMC,mBAAmB,CAAC;EAGxBC,WAAWA,CAAA,EAAG;IAAAC,eAAA,0BAF2C,MAAM;IAG7D,IAAI,CAACC,aAAa,GAAG,IAAI,CAACA,aAAa,CAACC,IAAI,CAAC,IAAI,CAAC;IAClD,IAAI,CAACC,eAAe,GAAG,IAAI,CAACA,eAAe,CAACD,IAAI,CAAC,IAAI,CAAC;IAEtD,IAAIL,SAAS,CAAC,CAAC,EAAE;MACfO,QAAQ,CAACC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACF,eAAe,EAAE;QAAEG,OAAO,EAAE;MAAK,CAAC,CAAC;MAC/EF,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACJ,aAAa,EAAE;QAAEK,OAAO,EAAE;MAAK,CAAC,CAAC;IAC7E;EACF;EAEA,IAAWC,IAAIA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACC,eAAe;EAC7B;EAEOC,UAAUA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACD,eAAe,KAAK,UAAU;EAC5C;EAEOE,OAAOA,CAAA,EAAG;IACf,OAAO,IAAI,CAACF,eAAe,KAAK,OAAO;EACzC;EAEQL,eAAeA,CAAA,EAAG;IACxB,IAAI,CAACK,eAAe,GAAG,OAAO;EAChC;EAEQP,aAAaA,CAAA,EAAG;IACtB,IAAI,CAACO,eAAe,GAAG,UAAU;EACnC;AACF;AAEA,OAAO,MAAMG,eAAe,GAAG,IAAIb,mBAAmB,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"LastInteractionType.mjs","names":["canUseDOM","LastInteractionType","constructor","_defineProperty","handleKeyDown","bind","handleMouseDown","document","addEventListener","capture","type","lastFocusSource","isKeyboard","isMouse","isTab","lastKeyboardKey","e","key","toLowerCase","lastInteraction"],"sources":["../src/LastInteractionType.ts"],"sourcesContent":["import canUseDOM from './utils/canUseDOM';\n\nclass LastInteractionType {\n private lastFocusSource: 'mouse' | 'keyboard' | 'none' = 'none';\n private lastKeyboardKey: string = '';\n\n constructor() {\n this.handleKeyDown = this.handleKeyDown.bind(this);\n this.handleMouseDown = this.handleMouseDown.bind(this);\n\n if (canUseDOM()) {\n document.addEventListener('mousedown', this.handleMouseDown, { capture: true });\n document.addEventListener('keydown', this.handleKeyDown, { capture: true });\n }\n }\n\n public get type() {\n return this.lastFocusSource;\n }\n\n public isKeyboard() {\n return this.lastFocusSource === 'keyboard';\n }\n\n public isMouse() {\n return this.lastFocusSource === 'mouse';\n }\n\n public get isTab(): boolean {\n return this.isKeyboard() && this.lastKeyboardKey === 'tab';\n }\n\n private handleMouseDown() {\n this.lastFocusSource = 'mouse';\n }\n\n private handleKeyDown(e: KeyboardEvent) {\n this.lastFocusSource = 'keyboard';\n this.lastKeyboardKey = e.key.toLowerCase();\n }\n}\n\nexport const lastInteraction = new LastInteractionType();\n"],"mappings":";AAAA,OAAOA,SAAS,MAAM,uBAAmB;AAEzC,MAAMC,mBAAmB,CAAC;EAIxBC,WAAWA,CAAA,EAAG;IAAAC,eAAA,0BAH2C,MAAM;IAAAA,eAAA,0BAC7B,EAAE;IAGlC,IAAI,CAACC,aAAa,GAAG,IAAI,CAACA,aAAa,CAACC,IAAI,CAAC,IAAI,CAAC;IAClD,IAAI,CAACC,eAAe,GAAG,IAAI,CAACA,eAAe,CAACD,IAAI,CAAC,IAAI,CAAC;IAEtD,IAAIL,SAAS,CAAC,CAAC,EAAE;MACfO,QAAQ,CAACC,gBAAgB,CAAC,WAAW,EAAE,IAAI,CAACF,eAAe,EAAE;QAAEG,OAAO,EAAE;MAAK,CAAC,CAAC;MAC/EF,QAAQ,CAACC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAACJ,aAAa,EAAE;QAAEK,OAAO,EAAE;MAAK,CAAC,CAAC;IAC7E;EACF;EAEA,IAAWC,IAAIA,CAAA,EAAG;IAChB,OAAO,IAAI,CAACC,eAAe;EAC7B;EAEOC,UAAUA,CAAA,EAAG;IAClB,OAAO,IAAI,CAACD,eAAe,KAAK,UAAU;EAC5C;EAEOE,OAAOA,CAAA,EAAG;IACf,OAAO,IAAI,CAACF,eAAe,KAAK,OAAO;EACzC;EAEA,IAAWG,KAAKA,CAAA,EAAY;IAC1B,OAAO,IAAI,CAACF,UAAU,CAAC,CAAC,IAAI,IAAI,CAACG,eAAe,KAAK,KAAK;EAC5D;EAEQT,eAAeA,CAAA,EAAG;IACxB,IAAI,CAACK,eAAe,GAAG,OAAO;EAChC;EAEQP,aAAaA,CAACY,CAAgB,EAAE;IACtC,IAAI,CAACL,eAAe,GAAG,UAAU;IACjC,IAAI,CAACI,eAAe,GAAGC,CAAC,CAACC,GAAG,CAACC,WAAW,CAAC,CAAC;EAC5C;AACF;AAEA,OAAO,MAAMC,eAAe,GAAG,IAAIlB,mBAAmB,CAAC,CAAC","ignoreList":[]}
@@ -1,5 +1,5 @@
1
1
  import type React from 'react';
2
- import { type AllHTMLAttributes, type ForwardRefExoticComponent, PureComponent, type ReactNode, type RefObject } from 'react';
2
+ import { type AllHTMLAttributes, type ForwardRefExoticComponent, type MutableRefObject, PureComponent, type ReactNode, type RefObject } from 'react';
3
3
  import type { CORE_COMPONENT } from './symbols';
4
4
  import { CORE_INSTANCE } from './symbols';
5
5
  import type { IStyledProps } from '../styled/index';
@@ -36,10 +36,13 @@ export interface IComponent<C, P = C extends {
36
36
  new (...args: any[]): C;
37
37
  defaultProps?: DP | ((props: P) => DP) | (() => DP);
38
38
  }
39
- export declare abstract class Component<Props = {}, Enhance extends readonly ((...args: any[]) => any)[] = [], Uncontrolled extends Readonly<{
39
+ export declare abstract class Component<Props extends (object & {
40
+ instanceRef?: MutableRefObject<any>;
41
+ }) = {}, Enhance extends readonly ((...args: any[]) => any)[] = [], Uncontrolled extends Readonly<{
40
42
  [key in keyof Props]?: UncontrolledPropValue<Props[key]>;
41
43
  }> = never, InnerProps = {}, State = {}, DefaultProps extends Intergalactic.InternalTypings.ValidDefaultProps<DefaultProps, Props & InnerProps> = never> extends PureComponent<Props, State> {
42
44
  protected __defaultProps: DefaultProps;
45
+ constructor(props: Props);
43
46
  protected uncontrolledProps(): [Uncontrolled] extends [never] ? never : Uncontrolled;
44
47
  protected get handlers(): Readonly<{
45
48
  [key in keyof Uncontrolled]: key extends keyof Props ? Uncontrolled[key] extends null | Props[key] ? (value: Props[key], e?: any) => void : Uncontrolled[key] extends [UncontrolledPropValueSetterFunction<any> | null, ...UncontrolledPropValueChainHandler<any>[]] ? Uncontrolled[key][1] : Uncontrolled[key] extends Array<UncontrolledPropValueChainHandler<any>> ? Uncontrolled[key][0] : Uncontrolled[key] : never;
@@ -57,8 +60,12 @@ export declare namespace Intergalactic {
57
60
  type ReactFCLike = (props: any) => any;
58
61
  type ReactFCLikeProps<C extends ReactFCLike> = C extends (props: infer Props) => any ? Props : {};
59
62
  type ComponentChildren<Props, Context, RenderingResult = InternalTypings.ReturnResult, AdditionalContext extends Readonly<any[]> = never[]> = ((props: MergeProps<Context, Props>, ...args: AdditionalContext) => RenderingResult) | InternalTypings.ReturnResult;
60
- type ComponentBasicProps<Tag extends InternalTypings.ComponentTag> = {
63
+ type ComponentBasicProps<Tag extends InternalTypings.ComponentTag, Instance = never> = {
61
64
  ref?: React.Ref<InternalTypings.ComponentHtmlElement<Tag> | null>;
65
+ /**
66
+ * Ref to an instance of a class component.
67
+ */
68
+ instanceRef?: [Instance] extends [never] ? never : React.RefObject<Instance>;
62
69
  /** @private DO NOT USE IT. Low-level api that prevents specified props from being applied as DOM attribute. */
63
70
  __excludeProps?: string[];
64
71
  };
@@ -67,6 +74,9 @@ export declare namespace Intergalactic {
67
74
  } & HighPriorityProps;
68
75
  /** @private */
69
76
  export namespace InternalTypings {
77
+ export type RemoveIndexSignature<T> = {
78
+ [K in keyof T as string extends K ? never : number extends K ? never : symbol extends K ? never : K]: T[K];
79
+ };
70
80
  type StripDefaultPrefix<K> = K extends `default${infer Rest}` ? Uncapitalize<Rest> : K;
71
81
  export type ValidDefaultProps<DefaultProps, MergedProps> = {
72
82
  [K in keyof DefaultProps]: K extends keyof MergedProps ? MergedProps[K] : StripDefaultPrefix<K> extends keyof MergedProps ? MergedProps[StripDefaultPrefix<K>] : never;
@@ -74,8 +84,8 @@ export declare namespace Intergalactic {
74
84
  export type MappedDefaultProps<DefaultProps, MergedProps> = {
75
85
  [K in keyof DefaultProps as StripDefaultPrefix<K>]: K extends keyof MergedProps ? Required<MergedProps>[K] : StripDefaultPrefix<K> extends keyof MergedProps ? Required<MergedProps>[StripDefaultPrefix<K>] : never;
76
86
  };
77
- type MergeChildProps<Root, Component> = {
78
- [K in keyof Root | keyof Component]: K extends keyof Root ? K extends keyof Component ? Root[K] & Component[K] extends never ? Root[K] | Component[K] : Root[K] & Component[K] : Root[K] : K extends keyof Component ? Component[K] : never;
87
+ type MergeChildProps<Root, Component> = Omit<Root, keyof Component> & Omit<Component, keyof Root> & {
88
+ [K in keyof Root & keyof Component]: [Root[K] & Component[K]] extends [never] ? Root[K] | Component[K] : Root[K] & Component[K];
79
89
  };
80
90
  type InferPropsFromRoot<Root extends new (...args: any) => any, Child extends string> = InstanceType<Root>[`get${Child}Props`] extends (...args: any[]) => infer R ? R : Record<string, never>;
81
91
  export type InferComponentProps<Component extends ReactFCLike> = Omit<IRootComponentProps & ReactFCLikeProps<Component>, 'tag'>;
@@ -112,12 +122,12 @@ export declare namespace Intergalactic {
112
122
  } ? NestedProps : {}>, 'children' | 'tag'>;
113
123
  export type ReturnResult = React.ReactElement | React.ReactNode | React.ReactNode[] | string | null;
114
124
  export type ComponentTag = keyof JSX.IntrinsicElements | React.ComponentClass | React.FC | ReactFCLike;
115
- export type ComponentProps<Tag extends ComponentTag | [ComponentTag, keyof JSX.IntrinsicElements], BaseTag extends ComponentTag | never, Props, Context = never, AdditionalContext extends Readonly<any[]> = never[]> = {
125
+ export type ComponentProps<Tag extends ComponentTag | [ComponentTag, keyof JSX.IntrinsicElements], BaseTag extends ComponentTag | never, Props, Context = never, AdditionalContext extends Readonly<any[]> = never[], Instance = never> = {
116
126
  tag?: Tag;
117
127
  children?: ComponentChildren<EfficientOmit<Props, 'children'> & {
118
128
  children: React.ReactNode;
119
129
  }, Context, ReturnResult, AdditionalContext>;
120
- } & ComponentBasicProps<Tag extends [ComponentTag, keyof JSX.IntrinsicElements] ? Tag[0] : Tag> & MergeProps<EfficientOmit<Props, 'tag' | 'children'>, MergeProps<ComponentPropsNesting<Tag extends [ComponentTag, keyof JSX.IntrinsicElements] ? Tag[0] : Tag>, ComponentPropsNesting<BaseTag>>>;
130
+ } & ComponentBasicProps<Tag extends [ComponentTag, keyof JSX.IntrinsicElements] ? Tag[0] : Tag, Instance> & MergeProps<EfficientOmit<Props, 'tag' | 'children'>, MergeProps<ComponentPropsNesting<Tag extends [ComponentTag, keyof JSX.IntrinsicElements] ? Tag[0] : Tag>, ComponentPropsNesting<BaseTag>>>;
121
131
  export type PropsRenderingResultComponentProps<Tag extends ComponentTag, Props, Context = {}, AdditionalContext extends any[] = never[]> = {
122
132
  tag?: Tag;
123
133
  children?: ComponentChildren<EfficientOmit<Props, 'children'> & {
@@ -150,7 +160,7 @@ export declare namespace Intergalactic {
150
160
  };
151
161
  export {};
152
162
  }
153
- export type Component<BaseTag extends InternalTypings.ComponentTag = never, BaseProps = {}, Context = {}, AdditionalContext extends Readonly<any[]> = never[]> = (<Tag extends InternalTypings.ComponentTag | [InternalTypings.ComponentTag, keyof JSX.IntrinsicElements] = BaseTag, Props extends BaseProps = BaseProps>(props: InternalTypings.ComponentProps<Tag, BaseTag, Props, Context, AdditionalContext>) => InternalTypings.ComponentRenderingResults) & InternalTypings.ComponentAdditive<BaseTag, Tag, BaseProps, Context, AdditionalContext>;
163
+ export type Component<BaseTag extends InternalTypings.ComponentTag = never, BaseProps = {}, Context = {}, AdditionalContext extends Readonly<any[]> = never[], Instance = never> = (<Tag extends InternalTypings.ComponentTag | [InternalTypings.ComponentTag, keyof JSX.IntrinsicElements] = BaseTag, Props extends BaseProps = BaseProps>(props: InternalTypings.ComponentProps<Tag, BaseTag, Props, Context, AdditionalContext, Instance>) => InternalTypings.ComponentRenderingResults) & InternalTypings.ComponentAdditive<BaseTag, Tag, BaseProps, Context, AdditionalContext>;
154
164
  export type Tag = InternalTypings.ComponentTag;
155
165
  export type DomProps<Tag extends keyof JSX.IntrinsicElements> = InternalTypings.InferJsxIntrinsicElement<JSX.IntrinsicElements[Tag]>;
156
166
  export type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<T, Exclude<keyof T, Keys>> & {
@@ -12,12 +12,15 @@ var _symbols = require("./symbols");
12
12
 
13
13
  const Root = exports.Root = undefined;
14
14
  class Component extends _react.PureComponent {
15
- constructor(...args) {
16
- super(...args);
15
+ constructor(props) {
16
+ super(props);
17
17
  (0, _defineProperty2.default)(this, "__defaultProps", {});
18
18
  (0, _defineProperty2.default)(this, "Root", undefined);
19
19
  (0, _defineProperty2.default)(this, "isControlled", false);
20
20
  (0, _defineProperty2.default)(this, _symbols.CORE_INSTANCE, void 0);
21
+ if (props.instanceRef) {
22
+ props.instanceRef.current = this;
23
+ }
21
24
  }
22
25
  uncontrolledProps() {
23
26
  // @ts-ignore. This is a default value. Should be defined in related classes.
@@ -1 +1 @@
1
- {"version":3,"file":"Component.js","names":["_react","require","_symbols","Root","exports","undefined","Component","PureComponent","constructor","args","_defineProperty2","default","CORE_INSTANCE","uncontrolledProps","handlers","asProps","Intergalactic","wrapIntergalacticComponent","wrapper"],"sources":["../../src/core-types/Component.ts"],"sourcesContent":["import type React from 'react';\nimport { type\nAllHTMLAttributes, type\nForwardRefExoticComponent,\nPureComponent, type\nReactNode, type\nRefObject,\n} from 'react';\n\nimport type { CORE_COMPONENT } from './symbols';\nimport { CORE_INSTANCE } from './symbols';\nimport type { IStyledProps } from '../styled/index';\n\ntype HandlersType<UCProps> = { [K in keyof UCProps]?: <T = unknown>(arg: T) => void };\n\nexport interface IRootComponentProps<Props = {}, Ctx = {}, H = {}> {\n 'forwardRef'?: RefObject<any>;\n 'Children'?: any;\n 'children'?: ReactNode | ((props: Props & Ctx, handlers: HandlersType<H>) => ReactNode);\n 'styles'?: IStyledProps['styles'];\n 'data-ui-name'?: string;\n}\n\nexport interface IRootNodeProps {\n render: React.ElementType | string;\n tag?: React.ElementType | string;\n\n [key: string]: any;\n}\n\ntype Root = ForwardRefExoticComponent<IRootNodeProps>;\n\n/** @deprecated */\nexport type PropGetterFn = <T extends {}>(props?: T) => T & { [key: string]: unknown };\n\nconst Root: Root = undefined as any;\n\nexport { Root };\n\ntype RootResult<T extends Intergalactic.Tag | never> = ForwardRefExoticComponent<IRootNodeProps & Intergalactic.InternalTypings.ComponentPropsNesting<T>>;\n\ntype BaseAsProps<Props = {}, Enhance extends readonly ((...args: any[]) => any)[] = [], InnerProps = {}> = Readonly<\n Props &\n IRootComponentProps &\n Intergalactic.InternalTypings.ExtractEnhanceType<Enhance> &\n InnerProps\n>;\n\ntype UncontrolledPropValueSetterFunction<V> = (event?: any) => void | boolean | V;\ntype UncontrolledPropValueChainHandler<V> = (value: V, event?: any) => void | boolean | V;\n\ntype UncontrolledPropValue<V> =\n | V\n | null\n | UncontrolledPropValueSetterFunction<V>\n | Array<UncontrolledPropValueChainHandler<V>>\n | [UncontrolledPropValueSetterFunction<V> | null, ...UncontrolledPropValueChainHandler<V>[]];\n\nexport interface IComponent<\n C,\n /*\n * Infered this way since `Props` within `Component` abstract class\n * is used in multiple places in different variance positions\n * causing the final type to be `never`.\n * */\n P = C extends { props: Readonly<infer P> } ? P : never,\n DP = C extends Component<any, any, any, any, any, infer DP> ?\n DP extends never\n ? never\n : DP\n : never,\n> {\n new (...args: any[]): C;\n defaultProps?: DP | ((props: P) => DP) | (() => DP);\n}\nexport abstract class Component<\n Props = {},\n Enhance extends readonly ((...args: any[]) => any)[] = [],\n Uncontrolled extends Readonly<{ [key in keyof Props]?: UncontrolledPropValue<Props[key]> }> = never,\n InnerProps = {},\n State = {},\n DefaultProps extends Intergalactic.InternalTypings.ValidDefaultProps<DefaultProps, Props & InnerProps> = never,\n> extends PureComponent<Props, State> {\n protected __defaultProps: DefaultProps = {} as DefaultProps;\n\n protected uncontrolledProps(): [Uncontrolled] extends [never] ? never : Uncontrolled {\n // @ts-ignore. This is a default value. Should be defined in related classes.\n return {};\n }\n\n protected get handlers(): Readonly<{\n [key in keyof Uncontrolled]: key extends keyof Props\n ? Uncontrolled[key] extends null | Props[key]\n ? (value: Props[key], e?: any) => void\n : Uncontrolled[key] extends [UncontrolledPropValueSetterFunction<any> | null, ...UncontrolledPropValueChainHandler<any>[]]\n ? Uncontrolled[key][1]\n : Uncontrolled[key] extends Array<UncontrolledPropValueChainHandler<any>>\n ? Uncontrolled[key][0]\n : Uncontrolled[key]\n : never\n }> {\n // @ts-ignore. The body will be generated in factory\n return {};\n }\n\n protected get asProps() {\n return {} as Readonly<\n { Root: RootResult<any> } & BaseAsProps<Props, Enhance, InnerProps> &\n Intergalactic.InternalTypings.EfficientOmit<\n AllHTMLAttributes<any>,\n keyof BaseAsProps<Props, Enhance, InnerProps>\n > &\n ([DefaultProps] extends [never] ? {} : Intergalactic.InternalTypings.MappedDefaultProps<DefaultProps, Props & InnerProps>)\n >;\n }\n\n protected Root: RootResult<any> = undefined as any;\n\n protected isControlled = false;\n\n protected [CORE_INSTANCE]: any;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Intergalactic {\n type ReactFCProps<C extends React.FC> = C extends React.FC<infer Props> ? Omit<Props, 'tag'> : {};\n type ReactComponentProps<C extends React.ComponentClass> = C extends React.ComponentClass<\n infer Props\n >\n ? Omit<Props, 'tag'>\n : never;\n type ReactFCLike = (props: any) => any;\n type ReactFCLikeProps<C extends ReactFCLike> = C extends (props: infer Props) => any ? Props : {};\n type ComponentChildren<\n Props,\n Context,\n RenderingResult = InternalTypings.ReturnResult,\n AdditionalContext extends Readonly<any[]> = never[],\n > =\n | ((props: MergeProps<Context, Props>, ...args: AdditionalContext) => RenderingResult)\n | InternalTypings.ReturnResult;\n type ComponentBasicProps<Tag extends InternalTypings.ComponentTag> = {\n ref?: React.Ref<InternalTypings.ComponentHtmlElement<Tag> | null>;\n /** @private DO NOT USE IT. Low-level api that prevents specified props from being applied as DOM attribute. */\n __excludeProps?: string[];\n };\n type MergeProps<HighPriorityProps, LowPriorityProps> = {\n [K in keyof LowPriorityProps]: K extends keyof HighPriorityProps\n ? HighPriorityProps[K]\n : LowPriorityProps[K];\n } & HighPriorityProps;\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace InternalTypings {\n type StripDefaultPrefix<K> = K extends `default${infer Rest}` ? Uncapitalize<Rest> : K;\n\n export type ValidDefaultProps<DefaultProps, MergedProps> = {\n [K in keyof DefaultProps]: K extends keyof MergedProps\n ? MergedProps[K]\n : StripDefaultPrefix<K> extends keyof MergedProps\n ? MergedProps[StripDefaultPrefix<K>]\n : never;\n };\n\n export type MappedDefaultProps<DefaultProps, MergedProps> = {\n [K in keyof DefaultProps as StripDefaultPrefix<K>]: K extends keyof MergedProps\n ? Required<MergedProps>[K]\n : StripDefaultPrefix<K> extends keyof MergedProps\n ? Required<MergedProps>[StripDefaultPrefix<K>]\n : never;\n };\n\n type MergeChildProps<Root, Component> = {\n [K in keyof Root | keyof Component]:\n K extends keyof Root\n ? K extends keyof Component\n ? Root[K] & Component[K] extends never\n ? Root[K] | Component[K]\n : Root[K] & Component[K]\n : Root[K]\n : K extends keyof Component\n ? Component[K]\n : never\n };\n\n type InferPropsFromRoot<\n Root extends new (...args: any) => any,\n Child extends string,\n > = InstanceType<Root>[`get${Child}Props`] extends (...args: any[]) => infer R ? R : Record<string, never>;\n\n export type InferComponentProps<\n Component extends ReactFCLike,\n > = Omit<IRootComponentProps & ReactFCLikeProps<Component>, 'tag'>;\n\n export type InferChildComponentProps<\n Component extends ReactFCLike,\n Root extends new (...args: any) => any,\n ChildName extends string,\n MergedProps = MergeChildProps<InferPropsFromRoot<Root, ChildName>, InferComponentProps<Component>>,\n > = MergedProps & IStyledProps;\n\n export type PartialRequired<T, K extends keyof T> = Omit<T, K> & {\n [key in K]-?: T[key];\n };\n export type EfficientOmit<Type, Keys> = {\n [Property in keyof Type as Exclude<Property, Keys>]: Type[Property];\n };\n export type ExtractEnhanceType<F extends readonly ((...args: any[]) => any)[]> =\n F['length'] extends 0\n ? {}\n : F['length'] extends 1\n ? {\n [K in keyof ReturnType<F[0]>]: ReturnType<F[0]>[K];\n }\n : F['length'] extends 2\n // eslint-disable-next-line @stylistic/indent-binary-ops\n ? {\n [K in keyof ReturnType<F[0]>]: ReturnType<F[0]>[K];\n } & {\n [K in keyof ReturnType<F[1]>]: ReturnType<F[1]>[K];\n }\n : F['length'] extends 3\n // eslint-disable-next-line @stylistic/indent-binary-ops\n ? {\n [K in keyof ReturnType<F[0]>]: ReturnType<F[0]>[K];\n } & {\n [K in keyof ReturnType<F[1]>]: ReturnType<F[1]>[K];\n } & {\n [K in keyof ReturnType<F[2]>]: ReturnType<F[2]>[K];\n }\n : F['length'] extends 4\n // eslint-disable-next-line @stylistic/indent-binary-ops\n ? {\n [K in keyof ReturnType<F[0]>]: ReturnType<F[0]>[K];\n } & {\n [K in keyof ReturnType<F[1]>]: ReturnType<F[1]>[K];\n } & {\n [K in keyof ReturnType<F[2]>]: ReturnType<F[2]>[K];\n } & {\n [K in keyof ReturnType<F[3]>]: ReturnType<F[3]>[K];\n }\n : {};\n export type ComponentPropsNesting<Tag extends InternalTypings.ComponentTag> = Omit<\n MergeProps<\n Tag extends React.FC\n ? ReactFCProps<Tag>\n : Tag extends React.ComponentClass\n ? ReactComponentProps<Tag>\n : Tag extends ReactFCLike\n ? ReactFCLikeProps<Tag>\n : Tag extends keyof JSX.IntrinsicElements\n ? JSX.IntrinsicElements[Tag]\n : {},\n Tag extends { __nestedProps: infer NestedProps } ? NestedProps : {}\n >,\n 'children' | 'tag'\n >;\n export type ReturnResult =\n | React.ReactElement\n | React.ReactNode\n | React.ReactNode[]\n | string\n | null;\n export type ComponentTag =\n | keyof JSX.IntrinsicElements\n | React.ComponentClass\n | React.FC\n | ReactFCLike;\n export type ComponentProps<\n Tag extends ComponentTag | [ComponentTag, keyof JSX.IntrinsicElements],\n BaseTag extends ComponentTag | never,\n Props,\n Context = never,\n AdditionalContext extends Readonly<any[]> = never[],\n > = {\n tag?: Tag;\n children?: ComponentChildren<\n EfficientOmit<Props, 'children'> & { children: React.ReactNode },\n Context,\n ReturnResult,\n AdditionalContext\n >;\n } & ComponentBasicProps<Tag extends [ComponentTag, keyof JSX.IntrinsicElements] ? Tag[0] : Tag> &\n MergeProps<\n EfficientOmit<Props, 'tag' | 'children'>,\n MergeProps<ComponentPropsNesting<Tag extends [ComponentTag, keyof JSX.IntrinsicElements] ? Tag[0] : Tag>, ComponentPropsNesting<BaseTag>>\n >;\n export type PropsRenderingResultComponentProps<\n Tag extends ComponentTag,\n Props,\n Context = {},\n AdditionalContext extends any[] = never[],\n > = {\n tag?: Tag;\n children?: ComponentChildren<\n EfficientOmit<Props, 'children'> & { children: React.ReactNode },\n Context,\n Partial<\n EfficientOmit<\n MergeProps<Props, ComponentPropsNesting<Tag>>,\n 'children' | 'tag' | 'ref'\n > & {\n children?: React.ReactNode;\n }\n >,\n AdditionalContext\n >;\n } & ComponentBasicProps<Tag> &\n MergeProps<EfficientOmit<Props, 'tag' | 'children'>, ComponentPropsNesting<Tag>>;\n export type ComponentRenderingResults = React.ReactElement;\n export type ComponentAdditive<\n BaseTag extends ComponentTag,\n Tag extends ComponentTag,\n Props = {},\n Context = {},\n AdditionalContext = {},\n > = {\n __nestedProps: ComponentPropsNesting<BaseTag>;\n __tag: Tag;\n __props: Props;\n __context: Context;\n __additionalContext: AdditionalContext;\n __IS_ICON: boolean;\n displayName: string;\n newInstance: () => Component<BaseTag, Props, Context>;\n [CORE_COMPONENT]: boolean;\n };\n export type InferJsxIntrinsicElement<T extends React.DetailedHTMLProps<any, any>> =\n T extends React.DetailedHTMLProps<infer _, infer Element> ? Element : HTMLElement;\n type InferElementFromRef<T> = T extends React.Ref<infer Element> ? Element : never;\n type InferRefElementFromProps<T> = 'ref' extends keyof T\n ? InferElementFromRef<T['ref']>\n : HTMLElement;\n export type ComponentHtmlElement<Tag extends ComponentTag> =\n Tag extends keyof JSX.IntrinsicElements\n ? InferJsxIntrinsicElement<JSX.IntrinsicElements[Tag]>\n : Tag extends { __nestedProps: infer NestedProps }\n ? InferRefElementFromProps<NestedProps>\n : HTMLElement;\n export type UntypeRefAndTag<Props> = Intergalactic.InternalTypings.EfficientOmit<\n Props,\n 'ref' | 'tag'\n > & {\n ref: React.Ref<any>;\n tag: Intergalactic.InternalTypings.ComponentTag;\n };\n }\n export type Component<\n BaseTag extends InternalTypings.ComponentTag = never,\n BaseProps = {},\n Context = {},\n AdditionalContext extends Readonly<any[]> = never[],\n > = (<\n Tag extends InternalTypings.ComponentTag | [InternalTypings.ComponentTag, keyof JSX.IntrinsicElements] = BaseTag,\n Props extends BaseProps = BaseProps,\n >(\n props: InternalTypings.ComponentProps<Tag, BaseTag, Props, Context, AdditionalContext>,\n ) => InternalTypings.ComponentRenderingResults) &\n InternalTypings.ComponentAdditive<BaseTag, Tag, BaseProps, Context, AdditionalContext>;\n export type Tag = InternalTypings.ComponentTag;\n export type DomProps<Tag extends keyof JSX.IntrinsicElements> =\n InternalTypings.InferJsxIntrinsicElement<JSX.IntrinsicElements[Tag]>;\n export type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<\n T,\n Exclude<keyof T, Keys>\n > &\n {\n [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;\n }[Keys];\n}\n\nexport const wrapIntergalacticComponent = <\n Component extends Intergalactic.Component<any, any, any, any>,\n PropsExtending = {},\n>(\n wrapper: (\n props: Intergalactic.InternalTypings.UntypeRefAndTag<\n Intergalactic.InternalTypings.ComponentPropsNesting<Component>\n > &\n PropsExtending,\n ) => React.ReactNode,\n): Intergalactic.Component<\n Component['__tag'],\n Component['__props'] & Component['__nestedProps'] & PropsExtending,\n Component['__context'],\n Component['__additionalContext']\n> => wrapper as any;\n"],"mappings":";;;;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AASA,IAAAC,QAAA,GAAAD,OAAA;AAsBA;;AAGA,MAAME,IAAU,GAAAC,OAAA,CAAAD,IAAA,GAAGE,SAAgB;AAwC5B,MAAeC,SAAS,SAOrBC,oBAAa,CAAe;EAAAC,YAAA,GAAAC,IAAA;IAAA,SAAAA,IAAA;IAAA,IAAAC,gBAAA,CAAAC,OAAA,0BACK,CAAC,CAAC;IAAA,IAAAD,gBAAA,CAAAC,OAAA,gBAiCTN,SAAS;IAAA,IAAAK,gBAAA,CAAAC,OAAA,wBAElB,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,QAEnBC,sBAAa;EAAA;EAnCdC,iBAAiBA,CAAA,EAA0D;IACnF;IACA,OAAO,CAAC,CAAC;EACX;EAEA,IAAcC,QAAQA,CAAA,EAUnB;IACD;IACA,OAAO,CAAC,CAAC;EACX;EAEA,IAAcC,OAAOA,CAAA,EAAG;IACtB,OAAO,CAAC,CAAC;EAQX;AAOF;;AAEA;AAAAX,OAAA,CAAAE,SAAA,GAAAA,SAAA;AAAA,IACiBU,aAAa,GAAAZ,OAAA,CAAAY,aAAA;AAuPvB,MAAMC,0BAA0B,GAIrCC,OAKoB,IAMjBA,OAAc;AAACd,OAAA,CAAAa,0BAAA,GAAAA,0BAAA","ignoreList":[]}
1
+ {"version":3,"file":"Component.js","names":["_react","require","_symbols","Root","exports","undefined","Component","PureComponent","constructor","props","_defineProperty2","default","CORE_INSTANCE","instanceRef","current","uncontrolledProps","handlers","asProps","Intergalactic","wrapIntergalacticComponent","wrapper"],"sources":["../../src/core-types/Component.ts"],"sourcesContent":["import type React from 'react';\nimport {\n type AllHTMLAttributes,\n type ForwardRefExoticComponent,\n type MutableRefObject,\n PureComponent,\n type ReactNode,\n type RefObject,\n} from 'react';\n\nimport type { CORE_COMPONENT } from './symbols';\nimport { CORE_INSTANCE } from './symbols';\nimport type { IStyledProps } from '../styled/index';\n\ntype HandlersType<UCProps> = { [K in keyof UCProps]?: <T = unknown>(arg: T) => void };\n\nexport interface IRootComponentProps<Props = {}, Ctx = {}, H = {}> {\n 'forwardRef'?: RefObject<any>;\n 'Children'?: any;\n 'children'?: ReactNode | ((props: Props & Ctx, handlers: HandlersType<H>) => ReactNode);\n 'styles'?: IStyledProps['styles'];\n 'data-ui-name'?: string;\n}\n\nexport interface IRootNodeProps {\n render: React.ElementType | string;\n tag?: React.ElementType | string;\n\n [key: string]: any;\n}\n\ntype Root = ForwardRefExoticComponent<IRootNodeProps>;\n\n/** @deprecated */\nexport type PropGetterFn = <T extends {}>(props?: T) => T & { [key: string]: unknown };\n\nconst Root: Root = undefined as any;\n\nexport { Root };\n\ntype RootResult<T extends Intergalactic.Tag | never> = ForwardRefExoticComponent<IRootNodeProps & Intergalactic.InternalTypings.ComponentPropsNesting<T>>;\n\ntype BaseAsProps<Props = {}, Enhance extends readonly ((...args: any[]) => any)[] = [], InnerProps = {}> = Readonly<\n Props &\n IRootComponentProps &\n Intergalactic.InternalTypings.ExtractEnhanceType<Enhance> &\n InnerProps\n>;\n\ntype UncontrolledPropValueSetterFunction<V> = (event?: any) => void | boolean | V;\ntype UncontrolledPropValueChainHandler<V> = (value: V, event?: any) => void | boolean | V;\n\ntype UncontrolledPropValue<V> =\n | V\n | null\n | UncontrolledPropValueSetterFunction<V>\n | Array<UncontrolledPropValueChainHandler<V>>\n | [UncontrolledPropValueSetterFunction<V> | null, ...UncontrolledPropValueChainHandler<V>[]];\n\nexport interface IComponent<\n C,\n /*\n * Infered this way since `Props` within `Component` abstract class\n * is used in multiple places in different variance positions\n * causing the final type to be `never`.\n * */\n P = C extends { props: Readonly<infer P> } ? P : never,\n DP = C extends Component<any, any, any, any, any, infer DP> ?\n DP extends never\n ? never\n : DP\n : never,\n> {\n new (...args: any[]): C;\n defaultProps?: DP | ((props: P) => DP) | (() => DP);\n}\n\nexport abstract class Component<\n Props extends (object & { instanceRef?: MutableRefObject<any> }) = {},\n Enhance extends readonly ((...args: any[]) => any)[] = [],\n Uncontrolled extends Readonly<{ [key in keyof Props]?: UncontrolledPropValue<Props[key]> }> = never,\n InnerProps = {},\n State = {},\n DefaultProps extends Intergalactic.InternalTypings.ValidDefaultProps<DefaultProps, Props & InnerProps> = never,\n> extends PureComponent<Props, State> {\n protected __defaultProps: DefaultProps = {} as DefaultProps;\n\n constructor(props: Props) {\n super(props);\n\n if (props.instanceRef) {\n props.instanceRef.current = this;\n }\n }\n\n protected uncontrolledProps(): [Uncontrolled] extends [never] ? never : Uncontrolled {\n // @ts-ignore. This is a default value. Should be defined in related classes.\n return {};\n }\n\n protected get handlers(): Readonly<{\n [key in keyof Uncontrolled]: key extends keyof Props\n ? Uncontrolled[key] extends null | Props[key]\n ? (value: Props[key], e?: any) => void\n : Uncontrolled[key] extends [UncontrolledPropValueSetterFunction<any> | null, ...UncontrolledPropValueChainHandler<any>[]]\n ? Uncontrolled[key][1]\n : Uncontrolled[key] extends Array<UncontrolledPropValueChainHandler<any>>\n ? Uncontrolled[key][0]\n : Uncontrolled[key]\n : never\n }> {\n // @ts-ignore. The body will be generated in factory\n return {};\n }\n\n protected get asProps() {\n return {} as Readonly<\n { Root: RootResult<any> } & BaseAsProps<Props, Enhance, InnerProps> &\n Intergalactic.InternalTypings.EfficientOmit<\n AllHTMLAttributes<any>,\n keyof BaseAsProps<Props, Enhance, InnerProps>\n > &\n ([DefaultProps] extends [never] ? {} : Intergalactic.InternalTypings.MappedDefaultProps<DefaultProps, Props & InnerProps>)\n >;\n }\n\n protected Root: RootResult<any> = undefined as any;\n\n protected isControlled = false;\n\n protected [CORE_INSTANCE]: any;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Intergalactic {\n type ReactFCProps<C extends React.FC> = C extends React.FC<infer Props> ? Omit<Props, 'tag'> : {};\n type ReactComponentProps<C extends React.ComponentClass> = C extends React.ComponentClass<\n infer Props\n >\n ? Omit<Props, 'tag'>\n : never;\n type ReactFCLike = (props: any) => any;\n type ReactFCLikeProps<C extends ReactFCLike> = C extends (props: infer Props) => any ? Props : {};\n type ComponentChildren<\n Props,\n Context,\n RenderingResult = InternalTypings.ReturnResult,\n AdditionalContext extends Readonly<any[]> = never[],\n > =\n | ((props: MergeProps<Context, Props>, ...args: AdditionalContext) => RenderingResult)\n | InternalTypings.ReturnResult;\n type ComponentBasicProps<Tag extends InternalTypings.ComponentTag, Instance = never> = {\n ref?: React.Ref<InternalTypings.ComponentHtmlElement<Tag> | null>;\n /**\n * Ref to an instance of a class component.\n */\n instanceRef?: [Instance] extends [never] ? never : React.RefObject<Instance>;\n /** @private DO NOT USE IT. Low-level api that prevents specified props from being applied as DOM attribute. */\n __excludeProps?: string[];\n };\n type MergeProps<HighPriorityProps, LowPriorityProps> = {\n [K in keyof LowPriorityProps]: K extends keyof HighPriorityProps\n ? HighPriorityProps[K]\n : LowPriorityProps[K];\n } & HighPriorityProps;\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace InternalTypings {\n export type RemoveIndexSignature<T> = {\n [K in keyof T as string extends K\n ? never\n : number extends K\n ? never\n : symbol extends K\n ? never\n : K]: T[K];\n };\n\n type StripDefaultPrefix<K> = K extends `default${infer Rest}` ? Uncapitalize<Rest> : K;\n\n export type ValidDefaultProps<DefaultProps, MergedProps> = {\n [K in keyof DefaultProps]: K extends keyof MergedProps\n ? MergedProps[K]\n : StripDefaultPrefix<K> extends keyof MergedProps\n ? MergedProps[StripDefaultPrefix<K>]\n : never;\n };\n\n export type MappedDefaultProps<DefaultProps, MergedProps> = {\n [K in keyof DefaultProps as StripDefaultPrefix<K>]: K extends keyof MergedProps\n ? Required<MergedProps>[K]\n : StripDefaultPrefix<K> extends keyof MergedProps\n ? Required<MergedProps>[StripDefaultPrefix<K>]\n : never;\n };\n\n type MergeChildProps<Root, Component> =\n Omit<Root, keyof Component> &\n Omit<Component, keyof Root> &\n {\n [K in keyof Root & keyof Component]: [Root[K] & Component[K]] extends [never]\n ? Root[K] | Component[K]\n : Root[K] & Component[K];\n };\n\n type InferPropsFromRoot<\n Root extends new (...args: any) => any,\n Child extends string,\n > = InstanceType<Root>[`get${Child}Props`] extends (...args: any[]) => infer R ? R : Record<string, never>;\n\n export type InferComponentProps<\n Component extends ReactFCLike,\n > = Omit<IRootComponentProps & ReactFCLikeProps<Component>, 'tag'>;\n\n export type InferChildComponentProps<\n Component extends ReactFCLike,\n Root extends new (...args: any) => any,\n ChildName extends string,\n MergedProps = MergeChildProps<InferPropsFromRoot<Root, ChildName>, InferComponentProps<Component>>,\n > = MergedProps & IStyledProps;\n\n export type PartialRequired<T, K extends keyof T> = Omit<T, K> & {\n [key in K]-?: T[key];\n };\n export type EfficientOmit<Type, Keys> = {\n [Property in keyof Type as Exclude<Property, Keys>]: Type[Property];\n };\n export type ExtractEnhanceType<F extends readonly ((...args: any[]) => any)[]> =\n F['length'] extends 0\n ? {}\n : F['length'] extends 1\n ? {\n [K in keyof ReturnType<F[0]>]: ReturnType<F[0]>[K];\n }\n : F['length'] extends 2\n // eslint-disable-next-line @stylistic/indent-binary-ops\n ? {\n [K in keyof ReturnType<F[0]>]: ReturnType<F[0]>[K];\n } & {\n [K in keyof ReturnType<F[1]>]: ReturnType<F[1]>[K];\n }\n : F['length'] extends 3\n // eslint-disable-next-line @stylistic/indent-binary-ops\n ? {\n [K in keyof ReturnType<F[0]>]: ReturnType<F[0]>[K];\n } & {\n [K in keyof ReturnType<F[1]>]: ReturnType<F[1]>[K];\n } & {\n [K in keyof ReturnType<F[2]>]: ReturnType<F[2]>[K];\n }\n : F['length'] extends 4\n // eslint-disable-next-line @stylistic/indent-binary-ops\n ? {\n [K in keyof ReturnType<F[0]>]: ReturnType<F[0]>[K];\n } & {\n [K in keyof ReturnType<F[1]>]: ReturnType<F[1]>[K];\n } & {\n [K in keyof ReturnType<F[2]>]: ReturnType<F[2]>[K];\n } & {\n [K in keyof ReturnType<F[3]>]: ReturnType<F[3]>[K];\n }\n : {};\n export type ComponentPropsNesting<Tag extends InternalTypings.ComponentTag> = Omit<\n MergeProps<\n Tag extends React.FC\n ? ReactFCProps<Tag>\n : Tag extends React.ComponentClass\n ? ReactComponentProps<Tag>\n : Tag extends ReactFCLike\n ? ReactFCLikeProps<Tag>\n : Tag extends keyof JSX.IntrinsicElements\n ? JSX.IntrinsicElements[Tag]\n : {},\n Tag extends { __nestedProps: infer NestedProps } ? NestedProps : {}\n >,\n 'children' | 'tag'\n >;\n export type ReturnResult =\n | React.ReactElement\n | React.ReactNode\n | React.ReactNode[]\n | string\n | null;\n export type ComponentTag =\n | keyof JSX.IntrinsicElements\n | React.ComponentClass\n | React.FC\n | ReactFCLike;\n export type ComponentProps<\n Tag extends ComponentTag | [ComponentTag, keyof JSX.IntrinsicElements],\n BaseTag extends ComponentTag | never,\n Props,\n Context = never,\n AdditionalContext extends Readonly<any[]> = never[],\n Instance = never,\n > = {\n tag?: Tag;\n children?: ComponentChildren<\n EfficientOmit<Props, 'children'> & { children: React.ReactNode },\n Context,\n ReturnResult,\n AdditionalContext\n >;\n } & ComponentBasicProps<Tag extends [ComponentTag, keyof JSX.IntrinsicElements] ? Tag[0] : Tag, Instance> &\n MergeProps<\n EfficientOmit<Props, 'tag' | 'children'>,\n MergeProps<ComponentPropsNesting<Tag extends [ComponentTag, keyof JSX.IntrinsicElements] ? Tag[0] : Tag>, ComponentPropsNesting<BaseTag>>\n >;\n export type PropsRenderingResultComponentProps<\n Tag extends ComponentTag,\n Props,\n Context = {},\n AdditionalContext extends any[] = never[],\n > = {\n tag?: Tag;\n children?: ComponentChildren<\n EfficientOmit<Props, 'children'> & { children: React.ReactNode },\n Context,\n Partial<\n EfficientOmit<\n MergeProps<Props, ComponentPropsNesting<Tag>>,\n 'children' | 'tag' | 'ref'\n > & {\n children?: React.ReactNode;\n }\n >,\n AdditionalContext\n >;\n } & ComponentBasicProps<Tag> &\n MergeProps<EfficientOmit<Props, 'tag' | 'children'>, ComponentPropsNesting<Tag>>;\n export type ComponentRenderingResults = React.ReactElement;\n export type ComponentAdditive<\n BaseTag extends ComponentTag,\n Tag extends ComponentTag,\n Props = {},\n Context = {},\n AdditionalContext = {},\n > = {\n __nestedProps: ComponentPropsNesting<BaseTag>;\n __tag: Tag;\n __props: Props;\n __context: Context;\n __additionalContext: AdditionalContext;\n __IS_ICON: boolean;\n displayName: string;\n newInstance: () => Component<BaseTag, Props, Context>;\n [CORE_COMPONENT]: boolean;\n };\n export type InferJsxIntrinsicElement<T extends React.DetailedHTMLProps<any, any>> =\n T extends React.DetailedHTMLProps<infer _, infer Element> ? Element : HTMLElement;\n type InferElementFromRef<T> = T extends React.Ref<infer Element> ? Element : never;\n type InferRefElementFromProps<T> = 'ref' extends keyof T\n ? InferElementFromRef<T['ref']>\n : HTMLElement;\n export type ComponentHtmlElement<Tag extends ComponentTag> =\n Tag extends keyof JSX.IntrinsicElements\n ? InferJsxIntrinsicElement<JSX.IntrinsicElements[Tag]>\n : Tag extends { __nestedProps: infer NestedProps }\n ? InferRefElementFromProps<NestedProps>\n : HTMLElement;\n export type UntypeRefAndTag<Props> = Intergalactic.InternalTypings.EfficientOmit<\n Props,\n 'ref' | 'tag'\n > & {\n ref: React.Ref<any>;\n tag: Intergalactic.InternalTypings.ComponentTag;\n };\n }\n export type Component<\n BaseTag extends InternalTypings.ComponentTag = never,\n BaseProps = {},\n Context = {},\n AdditionalContext extends Readonly<any[]> = never[],\n Instance = never,\n > = (<\n Tag extends InternalTypings.ComponentTag | [InternalTypings.ComponentTag, keyof JSX.IntrinsicElements] = BaseTag,\n Props extends BaseProps = BaseProps,\n >(\n props: InternalTypings.ComponentProps<Tag, BaseTag, Props, Context, AdditionalContext, Instance>,\n ) => InternalTypings.ComponentRenderingResults) &\n InternalTypings.ComponentAdditive<BaseTag, Tag, BaseProps, Context, AdditionalContext>;\n export type Tag = InternalTypings.ComponentTag;\n export type DomProps<Tag extends keyof JSX.IntrinsicElements> =\n InternalTypings.InferJsxIntrinsicElement<JSX.IntrinsicElements[Tag]>;\n export type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<\n T,\n Exclude<keyof T, Keys>\n > &\n {\n [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;\n }[Keys];\n}\n\nexport const wrapIntergalacticComponent = <\n Component extends Intergalactic.Component<any, any, any, any>,\n PropsExtending = {},\n>(\n wrapper: (\n props: Intergalactic.InternalTypings.UntypeRefAndTag<\n Intergalactic.InternalTypings.ComponentPropsNesting<Component>\n > &\n PropsExtending,\n ) => React.ReactNode,\n): Intergalactic.Component<\n Component['__tag'],\n Component['__props'] & Component['__nestedProps'] & PropsExtending,\n Component['__context'],\n Component['__additionalContext']\n> => wrapper as any;\n"],"mappings":";;;;;;;;AACA,IAAAA,MAAA,GAAAC,OAAA;AAUA,IAAAC,QAAA,GAAAD,OAAA;AAsBA;;AAGA,MAAME,IAAU,GAAAC,OAAA,CAAAD,IAAA,GAAGE,SAAgB;AAyC5B,MAAeC,SAAS,SAOrBC,oBAAa,CAAe;EAGpCC,WAAWA,CAACC,KAAY,EAAE;IACxB,KAAK,CAACA,KAAK,CAAC;IAAC,IAAAC,gBAAA,CAAAC,OAAA,0BAH0B,CAAC,CAAC;IAAA,IAAAD,gBAAA,CAAAC,OAAA,gBAyCTN,SAAS;IAAA,IAAAK,gBAAA,CAAAC,OAAA,wBAElB,KAAK;IAAA,IAAAD,gBAAA,CAAAC,OAAA,QAEnBC,sBAAa;IAxCtB,IAAIH,KAAK,CAACI,WAAW,EAAE;MACrBJ,KAAK,CAACI,WAAW,CAACC,OAAO,GAAG,IAAI;IAClC;EACF;EAEUC,iBAAiBA,CAAA,EAA0D;IACnF;IACA,OAAO,CAAC,CAAC;EACX;EAEA,IAAcC,QAAQA,CAAA,EAUnB;IACD;IACA,OAAO,CAAC,CAAC;EACX;EAEA,IAAcC,OAAOA,CAAA,EAAG;IACtB,OAAO,CAAC,CAAC;EAQX;AAOF;;AAEA;AAAAb,OAAA,CAAAE,SAAA,GAAAA,SAAA;AAAA,IACiBY,aAAa,GAAAd,OAAA,CAAAc,aAAA;AAmQvB,MAAMC,0BAA0B,GAIrCC,OAKoB,IAMjBA,OAAc;AAAChB,OAAA,CAAAe,0BAAA,GAAAA,0BAAA","ignoreList":[]}
@@ -3,12 +3,15 @@ import { PureComponent } from "react";
3
3
  import { CORE_INSTANCE } from "./symbols.mjs";
4
4
  const Root = void 0;
5
5
  class Component extends PureComponent {
6
- constructor(...args) {
7
- super(...args);
6
+ constructor(props) {
7
+ super(props);
8
8
  _defineProperty(this, "__defaultProps", {});
9
9
  _defineProperty(this, "Root", void 0);
10
10
  _defineProperty(this, "isControlled", false);
11
11
  _defineProperty(this, CORE_INSTANCE, void 0);
12
+ if (props.instanceRef) {
13
+ props.instanceRef.current = this;
14
+ }
12
15
  }
13
16
  uncontrolledProps() {
14
17
  return {};
@@ -1 +1 @@
1
- {"version":3,"file":"Component.mjs","names":["PureComponent","CORE_INSTANCE","Root","undefined","Component","constructor","args","_defineProperty","uncontrolledProps","handlers","asProps","Intergalactic","wrapIntergalacticComponent","wrapper"],"sources":["../../src/core-types/Component.ts"],"sourcesContent":["import type React from 'react';\nimport { type\nAllHTMLAttributes, type\nForwardRefExoticComponent,\nPureComponent, type\nReactNode, type\nRefObject,\n} from 'react';\n\nimport type { CORE_COMPONENT } from './symbols';\nimport { CORE_INSTANCE } from './symbols';\nimport type { IStyledProps } from '../styled/index';\n\ntype HandlersType<UCProps> = { [K in keyof UCProps]?: <T = unknown>(arg: T) => void };\n\nexport interface IRootComponentProps<Props = {}, Ctx = {}, H = {}> {\n 'forwardRef'?: RefObject<any>;\n 'Children'?: any;\n 'children'?: ReactNode | ((props: Props & Ctx, handlers: HandlersType<H>) => ReactNode);\n 'styles'?: IStyledProps['styles'];\n 'data-ui-name'?: string;\n}\n\nexport interface IRootNodeProps {\n render: React.ElementType | string;\n tag?: React.ElementType | string;\n\n [key: string]: any;\n}\n\ntype Root = ForwardRefExoticComponent<IRootNodeProps>;\n\n/** @deprecated */\nexport type PropGetterFn = <T extends {}>(props?: T) => T & { [key: string]: unknown };\n\nconst Root: Root = undefined as any;\n\nexport { Root };\n\ntype RootResult<T extends Intergalactic.Tag | never> = ForwardRefExoticComponent<IRootNodeProps & Intergalactic.InternalTypings.ComponentPropsNesting<T>>;\n\ntype BaseAsProps<Props = {}, Enhance extends readonly ((...args: any[]) => any)[] = [], InnerProps = {}> = Readonly<\n Props &\n IRootComponentProps &\n Intergalactic.InternalTypings.ExtractEnhanceType<Enhance> &\n InnerProps\n>;\n\ntype UncontrolledPropValueSetterFunction<V> = (event?: any) => void | boolean | V;\ntype UncontrolledPropValueChainHandler<V> = (value: V, event?: any) => void | boolean | V;\n\ntype UncontrolledPropValue<V> =\n | V\n | null\n | UncontrolledPropValueSetterFunction<V>\n | Array<UncontrolledPropValueChainHandler<V>>\n | [UncontrolledPropValueSetterFunction<V> | null, ...UncontrolledPropValueChainHandler<V>[]];\n\nexport interface IComponent<\n C,\n /*\n * Infered this way since `Props` within `Component` abstract class\n * is used in multiple places in different variance positions\n * causing the final type to be `never`.\n * */\n P = C extends { props: Readonly<infer P> } ? P : never,\n DP = C extends Component<any, any, any, any, any, infer DP> ?\n DP extends never\n ? never\n : DP\n : never,\n> {\n new (...args: any[]): C;\n defaultProps?: DP | ((props: P) => DP) | (() => DP);\n}\nexport abstract class Component<\n Props = {},\n Enhance extends readonly ((...args: any[]) => any)[] = [],\n Uncontrolled extends Readonly<{ [key in keyof Props]?: UncontrolledPropValue<Props[key]> }> = never,\n InnerProps = {},\n State = {},\n DefaultProps extends Intergalactic.InternalTypings.ValidDefaultProps<DefaultProps, Props & InnerProps> = never,\n> extends PureComponent<Props, State> {\n protected __defaultProps: DefaultProps = {} as DefaultProps;\n\n protected uncontrolledProps(): [Uncontrolled] extends [never] ? never : Uncontrolled {\n // @ts-ignore. This is a default value. Should be defined in related classes.\n return {};\n }\n\n protected get handlers(): Readonly<{\n [key in keyof Uncontrolled]: key extends keyof Props\n ? Uncontrolled[key] extends null | Props[key]\n ? (value: Props[key], e?: any) => void\n : Uncontrolled[key] extends [UncontrolledPropValueSetterFunction<any> | null, ...UncontrolledPropValueChainHandler<any>[]]\n ? Uncontrolled[key][1]\n : Uncontrolled[key] extends Array<UncontrolledPropValueChainHandler<any>>\n ? Uncontrolled[key][0]\n : Uncontrolled[key]\n : never\n }> {\n // @ts-ignore. The body will be generated in factory\n return {};\n }\n\n protected get asProps() {\n return {} as Readonly<\n { Root: RootResult<any> } & BaseAsProps<Props, Enhance, InnerProps> &\n Intergalactic.InternalTypings.EfficientOmit<\n AllHTMLAttributes<any>,\n keyof BaseAsProps<Props, Enhance, InnerProps>\n > &\n ([DefaultProps] extends [never] ? {} : Intergalactic.InternalTypings.MappedDefaultProps<DefaultProps, Props & InnerProps>)\n >;\n }\n\n protected Root: RootResult<any> = undefined as any;\n\n protected isControlled = false;\n\n protected [CORE_INSTANCE]: any;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Intergalactic {\n type ReactFCProps<C extends React.FC> = C extends React.FC<infer Props> ? Omit<Props, 'tag'> : {};\n type ReactComponentProps<C extends React.ComponentClass> = C extends React.ComponentClass<\n infer Props\n >\n ? Omit<Props, 'tag'>\n : never;\n type ReactFCLike = (props: any) => any;\n type ReactFCLikeProps<C extends ReactFCLike> = C extends (props: infer Props) => any ? Props : {};\n type ComponentChildren<\n Props,\n Context,\n RenderingResult = InternalTypings.ReturnResult,\n AdditionalContext extends Readonly<any[]> = never[],\n > =\n | ((props: MergeProps<Context, Props>, ...args: AdditionalContext) => RenderingResult)\n | InternalTypings.ReturnResult;\n type ComponentBasicProps<Tag extends InternalTypings.ComponentTag> = {\n ref?: React.Ref<InternalTypings.ComponentHtmlElement<Tag> | null>;\n /** @private DO NOT USE IT. Low-level api that prevents specified props from being applied as DOM attribute. */\n __excludeProps?: string[];\n };\n type MergeProps<HighPriorityProps, LowPriorityProps> = {\n [K in keyof LowPriorityProps]: K extends keyof HighPriorityProps\n ? HighPriorityProps[K]\n : LowPriorityProps[K];\n } & HighPriorityProps;\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace InternalTypings {\n type StripDefaultPrefix<K> = K extends `default${infer Rest}` ? Uncapitalize<Rest> : K;\n\n export type ValidDefaultProps<DefaultProps, MergedProps> = {\n [K in keyof DefaultProps]: K extends keyof MergedProps\n ? MergedProps[K]\n : StripDefaultPrefix<K> extends keyof MergedProps\n ? MergedProps[StripDefaultPrefix<K>]\n : never;\n };\n\n export type MappedDefaultProps<DefaultProps, MergedProps> = {\n [K in keyof DefaultProps as StripDefaultPrefix<K>]: K extends keyof MergedProps\n ? Required<MergedProps>[K]\n : StripDefaultPrefix<K> extends keyof MergedProps\n ? Required<MergedProps>[StripDefaultPrefix<K>]\n : never;\n };\n\n type MergeChildProps<Root, Component> = {\n [K in keyof Root | keyof Component]:\n K extends keyof Root\n ? K extends keyof Component\n ? Root[K] & Component[K] extends never\n ? Root[K] | Component[K]\n : Root[K] & Component[K]\n : Root[K]\n : K extends keyof Component\n ? Component[K]\n : never\n };\n\n type InferPropsFromRoot<\n Root extends new (...args: any) => any,\n Child extends string,\n > = InstanceType<Root>[`get${Child}Props`] extends (...args: any[]) => infer R ? R : Record<string, never>;\n\n export type InferComponentProps<\n Component extends ReactFCLike,\n > = Omit<IRootComponentProps & ReactFCLikeProps<Component>, 'tag'>;\n\n export type InferChildComponentProps<\n Component extends ReactFCLike,\n Root extends new (...args: any) => any,\n ChildName extends string,\n MergedProps = MergeChildProps<InferPropsFromRoot<Root, ChildName>, InferComponentProps<Component>>,\n > = MergedProps & IStyledProps;\n\n export type PartialRequired<T, K extends keyof T> = Omit<T, K> & {\n [key in K]-?: T[key];\n };\n export type EfficientOmit<Type, Keys> = {\n [Property in keyof Type as Exclude<Property, Keys>]: Type[Property];\n };\n export type ExtractEnhanceType<F extends readonly ((...args: any[]) => any)[]> =\n F['length'] extends 0\n ? {}\n : F['length'] extends 1\n ? {\n [K in keyof ReturnType<F[0]>]: ReturnType<F[0]>[K];\n }\n : F['length'] extends 2\n // eslint-disable-next-line @stylistic/indent-binary-ops\n ? {\n [K in keyof ReturnType<F[0]>]: ReturnType<F[0]>[K];\n } & {\n [K in keyof ReturnType<F[1]>]: ReturnType<F[1]>[K];\n }\n : F['length'] extends 3\n // eslint-disable-next-line @stylistic/indent-binary-ops\n ? {\n [K in keyof ReturnType<F[0]>]: ReturnType<F[0]>[K];\n } & {\n [K in keyof ReturnType<F[1]>]: ReturnType<F[1]>[K];\n } & {\n [K in keyof ReturnType<F[2]>]: ReturnType<F[2]>[K];\n }\n : F['length'] extends 4\n // eslint-disable-next-line @stylistic/indent-binary-ops\n ? {\n [K in keyof ReturnType<F[0]>]: ReturnType<F[0]>[K];\n } & {\n [K in keyof ReturnType<F[1]>]: ReturnType<F[1]>[K];\n } & {\n [K in keyof ReturnType<F[2]>]: ReturnType<F[2]>[K];\n } & {\n [K in keyof ReturnType<F[3]>]: ReturnType<F[3]>[K];\n }\n : {};\n export type ComponentPropsNesting<Tag extends InternalTypings.ComponentTag> = Omit<\n MergeProps<\n Tag extends React.FC\n ? ReactFCProps<Tag>\n : Tag extends React.ComponentClass\n ? ReactComponentProps<Tag>\n : Tag extends ReactFCLike\n ? ReactFCLikeProps<Tag>\n : Tag extends keyof JSX.IntrinsicElements\n ? JSX.IntrinsicElements[Tag]\n : {},\n Tag extends { __nestedProps: infer NestedProps } ? NestedProps : {}\n >,\n 'children' | 'tag'\n >;\n export type ReturnResult =\n | React.ReactElement\n | React.ReactNode\n | React.ReactNode[]\n | string\n | null;\n export type ComponentTag =\n | keyof JSX.IntrinsicElements\n | React.ComponentClass\n | React.FC\n | ReactFCLike;\n export type ComponentProps<\n Tag extends ComponentTag | [ComponentTag, keyof JSX.IntrinsicElements],\n BaseTag extends ComponentTag | never,\n Props,\n Context = never,\n AdditionalContext extends Readonly<any[]> = never[],\n > = {\n tag?: Tag;\n children?: ComponentChildren<\n EfficientOmit<Props, 'children'> & { children: React.ReactNode },\n Context,\n ReturnResult,\n AdditionalContext\n >;\n } & ComponentBasicProps<Tag extends [ComponentTag, keyof JSX.IntrinsicElements] ? Tag[0] : Tag> &\n MergeProps<\n EfficientOmit<Props, 'tag' | 'children'>,\n MergeProps<ComponentPropsNesting<Tag extends [ComponentTag, keyof JSX.IntrinsicElements] ? Tag[0] : Tag>, ComponentPropsNesting<BaseTag>>\n >;\n export type PropsRenderingResultComponentProps<\n Tag extends ComponentTag,\n Props,\n Context = {},\n AdditionalContext extends any[] = never[],\n > = {\n tag?: Tag;\n children?: ComponentChildren<\n EfficientOmit<Props, 'children'> & { children: React.ReactNode },\n Context,\n Partial<\n EfficientOmit<\n MergeProps<Props, ComponentPropsNesting<Tag>>,\n 'children' | 'tag' | 'ref'\n > & {\n children?: React.ReactNode;\n }\n >,\n AdditionalContext\n >;\n } & ComponentBasicProps<Tag> &\n MergeProps<EfficientOmit<Props, 'tag' | 'children'>, ComponentPropsNesting<Tag>>;\n export type ComponentRenderingResults = React.ReactElement;\n export type ComponentAdditive<\n BaseTag extends ComponentTag,\n Tag extends ComponentTag,\n Props = {},\n Context = {},\n AdditionalContext = {},\n > = {\n __nestedProps: ComponentPropsNesting<BaseTag>;\n __tag: Tag;\n __props: Props;\n __context: Context;\n __additionalContext: AdditionalContext;\n __IS_ICON: boolean;\n displayName: string;\n newInstance: () => Component<BaseTag, Props, Context>;\n [CORE_COMPONENT]: boolean;\n };\n export type InferJsxIntrinsicElement<T extends React.DetailedHTMLProps<any, any>> =\n T extends React.DetailedHTMLProps<infer _, infer Element> ? Element : HTMLElement;\n type InferElementFromRef<T> = T extends React.Ref<infer Element> ? Element : never;\n type InferRefElementFromProps<T> = 'ref' extends keyof T\n ? InferElementFromRef<T['ref']>\n : HTMLElement;\n export type ComponentHtmlElement<Tag extends ComponentTag> =\n Tag extends keyof JSX.IntrinsicElements\n ? InferJsxIntrinsicElement<JSX.IntrinsicElements[Tag]>\n : Tag extends { __nestedProps: infer NestedProps }\n ? InferRefElementFromProps<NestedProps>\n : HTMLElement;\n export type UntypeRefAndTag<Props> = Intergalactic.InternalTypings.EfficientOmit<\n Props,\n 'ref' | 'tag'\n > & {\n ref: React.Ref<any>;\n tag: Intergalactic.InternalTypings.ComponentTag;\n };\n }\n export type Component<\n BaseTag extends InternalTypings.ComponentTag = never,\n BaseProps = {},\n Context = {},\n AdditionalContext extends Readonly<any[]> = never[],\n > = (<\n Tag extends InternalTypings.ComponentTag | [InternalTypings.ComponentTag, keyof JSX.IntrinsicElements] = BaseTag,\n Props extends BaseProps = BaseProps,\n >(\n props: InternalTypings.ComponentProps<Tag, BaseTag, Props, Context, AdditionalContext>,\n ) => InternalTypings.ComponentRenderingResults) &\n InternalTypings.ComponentAdditive<BaseTag, Tag, BaseProps, Context, AdditionalContext>;\n export type Tag = InternalTypings.ComponentTag;\n export type DomProps<Tag extends keyof JSX.IntrinsicElements> =\n InternalTypings.InferJsxIntrinsicElement<JSX.IntrinsicElements[Tag]>;\n export type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<\n T,\n Exclude<keyof T, Keys>\n > &\n {\n [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;\n }[Keys];\n}\n\nexport const wrapIntergalacticComponent = <\n Component extends Intergalactic.Component<any, any, any, any>,\n PropsExtending = {},\n>(\n wrapper: (\n props: Intergalactic.InternalTypings.UntypeRefAndTag<\n Intergalactic.InternalTypings.ComponentPropsNesting<Component>\n > &\n PropsExtending,\n ) => React.ReactNode,\n): Intergalactic.Component<\n Component['__tag'],\n Component['__props'] & Component['__nestedProps'] & PropsExtending,\n Component['__context'],\n Component['__additionalContext']\n> => wrapper as any;\n"],"mappings":";AACA,SAGAA,aAAa,QAGN,OAAO;AAGd,SAASC,aAAa,QAAQ,eAAW;;AAsBzC;;AAGA,MAAMC,IAAU,GAAGC,SAAgB;AAEnC,SAASD,IAAI;AAsCb,OAAO,MAAeE,SAAS,SAOrBJ,aAAa,CAAe;EAAAK,YAAA,GAAAC,IAAA;IAAA,SAAAA,IAAA;IAAAC,eAAA,yBACK,CAAC,CAAC;IAAAA,eAAA,eAiCTJ,SAAS;IAAAI,eAAA,uBAElB,KAAK;IAAAA,eAAA,OAEnBN,aAAa;EAAA;EAnCdO,iBAAiBA,CAAA,EAA0D;IACnF;IACA,OAAO,CAAC,CAAC;EACX;EAEA,IAAcC,QAAQA,CAAA,EAUnB;IACD;IACA,OAAO,CAAC,CAAC;EACX;EAEA,IAAcC,OAAOA,CAAA,EAAG;IACtB,OAAO,CAAC,CAAC;EAQX;AAOF;;AAEA;AAAA,WACiBC,aAAa;AAuP9B,OAAO,MAAMC,0BAA0B,GAIrCC,OAKoB,IAMjBA,OAAc","ignoreList":[]}
1
+ {"version":3,"file":"Component.mjs","names":["PureComponent","CORE_INSTANCE","Root","undefined","Component","constructor","props","_defineProperty","instanceRef","current","uncontrolledProps","handlers","asProps","Intergalactic","wrapIntergalacticComponent","wrapper"],"sources":["../../src/core-types/Component.ts"],"sourcesContent":["import type React from 'react';\nimport {\n type AllHTMLAttributes,\n type ForwardRefExoticComponent,\n type MutableRefObject,\n PureComponent,\n type ReactNode,\n type RefObject,\n} from 'react';\n\nimport type { CORE_COMPONENT } from './symbols';\nimport { CORE_INSTANCE } from './symbols';\nimport type { IStyledProps } from '../styled/index';\n\ntype HandlersType<UCProps> = { [K in keyof UCProps]?: <T = unknown>(arg: T) => void };\n\nexport interface IRootComponentProps<Props = {}, Ctx = {}, H = {}> {\n 'forwardRef'?: RefObject<any>;\n 'Children'?: any;\n 'children'?: ReactNode | ((props: Props & Ctx, handlers: HandlersType<H>) => ReactNode);\n 'styles'?: IStyledProps['styles'];\n 'data-ui-name'?: string;\n}\n\nexport interface IRootNodeProps {\n render: React.ElementType | string;\n tag?: React.ElementType | string;\n\n [key: string]: any;\n}\n\ntype Root = ForwardRefExoticComponent<IRootNodeProps>;\n\n/** @deprecated */\nexport type PropGetterFn = <T extends {}>(props?: T) => T & { [key: string]: unknown };\n\nconst Root: Root = undefined as any;\n\nexport { Root };\n\ntype RootResult<T extends Intergalactic.Tag | never> = ForwardRefExoticComponent<IRootNodeProps & Intergalactic.InternalTypings.ComponentPropsNesting<T>>;\n\ntype BaseAsProps<Props = {}, Enhance extends readonly ((...args: any[]) => any)[] = [], InnerProps = {}> = Readonly<\n Props &\n IRootComponentProps &\n Intergalactic.InternalTypings.ExtractEnhanceType<Enhance> &\n InnerProps\n>;\n\ntype UncontrolledPropValueSetterFunction<V> = (event?: any) => void | boolean | V;\ntype UncontrolledPropValueChainHandler<V> = (value: V, event?: any) => void | boolean | V;\n\ntype UncontrolledPropValue<V> =\n | V\n | null\n | UncontrolledPropValueSetterFunction<V>\n | Array<UncontrolledPropValueChainHandler<V>>\n | [UncontrolledPropValueSetterFunction<V> | null, ...UncontrolledPropValueChainHandler<V>[]];\n\nexport interface IComponent<\n C,\n /*\n * Infered this way since `Props` within `Component` abstract class\n * is used in multiple places in different variance positions\n * causing the final type to be `never`.\n * */\n P = C extends { props: Readonly<infer P> } ? P : never,\n DP = C extends Component<any, any, any, any, any, infer DP> ?\n DP extends never\n ? never\n : DP\n : never,\n> {\n new (...args: any[]): C;\n defaultProps?: DP | ((props: P) => DP) | (() => DP);\n}\n\nexport abstract class Component<\n Props extends (object & { instanceRef?: MutableRefObject<any> }) = {},\n Enhance extends readonly ((...args: any[]) => any)[] = [],\n Uncontrolled extends Readonly<{ [key in keyof Props]?: UncontrolledPropValue<Props[key]> }> = never,\n InnerProps = {},\n State = {},\n DefaultProps extends Intergalactic.InternalTypings.ValidDefaultProps<DefaultProps, Props & InnerProps> = never,\n> extends PureComponent<Props, State> {\n protected __defaultProps: DefaultProps = {} as DefaultProps;\n\n constructor(props: Props) {\n super(props);\n\n if (props.instanceRef) {\n props.instanceRef.current = this;\n }\n }\n\n protected uncontrolledProps(): [Uncontrolled] extends [never] ? never : Uncontrolled {\n // @ts-ignore. This is a default value. Should be defined in related classes.\n return {};\n }\n\n protected get handlers(): Readonly<{\n [key in keyof Uncontrolled]: key extends keyof Props\n ? Uncontrolled[key] extends null | Props[key]\n ? (value: Props[key], e?: any) => void\n : Uncontrolled[key] extends [UncontrolledPropValueSetterFunction<any> | null, ...UncontrolledPropValueChainHandler<any>[]]\n ? Uncontrolled[key][1]\n : Uncontrolled[key] extends Array<UncontrolledPropValueChainHandler<any>>\n ? Uncontrolled[key][0]\n : Uncontrolled[key]\n : never\n }> {\n // @ts-ignore. The body will be generated in factory\n return {};\n }\n\n protected get asProps() {\n return {} as Readonly<\n { Root: RootResult<any> } & BaseAsProps<Props, Enhance, InnerProps> &\n Intergalactic.InternalTypings.EfficientOmit<\n AllHTMLAttributes<any>,\n keyof BaseAsProps<Props, Enhance, InnerProps>\n > &\n ([DefaultProps] extends [never] ? {} : Intergalactic.InternalTypings.MappedDefaultProps<DefaultProps, Props & InnerProps>)\n >;\n }\n\n protected Root: RootResult<any> = undefined as any;\n\n protected isControlled = false;\n\n protected [CORE_INSTANCE]: any;\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace Intergalactic {\n type ReactFCProps<C extends React.FC> = C extends React.FC<infer Props> ? Omit<Props, 'tag'> : {};\n type ReactComponentProps<C extends React.ComponentClass> = C extends React.ComponentClass<\n infer Props\n >\n ? Omit<Props, 'tag'>\n : never;\n type ReactFCLike = (props: any) => any;\n type ReactFCLikeProps<C extends ReactFCLike> = C extends (props: infer Props) => any ? Props : {};\n type ComponentChildren<\n Props,\n Context,\n RenderingResult = InternalTypings.ReturnResult,\n AdditionalContext extends Readonly<any[]> = never[],\n > =\n | ((props: MergeProps<Context, Props>, ...args: AdditionalContext) => RenderingResult)\n | InternalTypings.ReturnResult;\n type ComponentBasicProps<Tag extends InternalTypings.ComponentTag, Instance = never> = {\n ref?: React.Ref<InternalTypings.ComponentHtmlElement<Tag> | null>;\n /**\n * Ref to an instance of a class component.\n */\n instanceRef?: [Instance] extends [never] ? never : React.RefObject<Instance>;\n /** @private DO NOT USE IT. Low-level api that prevents specified props from being applied as DOM attribute. */\n __excludeProps?: string[];\n };\n type MergeProps<HighPriorityProps, LowPriorityProps> = {\n [K in keyof LowPriorityProps]: K extends keyof HighPriorityProps\n ? HighPriorityProps[K]\n : LowPriorityProps[K];\n } & HighPriorityProps;\n /** @private */\n // eslint-disable-next-line @typescript-eslint/no-namespace\n export namespace InternalTypings {\n export type RemoveIndexSignature<T> = {\n [K in keyof T as string extends K\n ? never\n : number extends K\n ? never\n : symbol extends K\n ? never\n : K]: T[K];\n };\n\n type StripDefaultPrefix<K> = K extends `default${infer Rest}` ? Uncapitalize<Rest> : K;\n\n export type ValidDefaultProps<DefaultProps, MergedProps> = {\n [K in keyof DefaultProps]: K extends keyof MergedProps\n ? MergedProps[K]\n : StripDefaultPrefix<K> extends keyof MergedProps\n ? MergedProps[StripDefaultPrefix<K>]\n : never;\n };\n\n export type MappedDefaultProps<DefaultProps, MergedProps> = {\n [K in keyof DefaultProps as StripDefaultPrefix<K>]: K extends keyof MergedProps\n ? Required<MergedProps>[K]\n : StripDefaultPrefix<K> extends keyof MergedProps\n ? Required<MergedProps>[StripDefaultPrefix<K>]\n : never;\n };\n\n type MergeChildProps<Root, Component> =\n Omit<Root, keyof Component> &\n Omit<Component, keyof Root> &\n {\n [K in keyof Root & keyof Component]: [Root[K] & Component[K]] extends [never]\n ? Root[K] | Component[K]\n : Root[K] & Component[K];\n };\n\n type InferPropsFromRoot<\n Root extends new (...args: any) => any,\n Child extends string,\n > = InstanceType<Root>[`get${Child}Props`] extends (...args: any[]) => infer R ? R : Record<string, never>;\n\n export type InferComponentProps<\n Component extends ReactFCLike,\n > = Omit<IRootComponentProps & ReactFCLikeProps<Component>, 'tag'>;\n\n export type InferChildComponentProps<\n Component extends ReactFCLike,\n Root extends new (...args: any) => any,\n ChildName extends string,\n MergedProps = MergeChildProps<InferPropsFromRoot<Root, ChildName>, InferComponentProps<Component>>,\n > = MergedProps & IStyledProps;\n\n export type PartialRequired<T, K extends keyof T> = Omit<T, K> & {\n [key in K]-?: T[key];\n };\n export type EfficientOmit<Type, Keys> = {\n [Property in keyof Type as Exclude<Property, Keys>]: Type[Property];\n };\n export type ExtractEnhanceType<F extends readonly ((...args: any[]) => any)[]> =\n F['length'] extends 0\n ? {}\n : F['length'] extends 1\n ? {\n [K in keyof ReturnType<F[0]>]: ReturnType<F[0]>[K];\n }\n : F['length'] extends 2\n // eslint-disable-next-line @stylistic/indent-binary-ops\n ? {\n [K in keyof ReturnType<F[0]>]: ReturnType<F[0]>[K];\n } & {\n [K in keyof ReturnType<F[1]>]: ReturnType<F[1]>[K];\n }\n : F['length'] extends 3\n // eslint-disable-next-line @stylistic/indent-binary-ops\n ? {\n [K in keyof ReturnType<F[0]>]: ReturnType<F[0]>[K];\n } & {\n [K in keyof ReturnType<F[1]>]: ReturnType<F[1]>[K];\n } & {\n [K in keyof ReturnType<F[2]>]: ReturnType<F[2]>[K];\n }\n : F['length'] extends 4\n // eslint-disable-next-line @stylistic/indent-binary-ops\n ? {\n [K in keyof ReturnType<F[0]>]: ReturnType<F[0]>[K];\n } & {\n [K in keyof ReturnType<F[1]>]: ReturnType<F[1]>[K];\n } & {\n [K in keyof ReturnType<F[2]>]: ReturnType<F[2]>[K];\n } & {\n [K in keyof ReturnType<F[3]>]: ReturnType<F[3]>[K];\n }\n : {};\n export type ComponentPropsNesting<Tag extends InternalTypings.ComponentTag> = Omit<\n MergeProps<\n Tag extends React.FC\n ? ReactFCProps<Tag>\n : Tag extends React.ComponentClass\n ? ReactComponentProps<Tag>\n : Tag extends ReactFCLike\n ? ReactFCLikeProps<Tag>\n : Tag extends keyof JSX.IntrinsicElements\n ? JSX.IntrinsicElements[Tag]\n : {},\n Tag extends { __nestedProps: infer NestedProps } ? NestedProps : {}\n >,\n 'children' | 'tag'\n >;\n export type ReturnResult =\n | React.ReactElement\n | React.ReactNode\n | React.ReactNode[]\n | string\n | null;\n export type ComponentTag =\n | keyof JSX.IntrinsicElements\n | React.ComponentClass\n | React.FC\n | ReactFCLike;\n export type ComponentProps<\n Tag extends ComponentTag | [ComponentTag, keyof JSX.IntrinsicElements],\n BaseTag extends ComponentTag | never,\n Props,\n Context = never,\n AdditionalContext extends Readonly<any[]> = never[],\n Instance = never,\n > = {\n tag?: Tag;\n children?: ComponentChildren<\n EfficientOmit<Props, 'children'> & { children: React.ReactNode },\n Context,\n ReturnResult,\n AdditionalContext\n >;\n } & ComponentBasicProps<Tag extends [ComponentTag, keyof JSX.IntrinsicElements] ? Tag[0] : Tag, Instance> &\n MergeProps<\n EfficientOmit<Props, 'tag' | 'children'>,\n MergeProps<ComponentPropsNesting<Tag extends [ComponentTag, keyof JSX.IntrinsicElements] ? Tag[0] : Tag>, ComponentPropsNesting<BaseTag>>\n >;\n export type PropsRenderingResultComponentProps<\n Tag extends ComponentTag,\n Props,\n Context = {},\n AdditionalContext extends any[] = never[],\n > = {\n tag?: Tag;\n children?: ComponentChildren<\n EfficientOmit<Props, 'children'> & { children: React.ReactNode },\n Context,\n Partial<\n EfficientOmit<\n MergeProps<Props, ComponentPropsNesting<Tag>>,\n 'children' | 'tag' | 'ref'\n > & {\n children?: React.ReactNode;\n }\n >,\n AdditionalContext\n >;\n } & ComponentBasicProps<Tag> &\n MergeProps<EfficientOmit<Props, 'tag' | 'children'>, ComponentPropsNesting<Tag>>;\n export type ComponentRenderingResults = React.ReactElement;\n export type ComponentAdditive<\n BaseTag extends ComponentTag,\n Tag extends ComponentTag,\n Props = {},\n Context = {},\n AdditionalContext = {},\n > = {\n __nestedProps: ComponentPropsNesting<BaseTag>;\n __tag: Tag;\n __props: Props;\n __context: Context;\n __additionalContext: AdditionalContext;\n __IS_ICON: boolean;\n displayName: string;\n newInstance: () => Component<BaseTag, Props, Context>;\n [CORE_COMPONENT]: boolean;\n };\n export type InferJsxIntrinsicElement<T extends React.DetailedHTMLProps<any, any>> =\n T extends React.DetailedHTMLProps<infer _, infer Element> ? Element : HTMLElement;\n type InferElementFromRef<T> = T extends React.Ref<infer Element> ? Element : never;\n type InferRefElementFromProps<T> = 'ref' extends keyof T\n ? InferElementFromRef<T['ref']>\n : HTMLElement;\n export type ComponentHtmlElement<Tag extends ComponentTag> =\n Tag extends keyof JSX.IntrinsicElements\n ? InferJsxIntrinsicElement<JSX.IntrinsicElements[Tag]>\n : Tag extends { __nestedProps: infer NestedProps }\n ? InferRefElementFromProps<NestedProps>\n : HTMLElement;\n export type UntypeRefAndTag<Props> = Intergalactic.InternalTypings.EfficientOmit<\n Props,\n 'ref' | 'tag'\n > & {\n ref: React.Ref<any>;\n tag: Intergalactic.InternalTypings.ComponentTag;\n };\n }\n export type Component<\n BaseTag extends InternalTypings.ComponentTag = never,\n BaseProps = {},\n Context = {},\n AdditionalContext extends Readonly<any[]> = never[],\n Instance = never,\n > = (<\n Tag extends InternalTypings.ComponentTag | [InternalTypings.ComponentTag, keyof JSX.IntrinsicElements] = BaseTag,\n Props extends BaseProps = BaseProps,\n >(\n props: InternalTypings.ComponentProps<Tag, BaseTag, Props, Context, AdditionalContext, Instance>,\n ) => InternalTypings.ComponentRenderingResults) &\n InternalTypings.ComponentAdditive<BaseTag, Tag, BaseProps, Context, AdditionalContext>;\n export type Tag = InternalTypings.ComponentTag;\n export type DomProps<Tag extends keyof JSX.IntrinsicElements> =\n InternalTypings.InferJsxIntrinsicElement<JSX.IntrinsicElements[Tag]>;\n export type RequireAtLeastOne<T, Keys extends keyof T = keyof T> = Pick<\n T,\n Exclude<keyof T, Keys>\n > &\n {\n [K in Keys]-?: Required<Pick<T, K>> & Partial<Pick<T, Exclude<Keys, K>>>;\n }[Keys];\n}\n\nexport const wrapIntergalacticComponent = <\n Component extends Intergalactic.Component<any, any, any, any>,\n PropsExtending = {},\n>(\n wrapper: (\n props: Intergalactic.InternalTypings.UntypeRefAndTag<\n Intergalactic.InternalTypings.ComponentPropsNesting<Component>\n > &\n PropsExtending,\n ) => React.ReactNode,\n): Intergalactic.Component<\n Component['__tag'],\n Component['__props'] & Component['__nestedProps'] & PropsExtending,\n Component['__context'],\n Component['__additionalContext']\n> => wrapper as any;\n"],"mappings":";AACA,SAIEA,aAAa,QAGR,OAAO;AAGd,SAASC,aAAa,QAAQ,eAAW;;AAsBzC;;AAGA,MAAMC,IAAU,GAAGC,SAAgB;AAEnC,SAASD,IAAI;AAuCb,OAAO,MAAeE,SAAS,SAOrBJ,aAAa,CAAe;EAGpCK,WAAWA,CAACC,KAAY,EAAE;IACxB,KAAK,CAACA,KAAK,CAAC;IAACC,eAAA,yBAH0B,CAAC,CAAC;IAAAA,eAAA,eAyCTJ,SAAS;IAAAI,eAAA,uBAElB,KAAK;IAAAA,eAAA,OAEnBN,aAAa;IAxCtB,IAAIK,KAAK,CAACE,WAAW,EAAE;MACrBF,KAAK,CAACE,WAAW,CAACC,OAAO,GAAG,IAAI;IAClC;EACF;EAEUC,iBAAiBA,CAAA,EAA0D;IACnF;IACA,OAAO,CAAC,CAAC;EACX;EAEA,IAAcC,QAAQA,CAAA,EAUnB;IACD;IACA,OAAO,CAAC,CAAC;EACX;EAEA,IAAcC,OAAOA,CAAA,EAAG;IACtB,OAAO,CAAC,CAAC;EAQX;AAOF;;AAEA;AAAA,WACiBC,aAAa;AAmQ9B,OAAO,MAAMC,0BAA0B,GAIrCC,OAKoB,IAMjBA,OAAc","ignoreList":[]}
@@ -3,6 +3,7 @@ import canUseDOM from "./utils/canUseDOM.mjs";
3
3
  class LastInteractionType {
4
4
  constructor() {
5
5
  _defineProperty(this, "lastFocusSource", "none");
6
+ _defineProperty(this, "lastKeyboardKey", "");
6
7
  this.handleKeyDown = this.handleKeyDown.bind(this);
7
8
  this.handleMouseDown = this.handleMouseDown.bind(this);
8
9
  if (canUseDOM()) {
@@ -23,11 +24,15 @@ class LastInteractionType {
23
24
  isMouse() {
24
25
  return this.lastFocusSource === "mouse";
25
26
  }
27
+ get isTab() {
28
+ return this.isKeyboard() && this.lastKeyboardKey === "tab";
29
+ }
26
30
  handleMouseDown() {
27
31
  this.lastFocusSource = "mouse";
28
32
  }
29
- handleKeyDown() {
33
+ handleKeyDown(e) {
30
34
  this.lastFocusSource = "keyboard";
35
+ this.lastKeyboardKey = e.key.toLowerCase();
31
36
  }
32
37
  }
33
38
  const lastInteraction = new LastInteractionType();
@@ -3,12 +3,15 @@ import { PureComponent } from "react";
3
3
  import { CORE_INSTANCE } from "./symbols.mjs";
4
4
  const Root = void 0;
5
5
  class Component extends PureComponent {
6
- constructor(...args) {
7
- super(...args);
6
+ constructor(props) {
7
+ super(props);
8
8
  _defineProperty(this, "__defaultProps", {});
9
9
  _defineProperty(this, "Root", void 0);
10
10
  _defineProperty(this, "isControlled", false);
11
11
  _defineProperty(this, CORE_INSTANCE, void 0);
12
+ if (props.instanceRef) {
13
+ props.instanceRef.current = this;
14
+ }
12
15
  }
13
16
  uncontrolledProps() {
14
17
  return {};
@@ -27,7 +27,7 @@ function injectStyle(css) {
27
27
  sh = prevSh;
28
28
  } else {
29
29
  // @ts-ignore
30
- const version = "17.2.1";
30
+ const version = "17.3.0";
31
31
  sh = document.createElement('style');
32
32
  sh.setAttribute('data-ui-v', version);
33
33
  sh.classList.add(selectorClass);
@@ -21,7 +21,7 @@ function injectStyle(css) {
21
21
  sh = prevSh;
22
22
  } else {
23
23
  // @ts-ignore
24
- const version = "17.2.1";
24
+ const version = "17.3.0";
25
25
  sh = document.createElement('style');
26
26
  sh.setAttribute('data-ui-v', version);
27
27
  sh.classList.add(selectorClass);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@semcore/core",
3
3
  "description": "Semrush Core Component",
4
- "version": "17.2.1",
4
+ "version": "17.3.0",
5
5
  "main": "lib/index.js",
6
6
  "module": "lib/index.mjs",
7
7
  "typings": "lib/index.d.ts",
@@ -330,7 +330,7 @@
330
330
  "@types/classnames": "2.2.6",
331
331
  "@types/hoist-non-react-statics": "^3.3.6",
332
332
  "@semcore/testing-utils": "1.0.0",
333
- "@semcore/theme": "2.2.0"
333
+ "@semcore/theme": "2.3.0"
334
334
  },
335
335
  "scripts": {
336
336
  "build": "pnpm semcore-builder --coreUtils && pnpm vite build"