@reckona/mreact-compat 0.0.66 → 0.0.68

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.
Files changed (83) hide show
  1. package/dist/class-component.js.map +1 -1
  2. package/dist/context.js.map +1 -1
  3. package/dist/devtools.js.map +1 -1
  4. package/dist/dom-children.js.map +1 -1
  5. package/dist/dom-props.js.map +1 -1
  6. package/dist/element.js.map +1 -1
  7. package/dist/event-listeners.js.map +1 -1
  8. package/dist/event-priority.js.map +1 -1
  9. package/dist/event-replay.js.map +1 -1
  10. package/dist/event-types.js.map +1 -1
  11. package/dist/events.js.map +1 -1
  12. package/dist/fiber-child.js.map +1 -1
  13. package/dist/fiber-commit.js.map +1 -1
  14. package/dist/fiber-flags.js.map +1 -1
  15. package/dist/fiber-host.js.map +1 -1
  16. package/dist/fiber-lanes.js.map +1 -1
  17. package/dist/fiber-reconciler.js.map +1 -1
  18. package/dist/fiber-scheduler.js.map +1 -1
  19. package/dist/fiber-work-loop.js.map +1 -1
  20. package/dist/fiber.js.map +1 -1
  21. package/dist/flight-decoder.js.map +1 -1
  22. package/dist/flight-element-builder.js.map +1 -1
  23. package/dist/flight-parser.js.map +1 -1
  24. package/dist/flight-protocol.js.map +1 -1
  25. package/dist/flight-types.js.map +1 -1
  26. package/dist/flight.js.map +1 -1
  27. package/dist/hooks.js.map +1 -1
  28. package/dist/hydration.js.map +1 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/internal.js.map +1 -1
  31. package/dist/jsx-dev-runtime.js.map +1 -1
  32. package/dist/jsx-runtime.js.map +1 -1
  33. package/dist/prop-comparison.js.map +1 -1
  34. package/dist/reconcile-types.js.map +1 -1
  35. package/dist/reconciler.js.map +1 -1
  36. package/dist/render.js.map +1 -1
  37. package/dist/root.js.map +1 -1
  38. package/dist/scheduler.js.map +1 -1
  39. package/dist/suspense.js.map +1 -1
  40. package/dist/thenable.js.map +1 -1
  41. package/dist/url-safety.js.map +1 -1
  42. package/package.json +4 -3
  43. package/src/class-component.ts +386 -0
  44. package/src/context.ts +140 -0
  45. package/src/devtools.ts +1275 -0
  46. package/src/dom-children.ts +34 -0
  47. package/src/dom-props.ts +408 -0
  48. package/src/element.ts +317 -0
  49. package/src/event-listeners.ts +27 -0
  50. package/src/event-priority.ts +1 -0
  51. package/src/event-replay.ts +154 -0
  52. package/src/event-types.ts +18 -0
  53. package/src/events.ts +384 -0
  54. package/src/fiber-child.ts +364 -0
  55. package/src/fiber-commit.ts +83 -0
  56. package/src/fiber-flags.ts +21 -0
  57. package/src/fiber-host.ts +1564 -0
  58. package/src/fiber-lanes.ts +99 -0
  59. package/src/fiber-reconciler.ts +639 -0
  60. package/src/fiber-scheduler.ts +435 -0
  61. package/src/fiber-work-loop.ts +224 -0
  62. package/src/fiber.ts +148 -0
  63. package/src/flight-decoder.ts +205 -0
  64. package/src/flight-element-builder.ts +110 -0
  65. package/src/flight-parser.ts +698 -0
  66. package/src/flight-protocol.ts +71 -0
  67. package/src/flight-types.ts +148 -0
  68. package/src/flight.ts +162 -0
  69. package/src/hooks.ts +1940 -0
  70. package/src/hydration.ts +314 -0
  71. package/src/index.ts +95 -0
  72. package/src/internal.ts +7 -0
  73. package/src/jsx-dev-runtime.ts +40 -0
  74. package/src/jsx-runtime.ts +119 -0
  75. package/src/prop-comparison.ts +50 -0
  76. package/src/reconcile-types.ts +26 -0
  77. package/src/reconciler.ts +692 -0
  78. package/src/render.ts +29 -0
  79. package/src/root.ts +493 -0
  80. package/src/scheduler.ts +157 -0
  81. package/src/suspense.ts +317 -0
  82. package/src/thenable.ts +7 -0
  83. package/src/url-safety.ts +7 -0
package/src/context.ts ADDED
@@ -0,0 +1,140 @@
1
+ const REACT_COMPAT_PROVIDER_TYPE = Symbol.for("modular.react.provider");
2
+ const REACT_COMPAT_CONSUMER_TYPE = Symbol.for("modular.react.consumer");
3
+
4
+ export interface ReactCompatContext<T> {
5
+ defaultValue: T;
6
+ values: T[];
7
+ Provider: ReactCompatProvider<T>;
8
+ Consumer: ReactCompatConsumer<T>;
9
+ displayName: string | undefined;
10
+ }
11
+
12
+ export interface ReactCompatProvider<T> {
13
+ $$typeof: typeof REACT_COMPAT_PROVIDER_TYPE;
14
+ context: ReactCompatContext<T>;
15
+ displayName: string | undefined;
16
+ }
17
+
18
+ export interface ReactCompatConsumer<T> {
19
+ $$typeof: typeof REACT_COMPAT_CONSUMER_TYPE;
20
+ context: ReactCompatContext<T>;
21
+ displayName: string | undefined;
22
+ }
23
+
24
+ export function createContext<T>(defaultValue: T): ReactCompatContext<T> {
25
+ const context: ReactCompatContext<T> = {
26
+ defaultValue,
27
+ values: [],
28
+ Provider: undefined as unknown as ReactCompatProvider<T>,
29
+ Consumer: undefined as unknown as ReactCompatConsumer<T>,
30
+ displayName: undefined,
31
+ };
32
+ context.Provider = {
33
+ $$typeof: REACT_COMPAT_PROVIDER_TYPE,
34
+ context,
35
+ displayName: undefined,
36
+ };
37
+ context.Consumer = {
38
+ $$typeof: REACT_COMPAT_CONSUMER_TYPE,
39
+ context,
40
+ displayName: undefined,
41
+ };
42
+ installContextDisplayName(context);
43
+ return context;
44
+ }
45
+
46
+ function installContextDisplayName<T>(context: ReactCompatContext<T>): void {
47
+ let displayName: string | undefined;
48
+
49
+ Object.defineProperty(context, "displayName", {
50
+ configurable: true,
51
+ enumerable: true,
52
+ get() {
53
+ return displayName;
54
+ },
55
+ set(value: string | undefined) {
56
+ displayName = value;
57
+ context.Provider.displayName =
58
+ value === undefined ? undefined : `${value}.Provider`;
59
+ context.Consumer.displayName =
60
+ value === undefined ? undefined : `${value}.Consumer`;
61
+ },
62
+ });
63
+ }
64
+
65
+ export function useContext<T>(context: ReactCompatContext<T>): T {
66
+ return context.values.at(-1) ?? context.defaultValue;
67
+ }
68
+
69
+ export function isReactCompatProvider(
70
+ value: unknown,
71
+ ): value is ReactCompatProvider<unknown> {
72
+ return (
73
+ typeof value === "object" &&
74
+ value !== null &&
75
+ (value as { $$typeof?: unknown }).$$typeof === REACT_COMPAT_PROVIDER_TYPE
76
+ );
77
+ }
78
+
79
+ export function isReactCompatContext(
80
+ value: unknown,
81
+ ): value is ReactCompatContext<unknown> {
82
+ return (
83
+ typeof value === "object" &&
84
+ value !== null &&
85
+ "Provider" in value &&
86
+ "Consumer" in value &&
87
+ isReactCompatProvider((value as { Provider?: unknown }).Provider) &&
88
+ isReactCompatConsumer((value as { Consumer?: unknown }).Consumer)
89
+ );
90
+ }
91
+
92
+ export function isReactCompatConsumer(
93
+ value: unknown,
94
+ ): value is ReactCompatConsumer<unknown> {
95
+ return (
96
+ typeof value === "object" &&
97
+ value !== null &&
98
+ (value as { $$typeof?: unknown }).$$typeof === REACT_COMPAT_CONSUMER_TYPE
99
+ );
100
+ }
101
+
102
+ export function renderWithContextProvider<T, R>(
103
+ provider: ReactCompatProvider<T>,
104
+ value: T,
105
+ render: () => R,
106
+ ): R {
107
+ pushContextProvider(provider, value);
108
+
109
+ try {
110
+ return render();
111
+ } finally {
112
+ popContextProvider(provider);
113
+ }
114
+ }
115
+
116
+ export function pushContextProvider<T>(
117
+ provider: ReactCompatProvider<T>,
118
+ value: T,
119
+ ): void {
120
+ provider.context.values.push(value);
121
+ }
122
+
123
+ export function popContextProvider<T>(provider: ReactCompatProvider<T>): void {
124
+ provider.context.values.pop();
125
+ }
126
+
127
+ export function renderContextProviderToString<T>(
128
+ provider: ReactCompatProvider<T>,
129
+ value: T,
130
+ render: () => string,
131
+ ): string {
132
+ return renderWithContextProvider(provider, value, render);
133
+ }
134
+
135
+ export function renderContextConsumerToString<T>(
136
+ consumer: ReactCompatConsumer<T>,
137
+ render: (value: T) => string,
138
+ ): string {
139
+ return render(useContext(consumer.context));
140
+ }