@rectify-dev/core 2.0.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/dist/index.cjs ADDED
@@ -0,0 +1,1444 @@
1
+ 'use strict';
2
+
3
+ var chunkS5YX7TXF_cjs = require('./chunk-S5YX7TXF.cjs');
4
+
5
+ // ../rectify-dom-binding/src/events/RectifyEventRegistry.ts
6
+ var allNativeEvents = /* @__PURE__ */ new Set();
7
+ var nativeEventToRectifyName = /* @__PURE__ */ new Map();
8
+ function registerDirectEvent(registrationName, dependencies) {
9
+ for (let i = 0; i < dependencies.length; i++) {
10
+ const dependency = dependencies[i];
11
+ allNativeEvents.add(dependency);
12
+ if (!nativeEventToRectifyName.has(dependency)) {
13
+ nativeEventToRectifyName.set(dependency, registrationName);
14
+ }
15
+ }
16
+ }
17
+ chunkS5YX7TXF_cjs.__name(registerDirectEvent, "registerDirectEvent");
18
+ function registerNativeEvent() {
19
+ registerDirectEvent("onClick", ["click"]);
20
+ registerDirectEvent("onDoubleClick", ["dblclick"]);
21
+ registerDirectEvent("onMouseDown", ["mousedown"]);
22
+ registerDirectEvent("onMouseUp", ["mouseup"]);
23
+ registerDirectEvent("onMouseMove", ["mousemove"]);
24
+ registerDirectEvent("onMouseEnter", ["mouseenter"]);
25
+ registerDirectEvent("onMouseLeave", ["mouseleave"]);
26
+ registerDirectEvent("onContextMenu", ["contextmenu"]);
27
+ registerDirectEvent("onKeyDown", ["keydown"]);
28
+ registerDirectEvent("onKeyUp", ["keyup"]);
29
+ registerDirectEvent("onKeyPress", ["keypress"]);
30
+ registerDirectEvent("onInput", ["input"]);
31
+ registerDirectEvent("onChange", ["change"]);
32
+ registerDirectEvent("onSubmit", ["submit"]);
33
+ registerDirectEvent("onReset", ["reset"]);
34
+ registerDirectEvent("onFocus", ["focus"]);
35
+ registerDirectEvent("onBlur", ["blur"]);
36
+ registerDirectEvent("onCopy", ["copy"]);
37
+ registerDirectEvent("onCut", ["cut"]);
38
+ registerDirectEvent("onPaste", ["paste"]);
39
+ registerDirectEvent("onTouchStart", ["touchstart"]);
40
+ registerDirectEvent("onTouchMove", ["touchmove"]);
41
+ registerDirectEvent("onTouchEnd", ["touchend"]);
42
+ registerDirectEvent("onTouchCancel", ["touchcancel"]);
43
+ registerDirectEvent("onScroll", ["scroll"]);
44
+ registerDirectEvent("onWheel", ["wheel"]);
45
+ registerDirectEvent("onDrag", ["drag"]);
46
+ registerDirectEvent("onDragStart", ["dragstart"]);
47
+ registerDirectEvent("onDragEnd", ["dragend"]);
48
+ registerDirectEvent("onDragEnter", ["dragenter"]);
49
+ registerDirectEvent("onDragLeave", ["dragleave"]);
50
+ registerDirectEvent("onDragOver", ["dragover"]);
51
+ registerDirectEvent("onDrop", ["drop"]);
52
+ }
53
+ chunkS5YX7TXF_cjs.__name(registerNativeEvent, "registerNativeEvent");
54
+
55
+ // ../rectify-dom-binding/src/events/__main.ts
56
+ var main = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
57
+ registerNativeEvent();
58
+ }, "main");
59
+ main();
60
+
61
+ // ../rectify-dom-binding/src/clients/RectifyDomComponentTree.ts
62
+ var randomKey = Math.random().toString(36).slice(2);
63
+ var internalContainerInstanceKey = "__rectifyContainer$" + randomKey;
64
+ var internalInstanceKey = "__rectifyFiber$" + randomKey;
65
+ var internalEventHandlerListenersKey = "__rectifyListeners$" + randomKey;
66
+ function markContainerAsRoot(hostRoot, node) {
67
+ node[internalContainerInstanceKey] = hostRoot;
68
+ }
69
+ chunkS5YX7TXF_cjs.__name(markContainerAsRoot, "markContainerAsRoot");
70
+ function unmarkContainerAsRoot(node) {
71
+ node[internalContainerInstanceKey] = null;
72
+ }
73
+ chunkS5YX7TXF_cjs.__name(unmarkContainerAsRoot, "unmarkContainerAsRoot");
74
+ var precacheFiberNode = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiber, node) => {
75
+ if (!node) return;
76
+ node[internalInstanceKey] = fiber;
77
+ }, "precacheFiberNode");
78
+ var getFiberNodeCached = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((node) => {
79
+ if (!node) return null;
80
+ return node[internalInstanceKey] || null;
81
+ }, "getFiberNodeCached");
82
+ function setEventHandlerListeners(scope, listeners) {
83
+ if (!scope) return;
84
+ scope[internalEventHandlerListenersKey] = listeners;
85
+ }
86
+ chunkS5YX7TXF_cjs.__name(setEventHandlerListeners, "setEventHandlerListeners");
87
+ function getEventHandlerListeners(scope) {
88
+ if (!scope) return null;
89
+ return scope[internalEventHandlerListenersKey] || null;
90
+ }
91
+ chunkS5YX7TXF_cjs.__name(getEventHandlerListeners, "getEventHandlerListeners");
92
+
93
+ // ../rectify-dom-binding/src/events/SyntheticEvent.ts
94
+ var _SyntheticEvent = class _SyntheticEvent {
95
+ constructor(nativeEvent) {
96
+ this.currentTarget = null;
97
+ this.propagationStopped = false;
98
+ this.target = nativeEvent.target;
99
+ this.nativeEvent = nativeEvent;
100
+ }
101
+ stopPropagation() {
102
+ this.propagationStopped = true;
103
+ this.nativeEvent.stopPropagation();
104
+ }
105
+ isPropagationStopped() {
106
+ return this.propagationStopped;
107
+ }
108
+ };
109
+ chunkS5YX7TXF_cjs.__name(_SyntheticEvent, "SyntheticEvent");
110
+ var SyntheticEvent = _SyntheticEvent;
111
+ var SyntheticEvent_default = SyntheticEvent;
112
+
113
+ // ../rectify-dom-binding/src/events/RectifyEventPriority.ts
114
+ var _set = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
115
+ }, "_set");
116
+ var _reset = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
117
+ }, "_reset");
118
+ var injectEventPriorityCallbacks = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((set, reset) => {
119
+ _set = set;
120
+ _reset = reset;
121
+ }, "injectEventPriorityCallbacks");
122
+ var setEventPriority = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((priority) => _set(priority), "setEventPriority");
123
+ var resetEventPriority = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => _reset(), "resetEventPriority");
124
+ var INPUT_LANE = 2;
125
+
126
+ // ../rectify-dom-binding/src/events/RectifyDomEventListener.ts
127
+ var createEventListenerWrapper = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((targetContainer, domEventName) => {
128
+ return dispatchEvent.bind(null, domEventName, targetContainer);
129
+ }, "createEventListenerWrapper");
130
+ var getEventTarget = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((nativeEvent) => {
131
+ return nativeEvent.target || nativeEvent.srcElement;
132
+ }, "getEventTarget");
133
+ var dispatchEvent = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((domEventName, targetContainer, nativeEvent) => {
134
+ const targetNode = getEventTarget(nativeEvent);
135
+ const targetFiber = getFiberNodeCached(targetNode);
136
+ if (!targetFiber) return;
137
+ const syntheticEvent = new SyntheticEvent_default(nativeEvent);
138
+ const path = [];
139
+ let fiber = targetFiber;
140
+ while (fiber) {
141
+ path.push(fiber);
142
+ if (fiber.stateNode === targetContainer) {
143
+ break;
144
+ }
145
+ fiber = fiber.return;
146
+ }
147
+ for (const currFiber of path) {
148
+ if (syntheticEvent.isPropagationStopped()) break;
149
+ const eventHandlerMap = getEventHandlerListeners(
150
+ currFiber.stateNode
151
+ );
152
+ if (!eventHandlerMap) continue;
153
+ const rectifyName = nativeEventToRectifyName.get(domEventName);
154
+ if (!rectifyName) continue;
155
+ const handler = eventHandlerMap.get(rectifyName);
156
+ if (!chunkS5YX7TXF_cjs.isFunction(handler)) continue;
157
+ syntheticEvent.currentTarget = currFiber.stateNode;
158
+ setEventPriority(INPUT_LANE);
159
+ try {
160
+ handler(syntheticEvent);
161
+ } finally {
162
+ resetEventPriority();
163
+ }
164
+ }
165
+ syntheticEvent.currentTarget = null;
166
+ }, "dispatchEvent");
167
+
168
+ // ../rectify-dom-binding/src/events/RectifyEventListener.ts
169
+ function addEventCaptureListener(target, eventType, listener) {
170
+ target.addEventListener(eventType, listener, true);
171
+ return listener;
172
+ }
173
+ chunkS5YX7TXF_cjs.__name(addEventCaptureListener, "addEventCaptureListener");
174
+
175
+ // ../rectify-dom-binding/src/events/RectifyEvent.ts
176
+ var listeningMarker = "_rectifyEventListening$" + Math.random().toString(36).slice(2);
177
+ var listenToAllEventSupported = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((dom) => {
178
+ if (dom[listeningMarker]) return;
179
+ dom[listeningMarker] = true;
180
+ allNativeEvents.forEach(
181
+ (domEventName) => listenToNativeEvent(domEventName, dom)
182
+ );
183
+ }, "listenToAllEventSupported");
184
+ var listenToNativeEvent = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((domEventName, target) => {
185
+ const listener = createEventListenerWrapper(target, domEventName);
186
+ addEventCaptureListener(target, domEventName, listener);
187
+ }, "listenToNativeEvent");
188
+
189
+ // ../rectify-dom-binding/src/clients/RectifyDomProperties.ts
190
+ var isEvent = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((k) => k.startsWith("on"), "isEvent");
191
+ var isProperty = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((k) => k !== "children" && k !== "ref" && !isEvent(k), "isProperty");
192
+ var unitlessProperties = /* @__PURE__ */ new Set([
193
+ "zIndex",
194
+ "opacity",
195
+ "fontWeight",
196
+ "lineHeight",
197
+ "flex",
198
+ "flexGrow",
199
+ "flexShrink"
200
+ ]);
201
+ function convertStyleObjectToString(styleObj) {
202
+ return Object.entries(styleObj).map(([key, value]) => {
203
+ const cssKey = key.replace(/[A-Z]/g, (m) => "-" + m.toLowerCase());
204
+ let cssValue = value;
205
+ if (typeof value === "number" && !unitlessProperties.has(key)) {
206
+ cssValue = `${value}px`;
207
+ }
208
+ return `${cssKey}:${cssValue}`;
209
+ }).join("; ");
210
+ }
211
+ chunkS5YX7TXF_cjs.__name(convertStyleObjectToString, "convertStyleObjectToString");
212
+ var applyPropsToDom = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((node, prevProps = {}, nextProps = {}) => {
213
+ const element = node;
214
+ const eventNode = getEventHandlerListeners(element) || /* @__PURE__ */ new Map();
215
+ for (const k in prevProps) {
216
+ if (isEvent(k) && !(k in nextProps)) {
217
+ eventNode.delete(k);
218
+ }
219
+ if (isProperty(k) && !(k in nextProps)) {
220
+ element[k] = "";
221
+ element.removeAttribute(k);
222
+ }
223
+ }
224
+ for (const k in nextProps) {
225
+ if (k === "children" || k === "ref") continue;
226
+ if (isEvent(k)) {
227
+ if (prevProps?.[k] !== nextProps?.[k]) {
228
+ eventNode.set(k, nextProps[k]);
229
+ }
230
+ } else if (k === "style") {
231
+ element.setAttribute("style", convertStyleObjectToString(nextProps[k]));
232
+ } else {
233
+ const v = nextProps[k];
234
+ if (k === "className") element.setAttribute("class", v ?? "");
235
+ else if (v === false || v === null || v === void 0)
236
+ element.removeAttribute(k);
237
+ else element.setAttribute(k, String(v));
238
+ }
239
+ }
240
+ setEventHandlerListeners(element, eventNode);
241
+ }, "applyPropsToDom");
242
+
243
+ // ../rectify-reconciler/src/RectifyFiberFlags.ts
244
+ var NoFlags = 0;
245
+ var PlacementFlag = 1 << 0;
246
+ var UpdateFlag = 1 << 1;
247
+ var DeletionFlag = 1 << 2;
248
+ var MoveFlag = 1 << 3;
249
+
250
+ // ../rectify-reconciler/src/RectifyFiberLanes.ts
251
+ var NoLanes = 0;
252
+ var SyncLane = 1;
253
+ var InputLane = 2;
254
+ var DefaultLane = 4;
255
+ var TransitionLane = 8;
256
+ var IdleLane = 16;
257
+
258
+ // ../rectify-reconciler/src/RectifyFiberWorkTags.ts
259
+ var FunctionComponent = /* @__PURE__ */ Symbol.for("rectify.function_component");
260
+ var HostComponent = /* @__PURE__ */ Symbol.for("rectify.host_component");
261
+ var HostText = /* @__PURE__ */ Symbol.for("rectify.host_text");
262
+ var HostRoot = /* @__PURE__ */ Symbol.for("rectify.host_root");
263
+ var FragmentComponent = /* @__PURE__ */ Symbol.for("rectify.fragment_component");
264
+ var ContextProvider = /* @__PURE__ */ Symbol.for("rectify.context_provider");
265
+ var MemoComponent = /* @__PURE__ */ Symbol.for("rectify.memo_component");
266
+
267
+ // ../rectify-reconciler/src/RectifyFiberService.ts
268
+ var addFlagToFiber = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiber, flag) => {
269
+ if (hasFlagOnFiber(fiber, flag)) return;
270
+ fiber.flags |= flag;
271
+ }, "addFlagToFiber");
272
+ var removeFlagFromFiber = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiber, flag) => {
273
+ if (!hasFlagOnFiber(fiber, flag)) return;
274
+ fiber.flags &= ~flag;
275
+ }, "removeFlagFromFiber");
276
+ var hasFlagOnFiber = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiber, flag) => {
277
+ if (!fiber) return false;
278
+ return (fiber.flags & flag) !== 0;
279
+ }, "hasFlagOnFiber");
280
+ var getFiberTagFromElement = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((element) => {
281
+ switch (element.$$typeof) {
282
+ case chunkS5YX7TXF_cjs.RECTIFY_ELEMENT_TYPE:
283
+ if (chunkS5YX7TXF_cjs.isFunction(element.type) && element.type?._context === element.type) {
284
+ return ContextProvider;
285
+ }
286
+ if (chunkS5YX7TXF_cjs.isFunction(element.type) && element.type?._isMemo === true) {
287
+ return MemoComponent;
288
+ }
289
+ return chunkS5YX7TXF_cjs.isFunction(element.type) ? FunctionComponent : HostComponent;
290
+ case chunkS5YX7TXF_cjs.RECTIFY_TEXT_TYPE:
291
+ return HostText;
292
+ case chunkS5YX7TXF_cjs.RECTIFY_FRAGMENT_TYPE:
293
+ return FragmentComponent;
294
+ default:
295
+ return null;
296
+ }
297
+ }, "getFiberTagFromElement");
298
+ var createDomElementFromFiber = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiber) => {
299
+ switch (fiber.workTag) {
300
+ case HostText:
301
+ return document.createTextNode(fiber.pendingProps);
302
+ default:
303
+ return document.createElement(fiber.type);
304
+ }
305
+ }, "createDomElementFromFiber");
306
+ var getParentDom = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiber) => {
307
+ if (fiber.workTag === HostRoot)
308
+ return fiber.stateNode;
309
+ let p = fiber.return;
310
+ while (p) {
311
+ if (p.workTag === HostComponent) return p.stateNode;
312
+ if (p.workTag === HostRoot) return p.stateNode;
313
+ p = p.return;
314
+ }
315
+ throw new Error("No parent DOM found.");
316
+ }, "getParentDom");
317
+ function findFirstHostNode(fiber) {
318
+ if (fiber.workTag === HostComponent || fiber.workTag === HostText) {
319
+ return fiber.stateNode;
320
+ }
321
+ let child = fiber.child;
322
+ while (child) {
323
+ const found = findFirstHostNode(child);
324
+ if (found) return found;
325
+ child = child.sibling;
326
+ }
327
+ return null;
328
+ }
329
+ chunkS5YX7TXF_cjs.__name(findFirstHostNode, "findFirstHostNode");
330
+ function getHostSibling(fiber) {
331
+ let sibling = fiber.sibling;
332
+ while (sibling) {
333
+ const node = findFirstHostNode(sibling);
334
+ if (node) return node;
335
+ sibling = sibling.sibling;
336
+ }
337
+ return null;
338
+ }
339
+ chunkS5YX7TXF_cjs.__name(getHostSibling, "getHostSibling");
340
+ var hasPropsChanged = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((prevProps, nextProps) => {
341
+ const CHILDREN_KEY = "children";
342
+ const REF_KEY = "ref";
343
+ if (chunkS5YX7TXF_cjs.isPlainObject(prevProps) && chunkS5YX7TXF_cjs.isPlainObject(nextProps)) {
344
+ return !chunkS5YX7TXF_cjs.shallowEqual(
345
+ chunkS5YX7TXF_cjs.omit(prevProps, [CHILDREN_KEY, REF_KEY]),
346
+ chunkS5YX7TXF_cjs.omit(nextProps, [CHILDREN_KEY, REF_KEY])
347
+ );
348
+ }
349
+ return prevProps !== nextProps;
350
+ }, "hasPropsChanged");
351
+
352
+ // ../rectify-reconciler/src/RectifyFiber.ts
353
+ var createFiber = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((workTag, pendingProps, key = null) => {
354
+ return {
355
+ index: 0,
356
+ key,
357
+ workTag,
358
+ type: null,
359
+ pendingProps,
360
+ memoizedProps: null,
361
+ child: null,
362
+ sibling: null,
363
+ return: null,
364
+ stateNode: null,
365
+ deletions: null,
366
+ alternate: null,
367
+ lanes: NoLanes,
368
+ childLanes: NoLanes,
369
+ subtreeFlags: NoFlags,
370
+ flags: NoFlags,
371
+ memoizedState: null
372
+ };
373
+ }, "createFiber");
374
+ var createHostRootFiber = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((containerDom) => {
375
+ const root = createFiber(HostRoot, null);
376
+ root.stateNode = containerDom;
377
+ return {
378
+ containerDom,
379
+ root,
380
+ pendingLanes: NoLanes,
381
+ children: null
382
+ };
383
+ }, "createHostRootFiber");
384
+ var createWorkInProgress = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((current, pendingProps) => {
385
+ let wip = current.alternate;
386
+ if (!wip) {
387
+ wip = createFiber(current.workTag, pendingProps, current.key);
388
+ wip.type = current.type;
389
+ wip.stateNode = current.stateNode;
390
+ wip.alternate = current;
391
+ current.alternate = wip;
392
+ } else {
393
+ wip.pendingProps = pendingProps;
394
+ wip.deletions = null;
395
+ }
396
+ wip.memoizedProps = current.memoizedProps;
397
+ wip.memoizedState = current.memoizedState;
398
+ wip.return = current.return;
399
+ wip.child = current.child;
400
+ wip.sibling = current.sibling;
401
+ wip.flags = NoFlags;
402
+ wip.subtreeFlags = NoFlags;
403
+ wip.lanes = current.lanes;
404
+ wip.childLanes = current.childLanes;
405
+ return wip;
406
+ }, "createWorkInProgress");
407
+ var createFiberFromRectifyElement = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((element) => {
408
+ const tag = getFiberTagFromElement(element) ?? HostComponent;
409
+ return createFiber(tag, element.props, element.key);
410
+ }, "createFiberFromRectifyElement");
411
+
412
+ // ../rectify-reconciler/src/RectifyFiberInstance.ts
413
+ var instance = {
414
+ fiberRoot: null
415
+ };
416
+ var setScheduledFiberRoot = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiberRoot) => {
417
+ instance.fiberRoot = fiberRoot;
418
+ }, "setScheduledFiberRoot");
419
+ var getScheduledFiberRoot = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
420
+ return instance.fiberRoot;
421
+ }, "getScheduledFiberRoot");
422
+
423
+ // ../rectify-hook/src/RectifyHookRenderingFiber.ts
424
+ var instance2 = {
425
+ fiberRendering: null,
426
+ hookIndex: 0,
427
+ scheduleRerender: null
428
+ };
429
+ var getFiberRendering = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => instance2.fiberRendering, "getFiberRendering");
430
+ var setFiberRendering = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiber) => {
431
+ instance2.fiberRendering = fiber;
432
+ }, "setFiberRendering");
433
+ var getHookIndex = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => instance2.hookIndex, "getHookIndex");
434
+ var setHookIndex = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((index) => {
435
+ instance2.hookIndex = index;
436
+ }, "setHookIndex");
437
+ var nextHookIndex = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
438
+ instance2.hookIndex += 1;
439
+ }, "nextHookIndex");
440
+ var setScheduleRerender = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fn) => {
441
+ instance2.scheduleRerender = fn;
442
+ }, "setScheduleRerender");
443
+ var scheduleRerender = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiber) => {
444
+ instance2.scheduleRerender?.(fiber);
445
+ }, "scheduleRerender");
446
+ var getHookSlot = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiber, hookIndex) => {
447
+ let hook = fiber.memoizedState;
448
+ let prevHook = null;
449
+ for (let i = 0; i < hookIndex; i++) {
450
+ prevHook = hook;
451
+ hook = hook?.next ?? null;
452
+ }
453
+ return { hook, prevHook };
454
+ }, "getHookSlot");
455
+ var attachHook = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiber, newHook, prevHook) => {
456
+ if (prevHook) prevHook.next = newHook;
457
+ else fiber.memoizedState = newHook;
458
+ }, "attachHook");
459
+
460
+ // ../rectify-hook/src/RectifyHook.ts
461
+ var prepareToUseHooks = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wip) => {
462
+ setFiberRendering(wip);
463
+ setHookIndex(0);
464
+ }, "prepareToUseHooks");
465
+ var finishUsingHooks = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
466
+ setFiberRendering(null);
467
+ }, "finishUsingHooks");
468
+ var withHooks = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wip, Component) => {
469
+ const NewComponent = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((props) => {
470
+ prepareToUseHooks(wip);
471
+ const result = Component(props);
472
+ finishUsingHooks();
473
+ return result;
474
+ }, "NewComponent");
475
+ return NewComponent;
476
+ }, "withHooks");
477
+
478
+ // ../rectify-hook/src/RectifyHookUseState.ts
479
+ var getInitialState = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((initialState) => chunkS5YX7TXF_cjs.isFunction(initialState) ? initialState() : initialState, "getInitialState");
480
+ var getState = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((update, prevState) => chunkS5YX7TXF_cjs.isFunction(update) ? update(prevState) : update, "getState");
481
+ function useState(initialState) {
482
+ const fiber = getFiberRendering();
483
+ if (!fiber) {
484
+ throw new Error("useState must be used within a function component.");
485
+ }
486
+ const hookIndex = getHookIndex();
487
+ nextHookIndex();
488
+ let state = fiber.memoizedState;
489
+ let prevHook = null;
490
+ for (let i = 0; i < hookIndex; i++) {
491
+ prevHook = state;
492
+ state = state?.next ?? null;
493
+ }
494
+ if (!state) {
495
+ state = {
496
+ memoizedState: getInitialState(initialState),
497
+ queue: null,
498
+ next: null
499
+ };
500
+ if (prevHook) {
501
+ prevHook.next = state;
502
+ } else {
503
+ fiber.memoizedState = state;
504
+ }
505
+ }
506
+ let update = state.queue;
507
+ while (update) {
508
+ state.memoizedState = getState(update.action, state.memoizedState);
509
+ update = update.next;
510
+ }
511
+ state.queue = null;
512
+ const dispatcher = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((updater) => {
513
+ const update2 = { action: updater, next: null };
514
+ if (!state.queue) {
515
+ state.queue = update2;
516
+ } else {
517
+ let last = state.queue;
518
+ while (last.next) {
519
+ last = last.next;
520
+ }
521
+ last.next = update2;
522
+ }
523
+ scheduleRerender(fiber);
524
+ }, "dispatcher");
525
+ return [state.memoizedState, dispatcher];
526
+ }
527
+ chunkS5YX7TXF_cjs.__name(useState, "useState");
528
+ var RectifyHookUseState_default = useState;
529
+
530
+ // ../rectify-hook/src/RectifyHookDeps.ts
531
+ var depsChanged = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((prev, next) => {
532
+ if (!prev || !next) return true;
533
+ if (prev.length !== next.length) return true;
534
+ return next.some((dep, i) => !Object.is(dep, prev[i]));
535
+ }, "depsChanged");
536
+
537
+ // ../rectify-hook/src/RectifyHookUseEffect.ts
538
+ var pendingEffects = [];
539
+ var pendingCleanups = [];
540
+ function useEffect(create, deps) {
541
+ const fiber = getFiberRendering();
542
+ if (!fiber) {
543
+ throw new Error("useEffect must be used within a function component.");
544
+ }
545
+ const hookIndex = getHookIndex();
546
+ nextHookIndex();
547
+ const { hook, prevHook } = getHookSlot(fiber, hookIndex);
548
+ if (!hook) {
549
+ const effectState = { create, deps, cleanup: void 0 };
550
+ const newHook = { memoizedState: effectState, queue: null, next: null };
551
+ attachHook(fiber, newHook, prevHook);
552
+ pendingEffects.push(effectState);
553
+ } else {
554
+ const prev = hook.memoizedState;
555
+ if (depsChanged(prev.deps, deps)) {
556
+ pendingCleanups.push(prev);
557
+ const effectState = { create, deps, cleanup: void 0 };
558
+ hook.memoizedState = effectState;
559
+ pendingEffects.push(effectState);
560
+ }
561
+ }
562
+ }
563
+ chunkS5YX7TXF_cjs.__name(useEffect, "useEffect");
564
+ var flushEffectCleanups = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
565
+ for (const effect of pendingCleanups.splice(0)) {
566
+ effect.cleanup?.();
567
+ }
568
+ }, "flushEffectCleanups");
569
+ var flushEffects = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
570
+ for (const effect of pendingEffects.splice(0)) {
571
+ const cleanup = effect.create();
572
+ if (typeof cleanup === "function") {
573
+ effect.cleanup = cleanup;
574
+ }
575
+ }
576
+ }, "flushEffects");
577
+ var runEffectCleanups = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiber) => {
578
+ let hook = fiber.memoizedState;
579
+ while (hook) {
580
+ const state = hook.memoizedState;
581
+ if (state !== null && typeof state.create === "function") {
582
+ state.cleanup?.();
583
+ }
584
+ hook = hook.next;
585
+ }
586
+ }, "runEffectCleanups");
587
+ var RectifyHookUseEffect_default = useEffect;
588
+
589
+ // ../rectify-hook/src/RectifyHookUseLayoutEffect.ts
590
+ var pendingLayoutEffects = [];
591
+ var pendingLayoutCleanups = [];
592
+ function useLayoutEffect(create, deps) {
593
+ const fiber = getFiberRendering();
594
+ if (!fiber) {
595
+ throw new Error("useLayoutEffect must be used within a function component.");
596
+ }
597
+ const hookIndex = getHookIndex();
598
+ nextHookIndex();
599
+ const { hook, prevHook } = getHookSlot(fiber, hookIndex);
600
+ if (!hook) {
601
+ const effectState = { create, deps, cleanup: void 0 };
602
+ const newHook = { memoizedState: effectState, queue: null, next: null };
603
+ attachHook(fiber, newHook, prevHook);
604
+ pendingLayoutEffects.push(effectState);
605
+ } else {
606
+ const prev = hook.memoizedState;
607
+ if (depsChanged(prev.deps, deps)) {
608
+ pendingLayoutCleanups.push(prev);
609
+ const effectState = { create, deps, cleanup: void 0 };
610
+ hook.memoizedState = effectState;
611
+ pendingLayoutEffects.push(effectState);
612
+ }
613
+ }
614
+ }
615
+ chunkS5YX7TXF_cjs.__name(useLayoutEffect, "useLayoutEffect");
616
+ var flushLayoutEffectCleanups = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
617
+ for (const effect of pendingLayoutCleanups.splice(0)) {
618
+ effect.cleanup?.();
619
+ }
620
+ }, "flushLayoutEffectCleanups");
621
+ var flushLayoutEffects = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
622
+ for (const effect of pendingLayoutEffects.splice(0)) {
623
+ const cleanup = effect.create();
624
+ if (typeof cleanup === "function") {
625
+ effect.cleanup = cleanup;
626
+ }
627
+ }
628
+ }, "flushLayoutEffects");
629
+ var RectifyHookUseLayoutEffect_default = useLayoutEffect;
630
+
631
+ // ../rectify-hook/src/RectifyHookUseRef.ts
632
+ function useRef(initialValue) {
633
+ const fiber = getFiberRendering();
634
+ if (!fiber) {
635
+ throw new Error("useRef must be used within a function component.");
636
+ }
637
+ const hookIndex = getHookIndex();
638
+ nextHookIndex();
639
+ let hook = fiber.memoizedState;
640
+ let prevHook = null;
641
+ for (let i = 0; i < hookIndex; i++) {
642
+ prevHook = hook;
643
+ hook = hook?.next ?? null;
644
+ }
645
+ if (!hook) {
646
+ const ref = { current: initialValue };
647
+ const newHook = { memoizedState: ref, queue: null, next: null };
648
+ if (prevHook) {
649
+ prevHook.next = newHook;
650
+ } else {
651
+ fiber.memoizedState = newHook;
652
+ }
653
+ return ref;
654
+ }
655
+ return hook.memoizedState;
656
+ }
657
+ chunkS5YX7TXF_cjs.__name(useRef, "useRef");
658
+ var RectifyHookUseRef_default = useRef;
659
+
660
+ // ../rectify-hook/src/RectifyHookUseMemo.ts
661
+ function useMemo(factory, deps) {
662
+ const fiber = getFiberRendering();
663
+ if (!fiber) {
664
+ throw new Error("useMemo must be used within a function component.");
665
+ }
666
+ const hookIndex = getHookIndex();
667
+ nextHookIndex();
668
+ let hook = fiber.memoizedState;
669
+ let prevHook = null;
670
+ for (let i = 0; i < hookIndex; i++) {
671
+ prevHook = hook;
672
+ hook = hook?.next ?? null;
673
+ }
674
+ if (!hook) {
675
+ const state = { value: factory(), deps };
676
+ const newHook = { memoizedState: state, queue: null, next: null };
677
+ if (prevHook) {
678
+ prevHook.next = newHook;
679
+ } else {
680
+ fiber.memoizedState = newHook;
681
+ }
682
+ return state.value;
683
+ }
684
+ const prev = hook.memoizedState;
685
+ if (depsChanged(prev.deps, deps)) {
686
+ const state = { value: factory(), deps };
687
+ hook.memoizedState = state;
688
+ return state.value;
689
+ }
690
+ return prev.value;
691
+ }
692
+ chunkS5YX7TXF_cjs.__name(useMemo, "useMemo");
693
+ var RectifyHookUseMemo_default = useMemo;
694
+
695
+ // ../rectify-hook/src/RectifyHookUseCallback.ts
696
+ function useCallback(callback, deps) {
697
+ return RectifyHookUseMemo_default(() => callback, deps);
698
+ }
699
+ chunkS5YX7TXF_cjs.__name(useCallback, "useCallback");
700
+ var RectifyHookUseCallback_default = useCallback;
701
+
702
+ // ../rectify-hook/src/RectifyHookContext.ts
703
+ var markFiberDirtyFn = null;
704
+ var setMarkFiberDirty = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fn) => {
705
+ markFiberDirtyFn = fn;
706
+ }, "setMarkFiberDirty");
707
+ var fiberSubscriptions = /* @__PURE__ */ new WeakMap();
708
+ function createContext(defaultValue) {
709
+ function ProviderFn(_props) {
710
+ return null;
711
+ }
712
+ chunkS5YX7TXF_cjs.__name(ProviderFn, "ProviderFn");
713
+ const context = ProviderFn;
714
+ context._context = context;
715
+ context._defaultValue = defaultValue;
716
+ context._subscribers = /* @__PURE__ */ new Set();
717
+ context.Provider = context;
718
+ return context;
719
+ }
720
+ chunkS5YX7TXF_cjs.__name(createContext, "createContext");
721
+ function useContext(context) {
722
+ const fiber = getFiberRendering();
723
+ if (!fiber) {
724
+ throw new Error("useContext must be used within a function component.");
725
+ }
726
+ let ancestor = fiber.return;
727
+ while (ancestor) {
728
+ if (ancestor.type?._context === context) {
729
+ if (fiber.alternate) {
730
+ context._subscribers.delete(fiber.alternate);
731
+ const altSet = fiberSubscriptions.get(fiber.alternate);
732
+ if (altSet) {
733
+ altSet.delete(context);
734
+ if (altSet.size === 0) fiberSubscriptions.delete(fiber.alternate);
735
+ }
736
+ }
737
+ context._subscribers.add(fiber);
738
+ let ctxSet = fiberSubscriptions.get(fiber);
739
+ if (!ctxSet) {
740
+ ctxSet = /* @__PURE__ */ new Set();
741
+ fiberSubscriptions.set(fiber, ctxSet);
742
+ }
743
+ ctxSet.add(context);
744
+ return ancestor.pendingProps.value;
745
+ }
746
+ ancestor = ancestor.return;
747
+ }
748
+ return context._defaultValue;
749
+ }
750
+ chunkS5YX7TXF_cjs.__name(useContext, "useContext");
751
+ function notifyContextConsumers(context) {
752
+ if (!markFiberDirtyFn) return;
753
+ for (const subscriber of context._subscribers) {
754
+ markFiberDirtyFn(subscriber);
755
+ }
756
+ }
757
+ chunkS5YX7TXF_cjs.__name(notifyContextConsumers, "notifyContextConsumers");
758
+ function clearContextSubscriptions(fiber) {
759
+ const ctxSet = fiberSubscriptions.get(fiber);
760
+ if (!ctxSet) return;
761
+ for (const context of ctxSet) {
762
+ context._subscribers.delete(fiber);
763
+ }
764
+ fiberSubscriptions.delete(fiber);
765
+ }
766
+ chunkS5YX7TXF_cjs.__name(clearContextSubscriptions, "clearContextSubscriptions");
767
+
768
+ // ../rectify-reconciler/src/RectifyFiberRenderPriority.ts
769
+ var currentEventPriority = DefaultLane;
770
+ var setCurrentEventPriority = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((lane) => {
771
+ currentEventPriority = lane;
772
+ }, "setCurrentEventPriority");
773
+ var resetCurrentEventPriority = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
774
+ currentEventPriority = DefaultLane;
775
+ }, "resetCurrentEventPriority");
776
+ var requestUpdateLane = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => currentEventPriority, "requestUpdateLane");
777
+ var currentRenderingLanes = SyncLane;
778
+ var setCurrentRenderingLanes = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((lanes) => {
779
+ currentRenderingLanes = lanes;
780
+ }, "setCurrentRenderingLanes");
781
+ var getCurrentLanePriority = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => currentRenderingLanes, "getCurrentLanePriority");
782
+
783
+ // ../rectify-reconciler/src/RectifyFiberScheduler.ts
784
+ var FRAME_BUDGET_MS = 5;
785
+ var frameStart = 0;
786
+ var shouldYield = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => performance.now() - frameStart > FRAME_BUDGET_MS, "shouldYield");
787
+ var doWork = null;
788
+ var setWorkCallback = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((cb) => {
789
+ doWork = cb;
790
+ }, "setWorkCallback");
791
+ var resumeCursor = null;
792
+ var setResumeCursor = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiber) => {
793
+ resumeCursor = fiber;
794
+ }, "setResumeCursor");
795
+ var getResumeCursor = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => resumeCursor, "getResumeCursor");
796
+ var clearResumeCursor = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
797
+ resumeCursor = null;
798
+ }, "clearResumeCursor");
799
+ var pendingLanes = NoLanes;
800
+ var scheduleRenderLane = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((lane) => {
801
+ pendingLanes |= lane;
802
+ if (lane & (SyncLane | InputLane)) {
803
+ scheduleMicrotask();
804
+ } else if (lane & DefaultLane) {
805
+ scheduleMessageTask();
806
+ } else if (lane & TransitionLane) {
807
+ scheduleTimeout();
808
+ } else if (lane & IdleLane) {
809
+ scheduleIdle();
810
+ }
811
+ }, "scheduleRenderLane");
812
+ var flush = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((mask) => {
813
+ const lanes = pendingLanes & mask;
814
+ if (!lanes) return;
815
+ pendingLanes &= ~lanes;
816
+ frameStart = performance.now();
817
+ doWork?.(lanes);
818
+ }, "flush");
819
+ var MICROTASK_MASK = SyncLane | InputLane;
820
+ var microtaskScheduled = false;
821
+ var scheduleMicrotask = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
822
+ if (microtaskScheduled) return;
823
+ microtaskScheduled = true;
824
+ queueMicrotask(() => {
825
+ microtaskScheduled = false;
826
+ flush(MICROTASK_MASK);
827
+ });
828
+ }, "scheduleMicrotask");
829
+ var DEFAULT_MASK = DefaultLane;
830
+ var mc = new MessageChannel();
831
+ var mcScheduled = false;
832
+ mc.port1.onmessage = () => {
833
+ mcScheduled = false;
834
+ flush(DEFAULT_MASK);
835
+ };
836
+ var scheduleMessageTask = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
837
+ if (mcScheduled) return;
838
+ mcScheduled = true;
839
+ mc.port2.postMessage(null);
840
+ }, "scheduleMessageTask");
841
+ var TRANSITION_MASK = TransitionLane;
842
+ var timeoutHandle = null;
843
+ var scheduleTimeout = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
844
+ if (timeoutHandle !== null) return;
845
+ timeoutHandle = setTimeout(() => {
846
+ timeoutHandle = null;
847
+ flush(TRANSITION_MASK);
848
+ }, 0);
849
+ }, "scheduleTimeout");
850
+ var IDLE_MASK = IdleLane;
851
+ var idleHandle = null;
852
+ var scheduleIdle = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
853
+ if (idleHandle !== null) return;
854
+ const run = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
855
+ idleHandle = null;
856
+ flush(IDLE_MASK);
857
+ }, "run");
858
+ if (typeof requestIdleCallback !== "undefined") {
859
+ idleHandle = requestIdleCallback(run, { timeout: 300 });
860
+ } else {
861
+ idleHandle = setTimeout(run, 300);
862
+ }
863
+ }, "scheduleIdle");
864
+
865
+ // ../rectify-reconciler/src/RectifyFiberWorkLoop.ts
866
+ var swapCurrentForWip = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((current, wip) => {
867
+ const parent = wip.return;
868
+ if (!parent) return;
869
+ if (parent.child === current) {
870
+ parent.child = wip;
871
+ return;
872
+ }
873
+ let prevSibling = parent.child;
874
+ while (prevSibling && prevSibling.sibling !== current) {
875
+ prevSibling = prevSibling.sibling;
876
+ }
877
+ if (prevSibling) prevSibling.sibling = wip;
878
+ }, "swapCurrentForWip");
879
+ var workLoop = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wipRoot) => {
880
+ let workInProgress = wipRoot;
881
+ while (workInProgress) {
882
+ const next = beginWork(workInProgress);
883
+ if (next) {
884
+ workInProgress = next;
885
+ } else {
886
+ workInProgress = completeUnitOfWork(workInProgress, wipRoot);
887
+ }
888
+ }
889
+ }, "workLoop");
890
+ var workLoopConcurrent = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wipRoot) => {
891
+ let workInProgress = getResumeCursor() ?? wipRoot;
892
+ clearResumeCursor();
893
+ while (workInProgress && !shouldYield()) {
894
+ const next = beginWork(workInProgress);
895
+ if (next) {
896
+ workInProgress = next;
897
+ } else {
898
+ workInProgress = completeUnitOfWork(workInProgress, wipRoot);
899
+ }
900
+ }
901
+ if (workInProgress !== null) {
902
+ setResumeCursor(workInProgress);
903
+ return false;
904
+ }
905
+ return true;
906
+ }, "workLoopConcurrent");
907
+ var workLoopOnFiberLanes = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wipRoot, renderLanes) => {
908
+ if (wipRoot.lanes & renderLanes) {
909
+ const wip = createWorkInProgress(wipRoot, wipRoot.pendingProps);
910
+ swapCurrentForWip(wipRoot, wip);
911
+ const isSync = !!(renderLanes & (SyncLane | InputLane));
912
+ let completed;
913
+ if (isSync) {
914
+ workLoop(wip);
915
+ completed = true;
916
+ } else {
917
+ completed = workLoopConcurrent(wip);
918
+ }
919
+ if (completed) bubbleFlagsToRoot(wip);
920
+ return completed;
921
+ }
922
+ if (wipRoot.childLanes & renderLanes) {
923
+ let child = wipRoot.child;
924
+ while (child) {
925
+ const done = workLoopOnFiberLanes(child, renderLanes);
926
+ if (!done) return false;
927
+ child = child.sibling;
928
+ }
929
+ }
930
+ return true;
931
+ }, "workLoopOnFiberLanes");
932
+ var cloneChildFibers = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wip) => {
933
+ const currentChild = wip.alternate?.child ?? null;
934
+ if (!currentChild) {
935
+ wip.child = null;
936
+ return null;
937
+ }
938
+ let oldChild = currentChild;
939
+ let prevNewChild = null;
940
+ while (oldChild) {
941
+ const newChild = createWorkInProgress(oldChild, oldChild.pendingProps);
942
+ newChild.return = wip;
943
+ if (!prevNewChild) {
944
+ wip.child = newChild;
945
+ } else {
946
+ prevNewChild.sibling = newChild;
947
+ }
948
+ prevNewChild = newChild;
949
+ oldChild = oldChild.sibling;
950
+ }
951
+ if (prevNewChild) prevNewChild.sibling = null;
952
+ return wip.child;
953
+ }, "cloneChildFibers");
954
+ var hasNoPendingWork = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wip) => !(wip.lanes & getCurrentLanePriority()), "hasNoPendingWork");
955
+ var isUpdate = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wip) => wip.alternate !== null, "isUpdate");
956
+ var renderFunctionComponent = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wip, Component) => {
957
+ const ComponentWithHooks = withHooks(wip, Component);
958
+ const children = ComponentWithHooks(wip.pendingProps);
959
+ reconcileChildren(wip, children);
960
+ }, "renderFunctionComponent");
961
+ var getProviderContext = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wip) => wip.type._context, "getProviderContext");
962
+ var beginWork = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wip) => {
963
+ switch (wip.workTag) {
964
+ case MemoComponent: {
965
+ const memo2 = wip.type;
966
+ const render = memo2._render;
967
+ if (!chunkS5YX7TXF_cjs.isFunction(render)) break;
968
+ if (isUpdate(wip) && hasNoPendingWork(wip)) {
969
+ const equal = memo2._compare ? memo2._compare(wip.memoizedProps, wip.pendingProps) : chunkS5YX7TXF_cjs.shallowEqual(wip.memoizedProps, wip.pendingProps);
970
+ if (equal) return cloneChildFibers(wip);
971
+ }
972
+ renderFunctionComponent(wip, render);
973
+ break;
974
+ }
975
+ case FunctionComponent: {
976
+ const Component = wip.type;
977
+ if (!chunkS5YX7TXF_cjs.isFunction(Component)) break;
978
+ if (isUpdate(wip) && hasNoPendingWork(wip) && chunkS5YX7TXF_cjs.shallowEqual(wip.memoizedProps, wip.pendingProps)) {
979
+ return cloneChildFibers(wip);
980
+ }
981
+ renderFunctionComponent(wip, Component);
982
+ break;
983
+ }
984
+ case FragmentComponent:
985
+ case HostRoot:
986
+ case HostComponent: {
987
+ reconcileChildren(wip, wip.pendingProps?.children);
988
+ break;
989
+ }
990
+ case ContextProvider: {
991
+ if (isUpdate(wip) && hasNoPendingWork(wip) && Object.is(wip.alternate.memoizedProps?.value, wip.pendingProps?.value)) {
992
+ return cloneChildFibers(wip);
993
+ }
994
+ reconcileChildren(wip, wip.pendingProps?.children);
995
+ if (isUpdate(wip)) {
996
+ const prevValue = wip.alternate.memoizedProps?.value;
997
+ const nextValue = wip.pendingProps?.value;
998
+ if (!Object.is(prevValue, nextValue)) {
999
+ notifyContextConsumers(getProviderContext(wip));
1000
+ }
1001
+ }
1002
+ break;
1003
+ }
1004
+ }
1005
+ return wip.child;
1006
+ }, "beginWork");
1007
+ var completeUnitOfWork = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((unit, stopAt) => {
1008
+ let completed = unit;
1009
+ while (completed) {
1010
+ bubbleProperties(completed);
1011
+ if (completed === stopAt) {
1012
+ return null;
1013
+ }
1014
+ if (completed.sibling) {
1015
+ return completed.sibling;
1016
+ }
1017
+ completed = completed.return;
1018
+ }
1019
+ return null;
1020
+ }, "completeUnitOfWork");
1021
+ var bubbleFlagsToRoot = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wip) => {
1022
+ let current = wip;
1023
+ let parent = current.return;
1024
+ while (parent) {
1025
+ parent.subtreeFlags |= current.flags | current.subtreeFlags;
1026
+ parent.childLanes |= current.lanes | current.childLanes;
1027
+ current = parent;
1028
+ parent = parent.return;
1029
+ }
1030
+ }, "bubbleFlagsToRoot");
1031
+ var bubbleProperties = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wip) => {
1032
+ wip.lanes &= ~getCurrentLanePriority();
1033
+ let subtreeFlags = NoFlags;
1034
+ let childLanes = NoLanes;
1035
+ let child = wip.child;
1036
+ while (child) {
1037
+ subtreeFlags |= child.flags | child.subtreeFlags;
1038
+ childLanes |= child.lanes | child.childLanes;
1039
+ child.return = wip;
1040
+ child = child.sibling;
1041
+ }
1042
+ wip.subtreeFlags = subtreeFlags;
1043
+ wip.childLanes = childLanes;
1044
+ }, "bubbleProperties");
1045
+ var reuseOrCreate = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((oldFiber, element, wip) => {
1046
+ const newFiber = createWorkInProgress(oldFiber, element.props);
1047
+ if (hasPropsChanged(oldFiber.memoizedProps, element.props)) {
1048
+ addFlagToFiber(newFiber, UpdateFlag);
1049
+ }
1050
+ newFiber.return = wip;
1051
+ return newFiber;
1052
+ }, "reuseOrCreate");
1053
+ var createAndPlace = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((element, wip) => {
1054
+ const newFiber = createFiberFromRectifyElement(element);
1055
+ newFiber.type = element.type;
1056
+ addFlagToFiber(newFiber, PlacementFlag);
1057
+ newFiber.return = wip;
1058
+ return newFiber;
1059
+ }, "createAndPlace");
1060
+ var appendFiber = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiber, prev, index, wip) => {
1061
+ fiber.index = index;
1062
+ if (!prev) wip.child = fiber;
1063
+ else prev.sibling = fiber;
1064
+ return fiber;
1065
+ }, "appendFiber");
1066
+ var buildOldFiberMap = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((firstRemaining, startIndex) => {
1067
+ const map = /* @__PURE__ */ new Map();
1068
+ let fiber = firstRemaining;
1069
+ let i = startIndex;
1070
+ while (fiber) {
1071
+ map.set(fiber.key ?? i, fiber);
1072
+ fiber = fiber.sibling;
1073
+ i++;
1074
+ }
1075
+ return map;
1076
+ }, "buildOldFiberMap");
1077
+ var reconcileSequential = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((state, firstOldFiber) => {
1078
+ let oldFiber = firstOldFiber;
1079
+ let i = 0;
1080
+ for (; i < state.newElements.length; i++) {
1081
+ const element = state.newElements[i];
1082
+ const { key: elementKey = null, type: elementType } = element;
1083
+ if (!oldFiber) break;
1084
+ if (oldFiber.key !== elementKey) break;
1085
+ if (oldFiber.type === elementType) {
1086
+ state.prev = appendFiber(reuseOrCreate(oldFiber, element, state.wip), state.prev, state.index++, state.wip);
1087
+ } else {
1088
+ addFlagToFiber(oldFiber, DeletionFlag);
1089
+ state.deletions.push(oldFiber);
1090
+ state.prev = appendFiber(createAndPlace(element, state.wip), state.prev, state.index++, state.wip);
1091
+ }
1092
+ oldFiber = oldFiber.sibling;
1093
+ }
1094
+ return { stoppedAt: i, oldFiber };
1095
+ }, "reconcileSequential");
1096
+ var reconcileKeyed = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((state, startAt, remainingOldFiber) => {
1097
+ const oldFiberMap = buildOldFiberMap(remainingOldFiber, startAt);
1098
+ let lastPlacedIndex = 0;
1099
+ for (let i = startAt; i < state.newElements.length; i++) {
1100
+ const element = state.newElements[i];
1101
+ const { key: elementKey = null, type: elementType } = element;
1102
+ const mapKey = elementKey ?? i;
1103
+ const matched = oldFiberMap.get(mapKey) ?? null;
1104
+ if (matched && matched.type === elementType) {
1105
+ oldFiberMap.delete(mapKey);
1106
+ const newFiber = reuseOrCreate(matched, element, state.wip);
1107
+ if (matched.index < lastPlacedIndex) {
1108
+ addFlagToFiber(newFiber, MoveFlag);
1109
+ } else {
1110
+ lastPlacedIndex = matched.index;
1111
+ }
1112
+ state.prev = appendFiber(newFiber, state.prev, state.index++, state.wip);
1113
+ } else {
1114
+ state.prev = appendFiber(createAndPlace(element, state.wip), state.prev, state.index++, state.wip);
1115
+ }
1116
+ }
1117
+ for (const orphan of oldFiberMap.values()) {
1118
+ addFlagToFiber(orphan, DeletionFlag);
1119
+ state.deletions.push(orphan);
1120
+ }
1121
+ }, "reconcileKeyed");
1122
+ var toChildArray = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((children) => {
1123
+ if (children == null || typeof children === "boolean") return [];
1124
+ if (chunkS5YX7TXF_cjs.isArray(children)) return children;
1125
+ return [children];
1126
+ }, "toChildArray");
1127
+ var reconcileChildren = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wip, children) => {
1128
+ const newElements = toChildArray(children).map(chunkS5YX7TXF_cjs.createElementFromRectifyNode).filter(chunkS5YX7TXF_cjs.isValidRectifyElement);
1129
+ const state = { wip, newElements, deletions: [], prev: null, index: 0 };
1130
+ const firstOldFiber = wip.alternate?.child ?? null;
1131
+ const { stoppedAt, oldFiber } = reconcileSequential(state, firstOldFiber);
1132
+ if (stoppedAt < newElements.length) {
1133
+ reconcileKeyed(state, stoppedAt, oldFiber);
1134
+ } else {
1135
+ let leftover = oldFiber;
1136
+ while (leftover) {
1137
+ addFlagToFiber(leftover, DeletionFlag);
1138
+ state.deletions.push(leftover);
1139
+ leftover = leftover.sibling;
1140
+ }
1141
+ }
1142
+ if (state.prev) state.prev.sibling = null;
1143
+ if (state.deletions.length) wip.deletions = state.deletions;
1144
+ }, "reconcileChildren");
1145
+
1146
+ // ../rectify-reconciler/src/RectifyFiberCommitWork.ts
1147
+ var MutationMask = PlacementFlag | UpdateFlag | MoveFlag;
1148
+ var commitWork = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((finishedWork) => {
1149
+ if (finishedWork.deletions?.length) {
1150
+ finishedWork.deletions.forEach(removeHostTree);
1151
+ finishedWork.deletions = null;
1152
+ }
1153
+ if (finishedWork.flags & MutationMask) {
1154
+ commitMutation(finishedWork);
1155
+ syncMemoizedProps(finishedWork);
1156
+ }
1157
+ if (finishedWork.subtreeFlags & MutationMask) {
1158
+ let child = finishedWork.child;
1159
+ while (child) {
1160
+ commitWork(child);
1161
+ child = child.sibling;
1162
+ }
1163
+ }
1164
+ finishedWork.flags = NoFlags;
1165
+ finishedWork.subtreeFlags = NoFlags;
1166
+ }, "commitWork");
1167
+ var syncMemoizedProps = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wip) => {
1168
+ wip.memoizedProps = wip.pendingProps;
1169
+ }, "syncMemoizedProps");
1170
+ var attachRef = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wip) => {
1171
+ const ref = wip.pendingProps?.ref;
1172
+ if (ref && typeof ref === "object" && "current" in ref) {
1173
+ ref.current = wip.stateNode;
1174
+ }
1175
+ }, "attachRef");
1176
+ var detachRef = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiber) => {
1177
+ const ref = fiber.memoizedProps?.ref;
1178
+ if (ref && typeof ref === "object" && "current" in ref) {
1179
+ ref.current = null;
1180
+ }
1181
+ }, "detachRef");
1182
+ var insertIntoParent = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wip, node) => {
1183
+ const parentDom = getParentDom(wip);
1184
+ const before = getHostSibling(wip) ?? (wip.return ? getHostSibling(wip.return) : null);
1185
+ if (before) parentDom.insertBefore(node, before);
1186
+ else parentDom.appendChild(node);
1187
+ }, "insertIntoParent");
1188
+ var placeNode = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wip, node) => {
1189
+ insertIntoParent(wip, node);
1190
+ precacheFiberNode(wip, node);
1191
+ attachRef(wip);
1192
+ }, "placeNode");
1193
+ var commitMutation = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((childFiber) => {
1194
+ switch (childFiber.workTag) {
1195
+ case HostComponent:
1196
+ commitMutationHostComponent(childFiber);
1197
+ break;
1198
+ case HostText:
1199
+ commitMutationHostText(childFiber);
1200
+ break;
1201
+ }
1202
+ }, "commitMutation");
1203
+ var commitMutationHostComponent = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wip) => {
1204
+ if (!wip.stateNode) {
1205
+ const node = createDomElementFromFiber(wip);
1206
+ precacheFiberNode(wip, node);
1207
+ applyPropsToDom(node, wip.memoizedProps, wip.pendingProps);
1208
+ wip.stateNode = node;
1209
+ }
1210
+ if (hasFlagOnFiber(wip, PlacementFlag)) {
1211
+ placeNode(wip, wip.stateNode);
1212
+ removeFlagFromFiber(wip, PlacementFlag);
1213
+ }
1214
+ if (hasFlagOnFiber(wip, MoveFlag)) {
1215
+ wip.stateNode.remove();
1216
+ placeNode(wip, wip.stateNode);
1217
+ removeFlagFromFiber(wip, MoveFlag);
1218
+ }
1219
+ if (hasFlagOnFiber(wip, UpdateFlag)) {
1220
+ applyPropsToDom(wip.stateNode, wip.memoizedProps, wip.pendingProps);
1221
+ precacheFiberNode(wip, wip.stateNode);
1222
+ attachRef(wip);
1223
+ removeFlagFromFiber(wip, UpdateFlag);
1224
+ }
1225
+ }, "commitMutationHostComponent");
1226
+ var commitMutationHostText = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((wip) => {
1227
+ if (!wip.stateNode) {
1228
+ const node = createDomElementFromFiber(wip);
1229
+ precacheFiberNode(wip, node);
1230
+ wip.stateNode = node;
1231
+ }
1232
+ if (hasFlagOnFiber(wip, PlacementFlag)) {
1233
+ placeNode(wip, wip.stateNode);
1234
+ removeFlagFromFiber(wip, PlacementFlag);
1235
+ }
1236
+ if (hasFlagOnFiber(wip, MoveFlag)) {
1237
+ wip.stateNode.remove();
1238
+ placeNode(wip, wip.stateNode);
1239
+ removeFlagFromFiber(wip, MoveFlag);
1240
+ }
1241
+ if (hasFlagOnFiber(wip, UpdateFlag)) {
1242
+ if (wip.memoizedProps !== wip.pendingProps) {
1243
+ wip.stateNode.nodeValue = String(wip.pendingProps);
1244
+ }
1245
+ precacheFiberNode(wip, wip.stateNode);
1246
+ removeFlagFromFiber(wip, UpdateFlag);
1247
+ }
1248
+ }, "commitMutationHostText");
1249
+ var removeHostTree = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiber) => {
1250
+ if (fiber.memoizedState) {
1251
+ runEffectCleanups(fiber);
1252
+ }
1253
+ clearContextSubscriptions(fiber);
1254
+ if (fiber.workTag === HostComponent || fiber.workTag === HostText) {
1255
+ detachRef(fiber);
1256
+ fiber.stateNode?.remove();
1257
+ }
1258
+ let child = fiber.child;
1259
+ while (child) {
1260
+ removeHostTree(child);
1261
+ child = child.sibling;
1262
+ }
1263
+ }, "removeHostTree");
1264
+
1265
+ // ../rectify-reconciler/src/RectifyFiberConcurrentUpdate.ts
1266
+ var instance3 = {
1267
+ head: null,
1268
+ tail: null
1269
+ };
1270
+ var enqueueUpdate = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((update) => {
1271
+ update.next = null;
1272
+ if (instance3.tail === null) {
1273
+ instance3.head = update;
1274
+ instance3.tail = update;
1275
+ return;
1276
+ }
1277
+ instance3.tail.next = update;
1278
+ instance3.tail = update;
1279
+ }, "enqueueUpdate");
1280
+ var dequeueUpdate = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
1281
+ const first = instance3.head;
1282
+ if (first === null) {
1283
+ return null;
1284
+ }
1285
+ instance3.head = first.next;
1286
+ if (instance3.head === null) {
1287
+ instance3.tail = null;
1288
+ }
1289
+ first.next = null;
1290
+ return first;
1291
+ }, "dequeueUpdate");
1292
+ var hasUpdate = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => instance3.head !== null, "hasUpdate");
1293
+
1294
+ // ../rectify-reconciler/src/RectifyFiberReconciler.ts
1295
+ injectEventPriorityCallbacks(
1296
+ setCurrentEventPriority,
1297
+ resetCurrentEventPriority
1298
+ );
1299
+ var isFlushingLayoutEffects = false;
1300
+ var performWork = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((lanes) => {
1301
+ const fiberRoot = getScheduledFiberRoot();
1302
+ if (!fiberRoot) return;
1303
+ if (!getResumeCursor()) flushPendingUpdates();
1304
+ setCurrentRenderingLanes(lanes);
1305
+ const completed = workLoopOnFiberLanes(fiberRoot.root, lanes);
1306
+ if (!completed) {
1307
+ scheduleRenderLane(lanes);
1308
+ return;
1309
+ }
1310
+ clearResumeCursor();
1311
+ commitWork(fiberRoot.root);
1312
+ markContainerAsRoot(fiberRoot.root, fiberRoot.containerDom);
1313
+ flushLayoutPhase(fiberRoot);
1314
+ schedulePassiveEffects();
1315
+ }, "performWork");
1316
+ setWorkCallback(performWork);
1317
+ var onScheduleRerender = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiber) => {
1318
+ const lane = isFlushingLayoutEffects ? SyncLane : requestUpdateLane();
1319
+ enqueueUpdate({ lanes: lane, fiber, next: null });
1320
+ if (!isFlushingLayoutEffects) {
1321
+ scheduleRenderLane(lane);
1322
+ }
1323
+ }, "onScheduleRerender");
1324
+ var onMarkFiberDirty = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiber) => {
1325
+ const lane = getCurrentLanePriority();
1326
+ fiber.lanes |= lane;
1327
+ const wip = fiber.alternate;
1328
+ if (!wip) return;
1329
+ wip.lanes |= lane;
1330
+ let parent = wip.return;
1331
+ while (parent) {
1332
+ if ((parent.childLanes & lane) === lane) break;
1333
+ parent.childLanes |= lane;
1334
+ parent = parent.return;
1335
+ }
1336
+ }, "onMarkFiberDirty");
1337
+ setScheduleRerender(onScheduleRerender);
1338
+ setMarkFiberDirty(onMarkFiberDirty);
1339
+ var createContainer = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((container) => {
1340
+ return createHostRootFiber(container);
1341
+ }, "createContainer");
1342
+ var updateContainer = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((children, fiberRoot) => {
1343
+ fiberRoot.children = children;
1344
+ setScheduledFiberRoot(fiberRoot);
1345
+ const wipRoot = createWorkInProgress(fiberRoot.root, { children });
1346
+ setCurrentRenderingLanes(SyncLane);
1347
+ workLoop(wipRoot);
1348
+ commitWork(wipRoot);
1349
+ fiberRoot.root = wipRoot;
1350
+ markContainerAsRoot(wipRoot, fiberRoot.containerDom);
1351
+ setScheduledFiberRoot(fiberRoot);
1352
+ flushLayoutPhase(fiberRoot);
1353
+ schedulePassiveEffects();
1354
+ }, "updateContainer");
1355
+ var passiveChannel = new MessageChannel();
1356
+ var schedulePassiveEffects = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
1357
+ passiveChannel.port1.onmessage = () => {
1358
+ flushEffectCleanups();
1359
+ flushEffects();
1360
+ };
1361
+ passiveChannel.port2.postMessage(null);
1362
+ }, "schedulePassiveEffects");
1363
+ var flushLayoutPhase = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((fiberRoot) => {
1364
+ while (true) {
1365
+ isFlushingLayoutEffects = true;
1366
+ flushLayoutEffectCleanups();
1367
+ flushLayoutEffects();
1368
+ isFlushingLayoutEffects = false;
1369
+ if (!hasUpdate()) break;
1370
+ flushPendingUpdates();
1371
+ setCurrentRenderingLanes(SyncLane);
1372
+ const completed = workLoopOnFiberLanes(fiberRoot.root, SyncLane);
1373
+ if (!completed) break;
1374
+ clearResumeCursor();
1375
+ commitWork(fiberRoot.root);
1376
+ markContainerAsRoot(fiberRoot.root, fiberRoot.containerDom);
1377
+ }
1378
+ }, "flushLayoutPhase");
1379
+ var flushPendingUpdates = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
1380
+ let update = dequeueUpdate();
1381
+ while (update) {
1382
+ propagateLaneToAncestors(update);
1383
+ update = dequeueUpdate();
1384
+ }
1385
+ }, "flushPendingUpdates");
1386
+ var propagateLaneToAncestors = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((updateQueue) => {
1387
+ const lane = updateQueue.lanes;
1388
+ let fiber = updateQueue.fiber;
1389
+ fiber.lanes |= lane;
1390
+ if (fiber.alternate) fiber.alternate.lanes |= lane;
1391
+ fiber = fiber.return;
1392
+ while (fiber) {
1393
+ fiber.childLanes |= lane;
1394
+ if (fiber.alternate) fiber.alternate.childLanes |= lane;
1395
+ fiber = fiber.return;
1396
+ }
1397
+ }, "propagateLaneToAncestors");
1398
+
1399
+ // ../rectify-dom/src/RectifyDomRoot.ts
1400
+ var createRoot = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((container) => {
1401
+ const hostRoot = createContainer(container);
1402
+ markContainerAsRoot(hostRoot.root, container);
1403
+ listenToAllEventSupported(container);
1404
+ return {
1405
+ render: /* @__PURE__ */ chunkS5YX7TXF_cjs.__name((node) => {
1406
+ updateContainer(node, hostRoot);
1407
+ }, "render"),
1408
+ unmount: /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(() => {
1409
+ unmarkContainerAsRoot(container);
1410
+ }, "unmount")
1411
+ };
1412
+ }, "createRoot");
1413
+
1414
+ // src/RectifyMemo.ts
1415
+ function memo(Component, compare) {
1416
+ const wrapper = /* @__PURE__ */ chunkS5YX7TXF_cjs.__name(((_props) => null), "wrapper");
1417
+ wrapper._isMemo = true;
1418
+ wrapper._render = Component;
1419
+ wrapper._compare = compare ?? null;
1420
+ return wrapper;
1421
+ }
1422
+ chunkS5YX7TXF_cjs.__name(memo, "memo");
1423
+
1424
+ Object.defineProperty(exports, "Fragment", {
1425
+ enumerable: true,
1426
+ get: function () { return chunkS5YX7TXF_cjs.Fragment; }
1427
+ });
1428
+ Object.defineProperty(exports, "jsx", {
1429
+ enumerable: true,
1430
+ get: function () { return chunkS5YX7TXF_cjs.jsx; }
1431
+ });
1432
+ exports.SyntheticEvent = SyntheticEvent_default;
1433
+ exports.createContext = createContext;
1434
+ exports.createRoot = createRoot;
1435
+ exports.memo = memo;
1436
+ exports.useCallback = RectifyHookUseCallback_default;
1437
+ exports.useContext = useContext;
1438
+ exports.useEffect = RectifyHookUseEffect_default;
1439
+ exports.useLayoutEffect = RectifyHookUseLayoutEffect_default;
1440
+ exports.useMemo = RectifyHookUseMemo_default;
1441
+ exports.useRef = RectifyHookUseRef_default;
1442
+ exports.useState = RectifyHookUseState_default;
1443
+ //# sourceMappingURL=index.cjs.map
1444
+ //# sourceMappingURL=index.cjs.map