@rectify-dev/core 2.0.3 → 2.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/README.md +445 -0
- package/dist/index.cjs +870 -439
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +130 -3
- package/dist/index.d.ts +130 -3
- package/dist/index.js +866 -440
- package/dist/index.js.map +1 -1
- package/dist/jsx-runtime.d.cts +6 -0
- package/dist/jsx-runtime.d.ts +6 -0
- package/package.json +4 -4
package/dist/index.js
CHANGED
|
@@ -189,6 +189,48 @@ var listenToNativeEvent = /* @__PURE__ */ __name((domEventName, target) => {
|
|
|
189
189
|
// ../rectify-dom-binding/src/clients/RectifyDomProperties.ts
|
|
190
190
|
var isEvent = /* @__PURE__ */ __name((k) => k.startsWith("on"), "isEvent");
|
|
191
191
|
var isProperty = /* @__PURE__ */ __name((k) => k !== "children" && k !== "ref" && !isEvent(k), "isProperty");
|
|
192
|
+
var SVG_NS = "http://www.w3.org/2000/svg";
|
|
193
|
+
var SVG_CAMEL_ATTRS = /* @__PURE__ */ new Set([
|
|
194
|
+
"viewBox",
|
|
195
|
+
"preserveAspectRatio",
|
|
196
|
+
"gradientTransform",
|
|
197
|
+
"gradientUnits",
|
|
198
|
+
"patternTransform",
|
|
199
|
+
"patternUnits",
|
|
200
|
+
"patternContentUnits",
|
|
201
|
+
"clipPathUnits",
|
|
202
|
+
"markerUnits",
|
|
203
|
+
"markerWidth",
|
|
204
|
+
"markerHeight",
|
|
205
|
+
"refX",
|
|
206
|
+
"refY",
|
|
207
|
+
"textLength",
|
|
208
|
+
"startOffset",
|
|
209
|
+
"baseFrequency",
|
|
210
|
+
"numOctaves",
|
|
211
|
+
"stdDeviation",
|
|
212
|
+
"filterUnits",
|
|
213
|
+
"primitiveUnits",
|
|
214
|
+
"tableValues",
|
|
215
|
+
"kernelMatrix",
|
|
216
|
+
"kernelUnitLength",
|
|
217
|
+
"targetX",
|
|
218
|
+
"targetY",
|
|
219
|
+
"xChannelSelector",
|
|
220
|
+
"yChannelSelector",
|
|
221
|
+
"diffuseConstant",
|
|
222
|
+
"surfaceScale",
|
|
223
|
+
"specularConstant",
|
|
224
|
+
"specularExponent",
|
|
225
|
+
"limitingConeAngle",
|
|
226
|
+
"pointsAtX",
|
|
227
|
+
"pointsAtY",
|
|
228
|
+
"pointsAtZ",
|
|
229
|
+
"repeatX",
|
|
230
|
+
"repeatY"
|
|
231
|
+
]);
|
|
232
|
+
var camelToKebab = /* @__PURE__ */ __name((s) => s.replace(/[A-Z]/g, (m) => "-" + m.toLowerCase()), "camelToKebab");
|
|
233
|
+
var svgAttrName = /* @__PURE__ */ __name((k) => SVG_CAMEL_ATTRS.has(k) ? k : camelToKebab(k), "svgAttrName");
|
|
192
234
|
var unitlessProperties = /* @__PURE__ */ new Set([
|
|
193
235
|
"zIndex",
|
|
194
236
|
"opacity",
|
|
@@ -211,14 +253,16 @@ function convertStyleObjectToString(styleObj) {
|
|
|
211
253
|
__name(convertStyleObjectToString, "convertStyleObjectToString");
|
|
212
254
|
var applyPropsToDom = /* @__PURE__ */ __name((node, prevProps = {}, nextProps = {}) => {
|
|
213
255
|
const element = node;
|
|
256
|
+
const isSvg = element.namespaceURI === SVG_NS;
|
|
214
257
|
const eventNode = getEventHandlerListeners(element) || /* @__PURE__ */ new Map();
|
|
215
258
|
for (const k in prevProps) {
|
|
216
259
|
if (isEvent(k) && !(k in nextProps)) {
|
|
217
260
|
eventNode.delete(k);
|
|
218
261
|
}
|
|
219
262
|
if (isProperty(k) && !(k in nextProps)) {
|
|
263
|
+
const attrName = isSvg ? svgAttrName(k) : k;
|
|
220
264
|
element[k] = "";
|
|
221
|
-
element.removeAttribute(
|
|
265
|
+
element.removeAttribute(attrName);
|
|
222
266
|
}
|
|
223
267
|
}
|
|
224
268
|
for (const k in nextProps) {
|
|
@@ -228,13 +272,22 @@ var applyPropsToDom = /* @__PURE__ */ __name((node, prevProps = {}, nextProps =
|
|
|
228
272
|
eventNode.set(k, nextProps[k]);
|
|
229
273
|
}
|
|
230
274
|
} else if (k === "style") {
|
|
231
|
-
|
|
275
|
+
if (typeof nextProps[k] === "string") {
|
|
276
|
+
element.setAttribute("style", nextProps[k]);
|
|
277
|
+
} else {
|
|
278
|
+
element.setAttribute("style", convertStyleObjectToString(nextProps[k]));
|
|
279
|
+
}
|
|
232
280
|
} else {
|
|
233
281
|
const v = nextProps[k];
|
|
234
|
-
if (k === "className")
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
282
|
+
if (k === "className") {
|
|
283
|
+
element.setAttribute("class", v ?? "");
|
|
284
|
+
} else if (v === false || v === null || v === void 0) {
|
|
285
|
+
const attrName = isSvg ? svgAttrName(k) : k;
|
|
286
|
+
element.removeAttribute(attrName);
|
|
287
|
+
} else {
|
|
288
|
+
const attrName = isSvg ? svgAttrName(k) : k;
|
|
289
|
+
element.setAttribute(attrName, String(v));
|
|
290
|
+
}
|
|
238
291
|
}
|
|
239
292
|
}
|
|
240
293
|
setEventHandlerListeners(element, eventNode);
|
|
@@ -246,6 +299,7 @@ var PlacementFlag = 1 << 0;
|
|
|
246
299
|
var UpdateFlag = 1 << 1;
|
|
247
300
|
var DeletionFlag = 1 << 2;
|
|
248
301
|
var MoveFlag = 1 << 3;
|
|
302
|
+
var RefFlag = 1 << 4;
|
|
249
303
|
|
|
250
304
|
// ../rectify-reconciler/src/RectifyFiberLanes.ts
|
|
251
305
|
var NoLanes = 0;
|
|
@@ -257,12 +311,15 @@ var IdleLane = 16;
|
|
|
257
311
|
|
|
258
312
|
// ../rectify-reconciler/src/RectifyFiberWorkTags.ts
|
|
259
313
|
var FunctionComponent = /* @__PURE__ */ Symbol.for("rectify.function_component");
|
|
314
|
+
var ClassComponent = /* @__PURE__ */ Symbol.for("rectify.class_component");
|
|
260
315
|
var HostComponent = /* @__PURE__ */ Symbol.for("rectify.host_component");
|
|
261
316
|
var HostText = /* @__PURE__ */ Symbol.for("rectify.host_text");
|
|
262
317
|
var HostRoot = /* @__PURE__ */ Symbol.for("rectify.host_root");
|
|
263
318
|
var FragmentComponent = /* @__PURE__ */ Symbol.for("rectify.fragment_component");
|
|
264
319
|
var ContextProvider = /* @__PURE__ */ Symbol.for("rectify.context_provider");
|
|
265
320
|
var MemoComponent = /* @__PURE__ */ Symbol.for("rectify.memo_component");
|
|
321
|
+
var LazyComponent = /* @__PURE__ */ Symbol.for("rectify.lazy_component");
|
|
322
|
+
var SuspenseComponent = /* @__PURE__ */ Symbol.for("rectify.suspense_component");
|
|
266
323
|
var addFlagToFiber = /* @__PURE__ */ __name((fiber, flag) => {
|
|
267
324
|
if (hasFlagOnFiber(fiber, flag)) return;
|
|
268
325
|
fiber.flags |= flag;
|
|
@@ -284,6 +341,15 @@ var getFiberTagFromElement = /* @__PURE__ */ __name((element) => {
|
|
|
284
341
|
if (isFunction(element.type) && element.type?._isMemo === true) {
|
|
285
342
|
return MemoComponent;
|
|
286
343
|
}
|
|
344
|
+
if (element.type?._isSuspense === true) {
|
|
345
|
+
return SuspenseComponent;
|
|
346
|
+
}
|
|
347
|
+
if (element.type?._isLazy === true) {
|
|
348
|
+
return LazyComponent;
|
|
349
|
+
}
|
|
350
|
+
if (element.type?._isClassComponent === true) {
|
|
351
|
+
return ClassComponent;
|
|
352
|
+
}
|
|
287
353
|
return isFunction(element.type) ? FunctionComponent : HostComponent;
|
|
288
354
|
case RECTIFY_TEXT_TYPE:
|
|
289
355
|
return HostText;
|
|
@@ -293,12 +359,53 @@ var getFiberTagFromElement = /* @__PURE__ */ __name((element) => {
|
|
|
293
359
|
return null;
|
|
294
360
|
}
|
|
295
361
|
}, "getFiberTagFromElement");
|
|
362
|
+
var SVG_TAGS = /* @__PURE__ */ new Set([
|
|
363
|
+
"svg",
|
|
364
|
+
"circle",
|
|
365
|
+
"ellipse",
|
|
366
|
+
"line",
|
|
367
|
+
"path",
|
|
368
|
+
"polygon",
|
|
369
|
+
"polyline",
|
|
370
|
+
"rect",
|
|
371
|
+
"g",
|
|
372
|
+
"defs",
|
|
373
|
+
"use",
|
|
374
|
+
"symbol",
|
|
375
|
+
"clipPath",
|
|
376
|
+
"mask",
|
|
377
|
+
"pattern",
|
|
378
|
+
"linearGradient",
|
|
379
|
+
"radialGradient",
|
|
380
|
+
"stop",
|
|
381
|
+
"marker",
|
|
382
|
+
"image",
|
|
383
|
+
"text",
|
|
384
|
+
"tspan",
|
|
385
|
+
"textPath",
|
|
386
|
+
"foreignObject",
|
|
387
|
+
"animate",
|
|
388
|
+
"animateMotion",
|
|
389
|
+
"animateTransform",
|
|
390
|
+
"feBlend",
|
|
391
|
+
"feColorMatrix",
|
|
392
|
+
"feComposite",
|
|
393
|
+
"feGaussianBlur",
|
|
394
|
+
"feOffset",
|
|
395
|
+
"feMerge",
|
|
396
|
+
"feMergeNode",
|
|
397
|
+
"feTurbulence",
|
|
398
|
+
"feFlood"
|
|
399
|
+
]);
|
|
400
|
+
var SVG_NS2 = "http://www.w3.org/2000/svg";
|
|
296
401
|
var createDomElementFromFiber = /* @__PURE__ */ __name((fiber) => {
|
|
297
402
|
switch (fiber.workTag) {
|
|
298
403
|
case HostText:
|
|
299
404
|
return document.createTextNode(fiber.pendingProps);
|
|
300
|
-
default:
|
|
301
|
-
|
|
405
|
+
default: {
|
|
406
|
+
const tag = fiber.type;
|
|
407
|
+
return SVG_TAGS.has(tag) ? document.createElementNS(SVG_NS2, tag) : document.createElement(tag);
|
|
408
|
+
}
|
|
302
409
|
}
|
|
303
410
|
}, "createDomElementFromFiber");
|
|
304
411
|
var getParentDom = /* @__PURE__ */ __name((fiber) => {
|
|
@@ -328,8 +435,10 @@ __name(findFirstHostNode, "findFirstHostNode");
|
|
|
328
435
|
function getHostSibling(fiber) {
|
|
329
436
|
let sibling = fiber.sibling;
|
|
330
437
|
while (sibling) {
|
|
331
|
-
|
|
332
|
-
|
|
438
|
+
if (!(sibling.flags & PlacementFlag)) {
|
|
439
|
+
const node = findFirstHostNode(sibling);
|
|
440
|
+
if (node) return node;
|
|
441
|
+
}
|
|
333
442
|
sibling = sibling.sibling;
|
|
334
443
|
}
|
|
335
444
|
return null;
|
|
@@ -360,13 +469,15 @@ var createFiber = /* @__PURE__ */ __name((workTag, pendingProps, key = null) =>
|
|
|
360
469
|
sibling: null,
|
|
361
470
|
return: null,
|
|
362
471
|
stateNode: null,
|
|
472
|
+
classInstance: null,
|
|
363
473
|
deletions: null,
|
|
364
474
|
alternate: null,
|
|
365
475
|
lanes: NoLanes,
|
|
366
476
|
childLanes: NoLanes,
|
|
367
477
|
subtreeFlags: NoFlags,
|
|
368
478
|
flags: NoFlags,
|
|
369
|
-
memoizedState: null
|
|
479
|
+
memoizedState: null,
|
|
480
|
+
refCleanup: null
|
|
370
481
|
};
|
|
371
482
|
}, "createFiber");
|
|
372
483
|
var createHostRootFiber = /* @__PURE__ */ __name((containerDom) => {
|
|
@@ -393,6 +504,8 @@ var createWorkInProgress = /* @__PURE__ */ __name((current, pendingProps) => {
|
|
|
393
504
|
}
|
|
394
505
|
wip.memoizedProps = current.memoizedProps;
|
|
395
506
|
wip.memoizedState = current.memoizedState;
|
|
507
|
+
wip.classInstance = current.classInstance;
|
|
508
|
+
wip.refCleanup = current.refCleanup;
|
|
396
509
|
wip.return = current.return;
|
|
397
510
|
wip.child = current.child;
|
|
398
511
|
wip.sibling = current.sibling;
|
|
@@ -418,6 +531,88 @@ var getScheduledFiberRoot = /* @__PURE__ */ __name(() => {
|
|
|
418
531
|
return instance.fiberRoot;
|
|
419
532
|
}, "getScheduledFiberRoot");
|
|
420
533
|
|
|
534
|
+
// ../rectify-reconciler/src/RectifyFiberScheduler.ts
|
|
535
|
+
var FRAME_BUDGET_MS = 5;
|
|
536
|
+
var frameStart = 0;
|
|
537
|
+
var shouldYield = /* @__PURE__ */ __name(() => performance.now() - frameStart > FRAME_BUDGET_MS, "shouldYield");
|
|
538
|
+
var doWork = null;
|
|
539
|
+
var setWorkCallback = /* @__PURE__ */ __name((cb) => {
|
|
540
|
+
doWork = cb;
|
|
541
|
+
}, "setWorkCallback");
|
|
542
|
+
var resumeCursor = null;
|
|
543
|
+
var setResumeCursor = /* @__PURE__ */ __name((fiber) => {
|
|
544
|
+
resumeCursor = fiber;
|
|
545
|
+
}, "setResumeCursor");
|
|
546
|
+
var getResumeCursor = /* @__PURE__ */ __name(() => resumeCursor, "getResumeCursor");
|
|
547
|
+
var clearResumeCursor = /* @__PURE__ */ __name(() => {
|
|
548
|
+
resumeCursor = null;
|
|
549
|
+
}, "clearResumeCursor");
|
|
550
|
+
var pendingLanes = NoLanes;
|
|
551
|
+
var scheduleRenderLane = /* @__PURE__ */ __name((lane) => {
|
|
552
|
+
pendingLanes |= lane;
|
|
553
|
+
if (lane & (SyncLane | InputLane)) {
|
|
554
|
+
scheduleMicrotask();
|
|
555
|
+
} else if (lane & DefaultLane) {
|
|
556
|
+
scheduleMessageTask();
|
|
557
|
+
} else if (lane & TransitionLane) {
|
|
558
|
+
scheduleTimeout();
|
|
559
|
+
} else if (lane & IdleLane) {
|
|
560
|
+
scheduleIdle();
|
|
561
|
+
}
|
|
562
|
+
}, "scheduleRenderLane");
|
|
563
|
+
var flush = /* @__PURE__ */ __name((mask) => {
|
|
564
|
+
const lanes = pendingLanes & mask;
|
|
565
|
+
if (!lanes) return;
|
|
566
|
+
pendingLanes &= ~lanes;
|
|
567
|
+
frameStart = performance.now();
|
|
568
|
+
doWork?.(lanes);
|
|
569
|
+
}, "flush");
|
|
570
|
+
var MICROTASK_MASK = SyncLane | InputLane;
|
|
571
|
+
var microtaskScheduled = false;
|
|
572
|
+
var scheduleMicrotask = /* @__PURE__ */ __name(() => {
|
|
573
|
+
if (microtaskScheduled) return;
|
|
574
|
+
microtaskScheduled = true;
|
|
575
|
+
queueMicrotask(() => {
|
|
576
|
+
microtaskScheduled = false;
|
|
577
|
+
flush(MICROTASK_MASK);
|
|
578
|
+
});
|
|
579
|
+
}, "scheduleMicrotask");
|
|
580
|
+
var DEFAULT_MASK = DefaultLane;
|
|
581
|
+
var mc = new MessageChannel();
|
|
582
|
+
var mcScheduled = false;
|
|
583
|
+
mc.port1.onmessage = () => {
|
|
584
|
+
mcScheduled = false;
|
|
585
|
+
flush(DEFAULT_MASK);
|
|
586
|
+
};
|
|
587
|
+
var scheduleMessageTask = /* @__PURE__ */ __name(() => {
|
|
588
|
+
if (mcScheduled) return;
|
|
589
|
+
mcScheduled = true;
|
|
590
|
+
mc.port2.postMessage(null);
|
|
591
|
+
}, "scheduleMessageTask");
|
|
592
|
+
var TRANSITION_MASK = TransitionLane;
|
|
593
|
+
var timeoutHandle = null;
|
|
594
|
+
var scheduleTimeout = /* @__PURE__ */ __name(() => {
|
|
595
|
+
if (timeoutHandle !== null) return;
|
|
596
|
+
timeoutHandle = setTimeout(() => {
|
|
597
|
+
timeoutHandle = null;
|
|
598
|
+
flush(TRANSITION_MASK);
|
|
599
|
+
}, 0);
|
|
600
|
+
}, "scheduleTimeout");
|
|
601
|
+
var IDLE_MASK = IdleLane;
|
|
602
|
+
var idleHandle = null;
|
|
603
|
+
var scheduleIdle = /* @__PURE__ */ __name(() => {
|
|
604
|
+
if (idleHandle !== null) return;
|
|
605
|
+
const run = /* @__PURE__ */ __name(() => {
|
|
606
|
+
idleHandle = null;
|
|
607
|
+
flush(IDLE_MASK);
|
|
608
|
+
}, "run");
|
|
609
|
+
if (typeof requestIdleCallback !== "undefined") {
|
|
610
|
+
idleHandle = requestIdleCallback(run, { timeout: 300 });
|
|
611
|
+
} else {
|
|
612
|
+
idleHandle = setTimeout(run, 300);
|
|
613
|
+
}
|
|
614
|
+
}, "scheduleIdle");
|
|
615
|
+
|
|
421
616
|
// ../rectify-hook/src/RectifyHookRenderingFiber.ts
|
|
422
617
|
var instance2 = {
|
|
423
618
|
fiberRendering: null,
|
|
@@ -463,10 +658,10 @@ var prepareToUseHooks = /* @__PURE__ */ __name((wip) => {
|
|
|
463
658
|
var finishUsingHooks = /* @__PURE__ */ __name(() => {
|
|
464
659
|
setFiberRendering(null);
|
|
465
660
|
}, "finishUsingHooks");
|
|
466
|
-
var withHooks = /* @__PURE__ */ __name((wip,
|
|
661
|
+
var withHooks = /* @__PURE__ */ __name((wip, Component2) => {
|
|
467
662
|
const NewComponent = /* @__PURE__ */ __name((props) => {
|
|
468
663
|
prepareToUseHooks(wip);
|
|
469
|
-
const result =
|
|
664
|
+
const result = Component2(props);
|
|
470
665
|
finishUsingHooks();
|
|
471
666
|
return result;
|
|
472
667
|
}, "NewComponent");
|
|
@@ -481,23 +676,14 @@ function useState(initialState) {
|
|
|
481
676
|
}
|
|
482
677
|
const hookIndex = getHookIndex();
|
|
483
678
|
nextHookIndex();
|
|
484
|
-
let state = fiber
|
|
485
|
-
let prevHook = null;
|
|
486
|
-
for (let i = 0; i < hookIndex; i++) {
|
|
487
|
-
prevHook = state;
|
|
488
|
-
state = state?.next ?? null;
|
|
489
|
-
}
|
|
679
|
+
let { hook: state, prevHook } = getHookSlot(fiber, hookIndex);
|
|
490
680
|
if (!state) {
|
|
491
681
|
state = {
|
|
492
682
|
memoizedState: getInitialState(initialState),
|
|
493
683
|
queue: null,
|
|
494
684
|
next: null
|
|
495
685
|
};
|
|
496
|
-
|
|
497
|
-
prevHook.next = state;
|
|
498
|
-
} else {
|
|
499
|
-
fiber.memoizedState = state;
|
|
500
|
-
}
|
|
686
|
+
attachHook(fiber, state, prevHook);
|
|
501
687
|
}
|
|
502
688
|
let update = state.queue;
|
|
503
689
|
while (update) {
|
|
@@ -522,6 +708,42 @@ function useState(initialState) {
|
|
|
522
708
|
}
|
|
523
709
|
__name(useState, "useState");
|
|
524
710
|
var RectifyHookUseState_default = useState;
|
|
711
|
+
function useReducer(reducer, initialArg, init) {
|
|
712
|
+
const fiber = getFiberRendering();
|
|
713
|
+
if (!fiber) {
|
|
714
|
+
throw new Error("useReducer must be used within a function component.");
|
|
715
|
+
}
|
|
716
|
+
const hookIndex = getHookIndex();
|
|
717
|
+
nextHookIndex();
|
|
718
|
+
let { hook, prevHook } = getHookSlot(fiber, hookIndex);
|
|
719
|
+
if (!hook) {
|
|
720
|
+
const initialState = isFunction(init) ? init(initialArg) : initialArg;
|
|
721
|
+
hook = { memoizedState: initialState, queue: null, next: null };
|
|
722
|
+
attachHook(fiber, hook, prevHook);
|
|
723
|
+
}
|
|
724
|
+
let update = hook.queue;
|
|
725
|
+
while (update) {
|
|
726
|
+
hook.memoizedState = reducer(hook.memoizedState, update.action);
|
|
727
|
+
update = update.next;
|
|
728
|
+
}
|
|
729
|
+
hook.queue = null;
|
|
730
|
+
const dispatch = /* @__PURE__ */ __name((action) => {
|
|
731
|
+
const update2 = { action, next: null };
|
|
732
|
+
if (!hook.queue) {
|
|
733
|
+
hook.queue = update2;
|
|
734
|
+
} else {
|
|
735
|
+
let last = hook.queue;
|
|
736
|
+
while (last.next) {
|
|
737
|
+
last = last.next;
|
|
738
|
+
}
|
|
739
|
+
last.next = update2;
|
|
740
|
+
}
|
|
741
|
+
scheduleRerender(fiber);
|
|
742
|
+
}, "dispatch");
|
|
743
|
+
return [hook.memoizedState, dispatch];
|
|
744
|
+
}
|
|
745
|
+
__name(useReducer, "useReducer");
|
|
746
|
+
var RectifyHookUseReducer_default = useReducer;
|
|
525
747
|
|
|
526
748
|
// ../rectify-hook/src/RectifyHookDeps.ts
|
|
527
749
|
var depsChanged = /* @__PURE__ */ __name((prev, next) => {
|
|
@@ -632,20 +854,11 @@ function useRef(initialValue) {
|
|
|
632
854
|
}
|
|
633
855
|
const hookIndex = getHookIndex();
|
|
634
856
|
nextHookIndex();
|
|
635
|
-
|
|
636
|
-
let prevHook = null;
|
|
637
|
-
for (let i = 0; i < hookIndex; i++) {
|
|
638
|
-
prevHook = hook;
|
|
639
|
-
hook = hook?.next ?? null;
|
|
640
|
-
}
|
|
857
|
+
const { hook, prevHook } = getHookSlot(fiber, hookIndex);
|
|
641
858
|
if (!hook) {
|
|
642
859
|
const ref = { current: initialValue };
|
|
643
860
|
const newHook = { memoizedState: ref, queue: null, next: null };
|
|
644
|
-
|
|
645
|
-
prevHook.next = newHook;
|
|
646
|
-
} else {
|
|
647
|
-
fiber.memoizedState = newHook;
|
|
648
|
-
}
|
|
861
|
+
attachHook(fiber, newHook, prevHook);
|
|
649
862
|
return ref;
|
|
650
863
|
}
|
|
651
864
|
return hook.memoizedState;
|
|
@@ -661,20 +874,10 @@ function useMemo(factory, deps) {
|
|
|
661
874
|
}
|
|
662
875
|
const hookIndex = getHookIndex();
|
|
663
876
|
nextHookIndex();
|
|
664
|
-
|
|
665
|
-
let prevHook = null;
|
|
666
|
-
for (let i = 0; i < hookIndex; i++) {
|
|
667
|
-
prevHook = hook;
|
|
668
|
-
hook = hook?.next ?? null;
|
|
669
|
-
}
|
|
877
|
+
const { hook, prevHook } = getHookSlot(fiber, hookIndex);
|
|
670
878
|
if (!hook) {
|
|
671
879
|
const state = { value: factory(), deps };
|
|
672
|
-
|
|
673
|
-
if (prevHook) {
|
|
674
|
-
prevHook.next = newHook;
|
|
675
|
-
} else {
|
|
676
|
-
fiber.memoizedState = newHook;
|
|
677
|
-
}
|
|
880
|
+
attachHook(fiber, { memoizedState: state, queue: null, next: null }, prevHook);
|
|
678
881
|
return state.value;
|
|
679
882
|
}
|
|
680
883
|
const prev = hook.memoizedState;
|
|
@@ -761,6 +964,30 @@ function clearContextSubscriptions(fiber) {
|
|
|
761
964
|
}
|
|
762
965
|
__name(clearContextSubscriptions, "clearContextSubscriptions");
|
|
763
966
|
|
|
967
|
+
// ../rectify-hook/src/RectifyHookUseId.ts
|
|
968
|
+
var _idCounter = 0;
|
|
969
|
+
var generateId = /* @__PURE__ */ __name(() => `_r${(_idCounter++).toString(36)}_`, "generateId");
|
|
970
|
+
var useId = /* @__PURE__ */ __name(() => {
|
|
971
|
+
const fiber = getFiberRendering();
|
|
972
|
+
if (!fiber) {
|
|
973
|
+
throw new Error("useId must be used within a function component.");
|
|
974
|
+
}
|
|
975
|
+
const hookIndex = getHookIndex();
|
|
976
|
+
nextHookIndex();
|
|
977
|
+
const { hook, prevHook } = getHookSlot(fiber, hookIndex);
|
|
978
|
+
if (!hook) {
|
|
979
|
+
const newHook = {
|
|
980
|
+
memoizedState: generateId(),
|
|
981
|
+
queue: null,
|
|
982
|
+
next: null
|
|
983
|
+
};
|
|
984
|
+
attachHook(fiber, newHook, prevHook);
|
|
985
|
+
return newHook.memoizedState;
|
|
986
|
+
}
|
|
987
|
+
return hook.memoizedState;
|
|
988
|
+
}, "useId");
|
|
989
|
+
var RectifyHookUseId_default = useId;
|
|
990
|
+
|
|
764
991
|
// ../rectify-reconciler/src/RectifyFiberRenderPriority.ts
|
|
765
992
|
var currentEventPriority = DefaultLane;
|
|
766
993
|
var setCurrentEventPriority = /* @__PURE__ */ __name((lane) => {
|
|
@@ -775,156 +1002,228 @@ var setCurrentRenderingLanes = /* @__PURE__ */ __name((lanes) => {
|
|
|
775
1002
|
currentRenderingLanes = lanes;
|
|
776
1003
|
}, "setCurrentRenderingLanes");
|
|
777
1004
|
var getCurrentLanePriority = /* @__PURE__ */ __name(() => currentRenderingLanes, "getCurrentLanePriority");
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
var shouldYield = /* @__PURE__ */ __name(() => performance.now() - frameStart > FRAME_BUDGET_MS, "shouldYield");
|
|
783
|
-
var doWork = null;
|
|
784
|
-
var setWorkCallback = /* @__PURE__ */ __name((cb) => {
|
|
785
|
-
doWork = cb;
|
|
786
|
-
}, "setWorkCallback");
|
|
787
|
-
var resumeCursor = null;
|
|
788
|
-
var setResumeCursor = /* @__PURE__ */ __name((fiber) => {
|
|
789
|
-
resumeCursor = fiber;
|
|
790
|
-
}, "setResumeCursor");
|
|
791
|
-
var getResumeCursor = /* @__PURE__ */ __name(() => resumeCursor, "getResumeCursor");
|
|
792
|
-
var clearResumeCursor = /* @__PURE__ */ __name(() => {
|
|
793
|
-
resumeCursor = null;
|
|
794
|
-
}, "clearResumeCursor");
|
|
795
|
-
var pendingLanes = NoLanes;
|
|
796
|
-
var scheduleRenderLane = /* @__PURE__ */ __name((lane) => {
|
|
797
|
-
pendingLanes |= lane;
|
|
798
|
-
if (lane & (SyncLane | InputLane)) {
|
|
799
|
-
scheduleMicrotask();
|
|
800
|
-
} else if (lane & DefaultLane) {
|
|
801
|
-
scheduleMessageTask();
|
|
802
|
-
} else if (lane & TransitionLane) {
|
|
803
|
-
scheduleTimeout();
|
|
804
|
-
} else if (lane & IdleLane) {
|
|
805
|
-
scheduleIdle();
|
|
806
|
-
}
|
|
807
|
-
}, "scheduleRenderLane");
|
|
808
|
-
var flush = /* @__PURE__ */ __name((mask) => {
|
|
809
|
-
const lanes = pendingLanes & mask;
|
|
810
|
-
if (!lanes) return;
|
|
811
|
-
pendingLanes &= ~lanes;
|
|
812
|
-
frameStart = performance.now();
|
|
813
|
-
doWork?.(lanes);
|
|
814
|
-
}, "flush");
|
|
815
|
-
var MICROTASK_MASK = SyncLane | InputLane;
|
|
816
|
-
var microtaskScheduled = false;
|
|
817
|
-
var scheduleMicrotask = /* @__PURE__ */ __name(() => {
|
|
818
|
-
if (microtaskScheduled) return;
|
|
819
|
-
microtaskScheduled = true;
|
|
820
|
-
queueMicrotask(() => {
|
|
821
|
-
microtaskScheduled = false;
|
|
822
|
-
flush(MICROTASK_MASK);
|
|
823
|
-
});
|
|
824
|
-
}, "scheduleMicrotask");
|
|
825
|
-
var DEFAULT_MASK = DefaultLane;
|
|
826
|
-
var mc = new MessageChannel();
|
|
827
|
-
var mcScheduled = false;
|
|
828
|
-
mc.port1.onmessage = () => {
|
|
829
|
-
mcScheduled = false;
|
|
830
|
-
flush(DEFAULT_MASK);
|
|
831
|
-
};
|
|
832
|
-
var scheduleMessageTask = /* @__PURE__ */ __name(() => {
|
|
833
|
-
if (mcScheduled) return;
|
|
834
|
-
mcScheduled = true;
|
|
835
|
-
mc.port2.postMessage(null);
|
|
836
|
-
}, "scheduleMessageTask");
|
|
837
|
-
var TRANSITION_MASK = TransitionLane;
|
|
838
|
-
var timeoutHandle = null;
|
|
839
|
-
var scheduleTimeout = /* @__PURE__ */ __name(() => {
|
|
840
|
-
if (timeoutHandle !== null) return;
|
|
841
|
-
timeoutHandle = setTimeout(() => {
|
|
842
|
-
timeoutHandle = null;
|
|
843
|
-
flush(TRANSITION_MASK);
|
|
844
|
-
}, 0);
|
|
845
|
-
}, "scheduleTimeout");
|
|
846
|
-
var IDLE_MASK = IdleLane;
|
|
847
|
-
var idleHandle = null;
|
|
848
|
-
var scheduleIdle = /* @__PURE__ */ __name(() => {
|
|
849
|
-
if (idleHandle !== null) return;
|
|
850
|
-
const run = /* @__PURE__ */ __name(() => {
|
|
851
|
-
idleHandle = null;
|
|
852
|
-
flush(IDLE_MASK);
|
|
853
|
-
}, "run");
|
|
854
|
-
if (typeof requestIdleCallback !== "undefined") {
|
|
855
|
-
idleHandle = requestIdleCallback(run, { timeout: 300 });
|
|
856
|
-
} else {
|
|
857
|
-
idleHandle = setTimeout(run, 300);
|
|
858
|
-
}
|
|
859
|
-
}, "scheduleIdle");
|
|
860
|
-
|
|
861
|
-
// ../rectify-reconciler/src/RectifyFiberWorkLoop.ts
|
|
862
|
-
var swapCurrentForWip = /* @__PURE__ */ __name((current, wip) => {
|
|
863
|
-
const parent = wip.return;
|
|
864
|
-
if (!parent) return;
|
|
865
|
-
if (parent.child === current) {
|
|
866
|
-
parent.child = wip;
|
|
867
|
-
return;
|
|
868
|
-
}
|
|
869
|
-
let prevSibling = parent.child;
|
|
870
|
-
while (prevSibling && prevSibling.sibling !== current) {
|
|
871
|
-
prevSibling = prevSibling.sibling;
|
|
1005
|
+
var reuseOrCreate = /* @__PURE__ */ __name((oldFiber, element, wip) => {
|
|
1006
|
+
const newFiber = createWorkInProgress(oldFiber, element.props);
|
|
1007
|
+
if (hasPropsChanged(oldFiber.memoizedProps, element.props)) {
|
|
1008
|
+
addFlagToFiber(newFiber, UpdateFlag);
|
|
872
1009
|
}
|
|
873
|
-
if (
|
|
874
|
-
|
|
875
|
-
var workLoop = /* @__PURE__ */ __name((wipRoot) => {
|
|
876
|
-
let workInProgress = wipRoot;
|
|
877
|
-
while (workInProgress) {
|
|
878
|
-
const next = beginWork(workInProgress);
|
|
879
|
-
if (next) {
|
|
880
|
-
workInProgress = next;
|
|
881
|
-
} else {
|
|
882
|
-
workInProgress = completeUnitOfWork(workInProgress, wipRoot);
|
|
883
|
-
}
|
|
1010
|
+
if ((oldFiber.memoizedProps?.ref ?? null) !== (element.props?.ref ?? null)) {
|
|
1011
|
+
addFlagToFiber(newFiber, RefFlag);
|
|
884
1012
|
}
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
1013
|
+
newFiber.return = wip;
|
|
1014
|
+
return newFiber;
|
|
1015
|
+
}, "reuseOrCreate");
|
|
1016
|
+
var createAndPlace = /* @__PURE__ */ __name((element, wip) => {
|
|
1017
|
+
const newFiber = createFiberFromRectifyElement(element);
|
|
1018
|
+
newFiber.type = element.type;
|
|
1019
|
+
addFlagToFiber(newFiber, PlacementFlag);
|
|
1020
|
+
newFiber.return = wip;
|
|
1021
|
+
return newFiber;
|
|
1022
|
+
}, "createAndPlace");
|
|
1023
|
+
var appendFiber = /* @__PURE__ */ __name((fiber, prev, index, wip) => {
|
|
1024
|
+
fiber.index = index;
|
|
1025
|
+
if (!prev) wip.child = fiber;
|
|
1026
|
+
else prev.sibling = fiber;
|
|
1027
|
+
return fiber;
|
|
1028
|
+
}, "appendFiber");
|
|
1029
|
+
var buildOldFiberStructures = /* @__PURE__ */ __name((firstRemaining) => {
|
|
1030
|
+
const keyedMap = /* @__PURE__ */ new Map();
|
|
1031
|
+
const unkeyedByType = /* @__PURE__ */ new Map();
|
|
1032
|
+
let fiber = firstRemaining;
|
|
1033
|
+
while (fiber) {
|
|
1034
|
+
if (fiber.key !== null && fiber.key !== void 0) {
|
|
1035
|
+
keyedMap.set(fiber.key, fiber);
|
|
893
1036
|
} else {
|
|
894
|
-
|
|
1037
|
+
const pool = unkeyedByType.get(fiber.type);
|
|
1038
|
+
if (pool) pool.push(fiber);
|
|
1039
|
+
else unkeyedByType.set(fiber.type, [fiber]);
|
|
895
1040
|
}
|
|
1041
|
+
fiber = fiber.sibling;
|
|
896
1042
|
}
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
1043
|
+
return { keyedMap, unkeyedByType };
|
|
1044
|
+
}, "buildOldFiberStructures");
|
|
1045
|
+
var reconcileSequential = /* @__PURE__ */ __name((state, firstOldFiber) => {
|
|
1046
|
+
let oldFiber = firstOldFiber;
|
|
1047
|
+
for (let i = 0; i < state.newElements.length; i++) {
|
|
1048
|
+
const element = state.newElements[i];
|
|
1049
|
+
const { key: elementKey = null, type: elementType } = element;
|
|
1050
|
+
if (!oldFiber) return { stoppedAt: i, oldFiber: null };
|
|
1051
|
+
if (oldFiber.key !== elementKey) return { stoppedAt: i, oldFiber };
|
|
1052
|
+
if (oldFiber.type === elementType) {
|
|
1053
|
+
state.prev = appendFiber(
|
|
1054
|
+
reuseOrCreate(oldFiber, element, state.wip),
|
|
1055
|
+
state.prev,
|
|
1056
|
+
state.index++,
|
|
1057
|
+
state.wip
|
|
1058
|
+
);
|
|
1059
|
+
} else if (elementKey !== null) {
|
|
1060
|
+
addFlagToFiber(oldFiber, DeletionFlag);
|
|
1061
|
+
state.deletions.push(oldFiber);
|
|
1062
|
+
state.prev = appendFiber(
|
|
1063
|
+
createAndPlace(element, state.wip),
|
|
1064
|
+
state.prev,
|
|
1065
|
+
state.index++,
|
|
1066
|
+
state.wip
|
|
1067
|
+
);
|
|
1068
|
+
} else {
|
|
1069
|
+
return { stoppedAt: i, oldFiber };
|
|
1070
|
+
}
|
|
1071
|
+
oldFiber = oldFiber.sibling;
|
|
900
1072
|
}
|
|
901
|
-
return
|
|
902
|
-
}, "
|
|
903
|
-
var
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
const
|
|
908
|
-
|
|
909
|
-
|
|
910
|
-
|
|
911
|
-
|
|
1073
|
+
return { stoppedAt: state.newElements.length, oldFiber };
|
|
1074
|
+
}, "reconcileSequential");
|
|
1075
|
+
var reconcileKeyed = /* @__PURE__ */ __name((state, startAt, remainingOldFiber) => {
|
|
1076
|
+
const { keyedMap, unkeyedByType } = buildOldFiberStructures(remainingOldFiber);
|
|
1077
|
+
let lastPlacedIndex = 0;
|
|
1078
|
+
for (let i = startAt; i < state.newElements.length; i++) {
|
|
1079
|
+
const element = state.newElements[i];
|
|
1080
|
+
const { key: elementKey = null, type: elementType } = element;
|
|
1081
|
+
let matched = null;
|
|
1082
|
+
if (elementKey !== null) {
|
|
1083
|
+
const candidate = keyedMap.get(elementKey) ?? null;
|
|
1084
|
+
if (candidate && candidate.type === elementType) {
|
|
1085
|
+
keyedMap.delete(elementKey);
|
|
1086
|
+
matched = candidate;
|
|
1087
|
+
}
|
|
912
1088
|
} else {
|
|
913
|
-
|
|
1089
|
+
const pool = unkeyedByType.get(elementType);
|
|
1090
|
+
if (pool?.length) matched = pool.shift();
|
|
1091
|
+
}
|
|
1092
|
+
if (matched) {
|
|
1093
|
+
const newFiber = reuseOrCreate(matched, element, state.wip);
|
|
1094
|
+
if (matched.index < lastPlacedIndex) {
|
|
1095
|
+
addFlagToFiber(newFiber, MoveFlag);
|
|
1096
|
+
} else {
|
|
1097
|
+
lastPlacedIndex = matched.index;
|
|
1098
|
+
}
|
|
1099
|
+
state.prev = appendFiber(newFiber, state.prev, state.index++, state.wip);
|
|
1100
|
+
} else {
|
|
1101
|
+
state.prev = appendFiber(
|
|
1102
|
+
createAndPlace(element, state.wip),
|
|
1103
|
+
state.prev,
|
|
1104
|
+
state.index++,
|
|
1105
|
+
state.wip
|
|
1106
|
+
);
|
|
914
1107
|
}
|
|
915
|
-
if (completed) bubbleFlagsToRoot(wip);
|
|
916
|
-
return completed;
|
|
917
1108
|
}
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
1109
|
+
for (const orphan of keyedMap.values()) {
|
|
1110
|
+
addFlagToFiber(orphan, DeletionFlag);
|
|
1111
|
+
state.deletions.push(orphan);
|
|
1112
|
+
}
|
|
1113
|
+
for (const pool of unkeyedByType.values()) {
|
|
1114
|
+
for (const orphan of pool) {
|
|
1115
|
+
addFlagToFiber(orphan, DeletionFlag);
|
|
1116
|
+
state.deletions.push(orphan);
|
|
924
1117
|
}
|
|
925
1118
|
}
|
|
926
|
-
|
|
927
|
-
|
|
1119
|
+
}, "reconcileKeyed");
|
|
1120
|
+
var toChildArray = /* @__PURE__ */ __name((children) => {
|
|
1121
|
+
if (children == null || typeof children === "boolean") return [];
|
|
1122
|
+
if (isArray(children)) return children;
|
|
1123
|
+
return [children];
|
|
1124
|
+
}, "toChildArray");
|
|
1125
|
+
var reconcileChildren = /* @__PURE__ */ __name((wip, children) => {
|
|
1126
|
+
const newElements = toChildArray(children).map(createElementFromRectifyNode).filter(isValidRectifyElement);
|
|
1127
|
+
const state = {
|
|
1128
|
+
wip,
|
|
1129
|
+
newElements,
|
|
1130
|
+
deletions: [],
|
|
1131
|
+
prev: null,
|
|
1132
|
+
index: 0
|
|
1133
|
+
};
|
|
1134
|
+
const firstOldFiber = wip.alternate?.child ?? null;
|
|
1135
|
+
const { stoppedAt, oldFiber } = reconcileSequential(state, firstOldFiber);
|
|
1136
|
+
if (stoppedAt < newElements.length) {
|
|
1137
|
+
reconcileKeyed(state, stoppedAt, oldFiber);
|
|
1138
|
+
} else {
|
|
1139
|
+
let leftover = oldFiber;
|
|
1140
|
+
while (leftover) {
|
|
1141
|
+
addFlagToFiber(leftover, DeletionFlag);
|
|
1142
|
+
state.deletions.push(leftover);
|
|
1143
|
+
leftover = leftover.sibling;
|
|
1144
|
+
}
|
|
1145
|
+
}
|
|
1146
|
+
if (state.prev) state.prev.sibling = null;
|
|
1147
|
+
if (state.deletions.length) wip.deletions = state.deletions;
|
|
1148
|
+
}, "reconcileChildren");
|
|
1149
|
+
|
|
1150
|
+
// ../rectify-reconciler/src/RectifyFiberConcurrentUpdate.ts
|
|
1151
|
+
var instance3 = {
|
|
1152
|
+
head: null,
|
|
1153
|
+
tail: null
|
|
1154
|
+
};
|
|
1155
|
+
var enqueueUpdate = /* @__PURE__ */ __name((update) => {
|
|
1156
|
+
update.next = null;
|
|
1157
|
+
if (instance3.tail === null) {
|
|
1158
|
+
instance3.head = update;
|
|
1159
|
+
instance3.tail = update;
|
|
1160
|
+
return;
|
|
1161
|
+
}
|
|
1162
|
+
instance3.tail.next = update;
|
|
1163
|
+
instance3.tail = update;
|
|
1164
|
+
}, "enqueueUpdate");
|
|
1165
|
+
var dequeueUpdate = /* @__PURE__ */ __name(() => {
|
|
1166
|
+
const first = instance3.head;
|
|
1167
|
+
if (first === null) {
|
|
1168
|
+
return null;
|
|
1169
|
+
}
|
|
1170
|
+
instance3.head = first.next;
|
|
1171
|
+
if (instance3.head === null) {
|
|
1172
|
+
instance3.tail = null;
|
|
1173
|
+
}
|
|
1174
|
+
first.next = null;
|
|
1175
|
+
return first;
|
|
1176
|
+
}, "dequeueUpdate");
|
|
1177
|
+
var hasUpdate = /* @__PURE__ */ __name(() => instance3.head !== null, "hasUpdate");
|
|
1178
|
+
|
|
1179
|
+
// ../rectify-reconciler/src/RectifyFiberSuspense.ts
|
|
1180
|
+
var suspendedBoundaries = /* @__PURE__ */ new WeakSet();
|
|
1181
|
+
var stableFiber = /* @__PURE__ */ __name((fiber) => fiber.alternate ?? fiber, "stableFiber");
|
|
1182
|
+
var isSuspendedBoundary = /* @__PURE__ */ __name((fiber) => suspendedBoundaries.has(stableFiber(fiber)), "isSuspendedBoundary");
|
|
1183
|
+
var findNearestSuspenseBoundary = /* @__PURE__ */ __name((fiber) => {
|
|
1184
|
+
let current = fiber.return;
|
|
1185
|
+
while (current) {
|
|
1186
|
+
if (current.workTag === SuspenseComponent) return current;
|
|
1187
|
+
current = current.return;
|
|
1188
|
+
}
|
|
1189
|
+
return null;
|
|
1190
|
+
}, "findNearestSuspenseBoundary");
|
|
1191
|
+
var handleSuspendedWork = /* @__PURE__ */ __name((boundary, thenable) => {
|
|
1192
|
+
const stable = stableFiber(boundary);
|
|
1193
|
+
if (suspendedBoundaries.has(stable)) return;
|
|
1194
|
+
suspendedBoundaries.add(stable);
|
|
1195
|
+
boundary.child = null;
|
|
1196
|
+
boundary.deletions = null;
|
|
1197
|
+
thenable.then(
|
|
1198
|
+
() => {
|
|
1199
|
+
suspendedBoundaries.delete(stable);
|
|
1200
|
+
enqueueUpdate({ lanes: DefaultLane, fiber: stable, next: null });
|
|
1201
|
+
scheduleRenderLane(DefaultLane);
|
|
1202
|
+
},
|
|
1203
|
+
() => {
|
|
1204
|
+
suspendedBoundaries.delete(stable);
|
|
1205
|
+
}
|
|
1206
|
+
);
|
|
1207
|
+
}, "handleSuspendedWork");
|
|
1208
|
+
var isThenable = /* @__PURE__ */ __name((value) => value !== null && typeof value === "object" && typeof value.then === "function", "isThenable");
|
|
1209
|
+
|
|
1210
|
+
// ../rectify-reconciler/src/RectifyFiberBeginWork.ts
|
|
1211
|
+
var hasNoPendingWork = /* @__PURE__ */ __name((wip) => !(wip.lanes & getCurrentLanePriority()), "hasNoPendingWork");
|
|
1212
|
+
var isUpdate = /* @__PURE__ */ __name((wip) => wip.alternate !== null, "isUpdate");
|
|
1213
|
+
var flushStateQueue = /* @__PURE__ */ __name((currentState, props, queue) => {
|
|
1214
|
+
let state = currentState;
|
|
1215
|
+
for (const update of queue) {
|
|
1216
|
+
const partial = typeof update === "function" ? update(state, props) : update;
|
|
1217
|
+
state = { ...state, ...partial };
|
|
1218
|
+
}
|
|
1219
|
+
return state;
|
|
1220
|
+
}, "flushStateQueue");
|
|
1221
|
+
var renderFunctionComponent = /* @__PURE__ */ __name((wip, Component2) => {
|
|
1222
|
+
const ComponentWithHooks = withHooks(wip, Component2);
|
|
1223
|
+
const children = ComponentWithHooks(wip.pendingProps);
|
|
1224
|
+
reconcileChildren(wip, children);
|
|
1225
|
+
}, "renderFunctionComponent");
|
|
1226
|
+
var getProviderContext = /* @__PURE__ */ __name((wip) => wip.type._context, "getProviderContext");
|
|
928
1227
|
var cloneChildFibers = /* @__PURE__ */ __name((wip) => {
|
|
929
1228
|
const currentChild = wip.alternate?.child ?? null;
|
|
930
1229
|
if (!currentChild) {
|
|
@@ -947,14 +1246,6 @@ var cloneChildFibers = /* @__PURE__ */ __name((wip) => {
|
|
|
947
1246
|
if (prevNewChild) prevNewChild.sibling = null;
|
|
948
1247
|
return wip.child;
|
|
949
1248
|
}, "cloneChildFibers");
|
|
950
|
-
var hasNoPendingWork = /* @__PURE__ */ __name((wip) => !(wip.lanes & getCurrentLanePriority()), "hasNoPendingWork");
|
|
951
|
-
var isUpdate = /* @__PURE__ */ __name((wip) => wip.alternate !== null, "isUpdate");
|
|
952
|
-
var renderFunctionComponent = /* @__PURE__ */ __name((wip, Component) => {
|
|
953
|
-
const ComponentWithHooks = withHooks(wip, Component);
|
|
954
|
-
const children = ComponentWithHooks(wip.pendingProps);
|
|
955
|
-
reconcileChildren(wip, children);
|
|
956
|
-
}, "renderFunctionComponent");
|
|
957
|
-
var getProviderContext = /* @__PURE__ */ __name((wip) => wip.type._context, "getProviderContext");
|
|
958
1249
|
var beginWork = /* @__PURE__ */ __name((wip) => {
|
|
959
1250
|
switch (wip.workTag) {
|
|
960
1251
|
case MemoComponent: {
|
|
@@ -969,12 +1260,12 @@ var beginWork = /* @__PURE__ */ __name((wip) => {
|
|
|
969
1260
|
break;
|
|
970
1261
|
}
|
|
971
1262
|
case FunctionComponent: {
|
|
972
|
-
const
|
|
973
|
-
if (!isFunction(
|
|
1263
|
+
const Component2 = wip.type;
|
|
1264
|
+
if (!isFunction(Component2)) break;
|
|
974
1265
|
if (isUpdate(wip) && hasNoPendingWork(wip) && shallowEqual(wip.memoizedProps, wip.pendingProps)) {
|
|
975
1266
|
return cloneChildFibers(wip);
|
|
976
1267
|
}
|
|
977
|
-
renderFunctionComponent(wip,
|
|
1268
|
+
renderFunctionComponent(wip, Component2);
|
|
978
1269
|
break;
|
|
979
1270
|
}
|
|
980
1271
|
case FragmentComponent:
|
|
@@ -997,33 +1288,80 @@ var beginWork = /* @__PURE__ */ __name((wip) => {
|
|
|
997
1288
|
}
|
|
998
1289
|
break;
|
|
999
1290
|
}
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
let completed = unit;
|
|
1005
|
-
while (completed) {
|
|
1006
|
-
bubbleProperties(completed);
|
|
1007
|
-
if (completed === stopAt) {
|
|
1008
|
-
return null;
|
|
1291
|
+
case SuspenseComponent: {
|
|
1292
|
+
const children = isSuspendedBoundary(wip) ? wip.pendingProps?.fallback : wip.pendingProps?.children;
|
|
1293
|
+
reconcileChildren(wip, children);
|
|
1294
|
+
break;
|
|
1009
1295
|
}
|
|
1010
|
-
|
|
1011
|
-
|
|
1296
|
+
case ClassComponent: {
|
|
1297
|
+
const Ctor = wip.type;
|
|
1298
|
+
const isMount = !wip.classInstance;
|
|
1299
|
+
if (isMount) {
|
|
1300
|
+
const instance4 = new Ctor(wip.pendingProps);
|
|
1301
|
+
instance4._fiber = wip;
|
|
1302
|
+
wip.classInstance = instance4;
|
|
1303
|
+
if (instance4._pendingStateQueue?.length) {
|
|
1304
|
+
instance4.state = flushStateQueue(
|
|
1305
|
+
instance4.state,
|
|
1306
|
+
instance4.props,
|
|
1307
|
+
instance4._pendingStateQueue
|
|
1308
|
+
);
|
|
1309
|
+
instance4._pendingStateQueue = [];
|
|
1310
|
+
}
|
|
1311
|
+
} else {
|
|
1312
|
+
const instance4 = wip.classInstance;
|
|
1313
|
+
if (hasNoPendingWork(wip) && !instance4._pendingStateQueue?.length && shallowEqual(instance4.props, wip.pendingProps)) {
|
|
1314
|
+
return cloneChildFibers(wip);
|
|
1315
|
+
}
|
|
1316
|
+
instance4._prevProps = instance4.props;
|
|
1317
|
+
instance4._prevState = { ...instance4.state };
|
|
1318
|
+
if (instance4._pendingStateQueue?.length) {
|
|
1319
|
+
instance4.state = flushStateQueue(
|
|
1320
|
+
instance4.state,
|
|
1321
|
+
wip.pendingProps,
|
|
1322
|
+
instance4._pendingStateQueue
|
|
1323
|
+
);
|
|
1324
|
+
instance4._pendingStateQueue = [];
|
|
1325
|
+
}
|
|
1326
|
+
instance4.props = wip.pendingProps;
|
|
1327
|
+
instance4._fiber = wip;
|
|
1328
|
+
if (isUpdate(wip) && typeof instance4.shouldComponentUpdate === "function" && !instance4.shouldComponentUpdate(wip.pendingProps, instance4.state)) {
|
|
1329
|
+
return cloneChildFibers(wip);
|
|
1330
|
+
}
|
|
1331
|
+
}
|
|
1332
|
+
const children = wip.classInstance.render();
|
|
1333
|
+
reconcileChildren(wip, children);
|
|
1334
|
+
break;
|
|
1335
|
+
}
|
|
1336
|
+
case LazyComponent: {
|
|
1337
|
+
const lazy2 = wip.type;
|
|
1338
|
+
if (lazy2._status === "resolved") {
|
|
1339
|
+
renderFunctionComponent(wip, lazy2._result);
|
|
1340
|
+
break;
|
|
1341
|
+
}
|
|
1342
|
+
if (lazy2._status === "rejected") {
|
|
1343
|
+
throw lazy2._result;
|
|
1344
|
+
}
|
|
1345
|
+
if (lazy2._status === "uninitialized") {
|
|
1346
|
+
lazy2._status = "pending";
|
|
1347
|
+
lazy2._promise = lazy2._factory().then(
|
|
1348
|
+
(module) => {
|
|
1349
|
+
lazy2._status = "resolved";
|
|
1350
|
+
lazy2._result = module?.default ?? module;
|
|
1351
|
+
},
|
|
1352
|
+
(error) => {
|
|
1353
|
+
lazy2._status = "rejected";
|
|
1354
|
+
lazy2._result = error;
|
|
1355
|
+
}
|
|
1356
|
+
);
|
|
1357
|
+
}
|
|
1358
|
+
throw lazy2._promise;
|
|
1012
1359
|
}
|
|
1013
|
-
completed = completed.return;
|
|
1014
|
-
}
|
|
1015
|
-
return null;
|
|
1016
|
-
}, "completeUnitOfWork");
|
|
1017
|
-
var bubbleFlagsToRoot = /* @__PURE__ */ __name((wip) => {
|
|
1018
|
-
let current = wip;
|
|
1019
|
-
let parent = current.return;
|
|
1020
|
-
while (parent) {
|
|
1021
|
-
parent.subtreeFlags |= current.flags | current.subtreeFlags;
|
|
1022
|
-
parent.childLanes |= current.lanes | current.childLanes;
|
|
1023
|
-
current = parent;
|
|
1024
|
-
parent = parent.return;
|
|
1025
1360
|
}
|
|
1026
|
-
|
|
1361
|
+
return wip.child;
|
|
1362
|
+
}, "beginWork");
|
|
1363
|
+
|
|
1364
|
+
// ../rectify-reconciler/src/RectifyFiberCompleteWork.ts
|
|
1027
1365
|
var bubbleProperties = /* @__PURE__ */ __name((wip) => {
|
|
1028
1366
|
wip.lanes &= ~getCurrentLanePriority();
|
|
1029
1367
|
let subtreeFlags = NoFlags;
|
|
@@ -1038,164 +1376,151 @@ var bubbleProperties = /* @__PURE__ */ __name((wip) => {
|
|
|
1038
1376
|
wip.subtreeFlags = subtreeFlags;
|
|
1039
1377
|
wip.childLanes = childLanes;
|
|
1040
1378
|
}, "bubbleProperties");
|
|
1041
|
-
var
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1379
|
+
var bubbleFlagsToRoot = /* @__PURE__ */ __name((wip) => {
|
|
1380
|
+
let current = wip;
|
|
1381
|
+
let parent = current.return;
|
|
1382
|
+
while (parent) {
|
|
1383
|
+
parent.subtreeFlags |= current.flags | current.subtreeFlags;
|
|
1384
|
+
parent.childLanes |= current.lanes | current.childLanes;
|
|
1385
|
+
current = parent;
|
|
1386
|
+
parent = parent.return;
|
|
1045
1387
|
}
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1050
|
-
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
return newFiber;
|
|
1055
|
-
}, "createAndPlace");
|
|
1056
|
-
var appendFiber = /* @__PURE__ */ __name((fiber, prev, index, wip) => {
|
|
1057
|
-
fiber.index = index;
|
|
1058
|
-
if (!prev) wip.child = fiber;
|
|
1059
|
-
else prev.sibling = fiber;
|
|
1060
|
-
return fiber;
|
|
1061
|
-
}, "appendFiber");
|
|
1062
|
-
var buildOldFiberMap = /* @__PURE__ */ __name((firstRemaining, startIndex) => {
|
|
1063
|
-
const map = /* @__PURE__ */ new Map();
|
|
1064
|
-
let fiber = firstRemaining;
|
|
1065
|
-
let i = startIndex;
|
|
1066
|
-
while (fiber) {
|
|
1067
|
-
map.set(fiber.key ?? i, fiber);
|
|
1068
|
-
fiber = fiber.sibling;
|
|
1069
|
-
i++;
|
|
1388
|
+
}, "bubbleFlagsToRoot");
|
|
1389
|
+
var completeUnitOfWork = /* @__PURE__ */ __name((unit, stopAt) => {
|
|
1390
|
+
let completed = unit;
|
|
1391
|
+
while (completed) {
|
|
1392
|
+
bubbleProperties(completed);
|
|
1393
|
+
if (completed === stopAt) return null;
|
|
1394
|
+
if (completed.sibling) return completed.sibling;
|
|
1395
|
+
completed = completed.return;
|
|
1070
1396
|
}
|
|
1071
|
-
return
|
|
1072
|
-
}, "
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
if (oldFiber.type === elementType) {
|
|
1082
|
-
state.prev = appendFiber(reuseOrCreate(oldFiber, element, state.wip), state.prev, state.index++, state.wip);
|
|
1083
|
-
} else {
|
|
1084
|
-
addFlagToFiber(oldFiber, DeletionFlag);
|
|
1085
|
-
state.deletions.push(oldFiber);
|
|
1086
|
-
state.prev = appendFiber(createAndPlace(element, state.wip), state.prev, state.index++, state.wip);
|
|
1087
|
-
}
|
|
1088
|
-
oldFiber = oldFiber.sibling;
|
|
1397
|
+
return null;
|
|
1398
|
+
}, "completeUnitOfWork");
|
|
1399
|
+
|
|
1400
|
+
// ../rectify-reconciler/src/RectifyFiberWorkLoop.ts
|
|
1401
|
+
var swapCurrentForWip = /* @__PURE__ */ __name((current, wip) => {
|
|
1402
|
+
const parent = wip.return;
|
|
1403
|
+
if (!parent) return;
|
|
1404
|
+
if (parent.child === current) {
|
|
1405
|
+
parent.child = wip;
|
|
1406
|
+
return;
|
|
1089
1407
|
}
|
|
1090
|
-
|
|
1091
|
-
|
|
1092
|
-
|
|
1093
|
-
const oldFiberMap = buildOldFiberMap(remainingOldFiber, startAt);
|
|
1094
|
-
let lastPlacedIndex = 0;
|
|
1095
|
-
for (let i = startAt; i < state.newElements.length; i++) {
|
|
1096
|
-
const element = state.newElements[i];
|
|
1097
|
-
const { key: elementKey = null, type: elementType } = element;
|
|
1098
|
-
const mapKey = elementKey ?? i;
|
|
1099
|
-
const matched = oldFiberMap.get(mapKey) ?? null;
|
|
1100
|
-
if (matched && matched.type === elementType) {
|
|
1101
|
-
oldFiberMap.delete(mapKey);
|
|
1102
|
-
const newFiber = reuseOrCreate(matched, element, state.wip);
|
|
1103
|
-
if (matched.index < lastPlacedIndex) {
|
|
1104
|
-
addFlagToFiber(newFiber, MoveFlag);
|
|
1105
|
-
} else {
|
|
1106
|
-
lastPlacedIndex = matched.index;
|
|
1107
|
-
}
|
|
1108
|
-
state.prev = appendFiber(newFiber, state.prev, state.index++, state.wip);
|
|
1109
|
-
} else {
|
|
1110
|
-
state.prev = appendFiber(createAndPlace(element, state.wip), state.prev, state.index++, state.wip);
|
|
1111
|
-
}
|
|
1408
|
+
let prevSibling = parent.child;
|
|
1409
|
+
while (prevSibling && prevSibling.sibling !== current) {
|
|
1410
|
+
prevSibling = prevSibling.sibling;
|
|
1112
1411
|
}
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1412
|
+
if (prevSibling) prevSibling.sibling = wip;
|
|
1413
|
+
}, "swapCurrentForWip");
|
|
1414
|
+
var workLoop = /* @__PURE__ */ __name((wipRoot) => {
|
|
1415
|
+
let workInProgress = wipRoot;
|
|
1416
|
+
while (workInProgress) {
|
|
1417
|
+
try {
|
|
1418
|
+
const next = beginWork(workInProgress);
|
|
1419
|
+
workInProgress = next ?? completeUnitOfWork(workInProgress, wipRoot);
|
|
1420
|
+
} catch (thrown) {
|
|
1421
|
+
if (isThenable(thrown) && workInProgress) {
|
|
1422
|
+
const boundary = findNearestSuspenseBoundary(workInProgress);
|
|
1423
|
+
if (boundary) {
|
|
1424
|
+
handleSuspendedWork(boundary, thrown);
|
|
1425
|
+
workInProgress = boundary;
|
|
1426
|
+
continue;
|
|
1427
|
+
}
|
|
1428
|
+
}
|
|
1429
|
+
throw thrown;
|
|
1430
|
+
}
|
|
1116
1431
|
}
|
|
1117
|
-
}, "
|
|
1118
|
-
var
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
1124
|
-
|
|
1125
|
-
|
|
1126
|
-
|
|
1127
|
-
|
|
1128
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
1133
|
-
|
|
1134
|
-
|
|
1135
|
-
leftover = leftover.sibling;
|
|
1432
|
+
}, "workLoop");
|
|
1433
|
+
var workLoopConcurrent = /* @__PURE__ */ __name((wipRoot) => {
|
|
1434
|
+
let workInProgress = getResumeCursor() ?? wipRoot;
|
|
1435
|
+
clearResumeCursor();
|
|
1436
|
+
while (workInProgress && !shouldYield()) {
|
|
1437
|
+
try {
|
|
1438
|
+
const next = beginWork(workInProgress);
|
|
1439
|
+
workInProgress = next ?? completeUnitOfWork(workInProgress, wipRoot);
|
|
1440
|
+
} catch (thrown) {
|
|
1441
|
+
if (isThenable(thrown) && workInProgress) {
|
|
1442
|
+
const boundary = findNearestSuspenseBoundary(workInProgress);
|
|
1443
|
+
if (boundary) {
|
|
1444
|
+
handleSuspendedWork(boundary, thrown);
|
|
1445
|
+
workInProgress = boundary;
|
|
1446
|
+
continue;
|
|
1447
|
+
}
|
|
1448
|
+
}
|
|
1449
|
+
throw thrown;
|
|
1136
1450
|
}
|
|
1137
1451
|
}
|
|
1138
|
-
if (
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
// ../rectify-reconciler/src/RectifyFiberCommitWork.ts
|
|
1143
|
-
var MutationMask = PlacementFlag | UpdateFlag | MoveFlag;
|
|
1144
|
-
var commitWork = /* @__PURE__ */ __name((finishedWork) => {
|
|
1145
|
-
if (finishedWork.deletions?.length) {
|
|
1146
|
-
finishedWork.deletions.forEach(removeHostTree);
|
|
1147
|
-
finishedWork.deletions = null;
|
|
1452
|
+
if (workInProgress !== null) {
|
|
1453
|
+
setResumeCursor(workInProgress);
|
|
1454
|
+
return false;
|
|
1148
1455
|
}
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1456
|
+
return true;
|
|
1457
|
+
}, "workLoopConcurrent");
|
|
1458
|
+
var workLoopOnFiberLanes = /* @__PURE__ */ __name((wipRoot, renderLanes) => {
|
|
1459
|
+
if (wipRoot.lanes & renderLanes) {
|
|
1460
|
+
const wip = createWorkInProgress(wipRoot, wipRoot.pendingProps);
|
|
1461
|
+
swapCurrentForWip(wipRoot, wip);
|
|
1462
|
+
const isSync = !!(renderLanes & (SyncLane | InputLane));
|
|
1463
|
+
const completed = isSync ? (workLoop(wip), true) : workLoopConcurrent(wip);
|
|
1464
|
+
if (completed) bubbleFlagsToRoot(wip);
|
|
1465
|
+
return completed;
|
|
1152
1466
|
}
|
|
1153
|
-
if (
|
|
1154
|
-
let child =
|
|
1467
|
+
if (wipRoot.childLanes & renderLanes) {
|
|
1468
|
+
let child = wipRoot.child;
|
|
1155
1469
|
while (child) {
|
|
1156
|
-
|
|
1470
|
+
if (!workLoopOnFiberLanes(child, renderLanes)) return false;
|
|
1157
1471
|
child = child.sibling;
|
|
1158
1472
|
}
|
|
1159
1473
|
}
|
|
1160
|
-
|
|
1161
|
-
|
|
1162
|
-
}, "commitWork");
|
|
1163
|
-
var syncMemoizedProps = /* @__PURE__ */ __name((wip) => {
|
|
1164
|
-
wip.memoizedProps = wip.pendingProps;
|
|
1165
|
-
}, "syncMemoizedProps");
|
|
1474
|
+
return true;
|
|
1475
|
+
}, "workLoopOnFiberLanes");
|
|
1166
1476
|
var attachRef = /* @__PURE__ */ __name((wip) => {
|
|
1167
1477
|
const ref = wip.pendingProps?.ref;
|
|
1168
|
-
if (ref
|
|
1478
|
+
if (!ref) return;
|
|
1479
|
+
if (isFunction(ref)) {
|
|
1480
|
+
const cleanup = ref(wip.stateNode);
|
|
1481
|
+
wip.refCleanup = isFunction(cleanup) ? cleanup : null;
|
|
1482
|
+
} else if (typeof ref === "object" && "current" in ref) {
|
|
1169
1483
|
ref.current = wip.stateNode;
|
|
1170
1484
|
}
|
|
1171
1485
|
}, "attachRef");
|
|
1172
1486
|
var detachRef = /* @__PURE__ */ __name((fiber) => {
|
|
1487
|
+
if (fiber.refCleanup) {
|
|
1488
|
+
fiber.refCleanup();
|
|
1489
|
+
fiber.refCleanup = null;
|
|
1490
|
+
return;
|
|
1491
|
+
}
|
|
1173
1492
|
const ref = fiber.memoizedProps?.ref;
|
|
1174
|
-
if (ref
|
|
1493
|
+
if (!ref) return;
|
|
1494
|
+
if (typeof ref === "function") {
|
|
1495
|
+
ref(null);
|
|
1496
|
+
} else if (typeof ref === "object" && "current" in ref) {
|
|
1175
1497
|
ref.current = null;
|
|
1176
1498
|
}
|
|
1177
1499
|
}, "detachRef");
|
|
1500
|
+
|
|
1501
|
+
// ../rectify-reconciler/src/RectifyFiberCommitPlacement.ts
|
|
1178
1502
|
var insertIntoParent = /* @__PURE__ */ __name((wip, node) => {
|
|
1179
1503
|
const parentDom = getParentDom(wip);
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1504
|
+
let cursor = wip;
|
|
1505
|
+
while (cursor) {
|
|
1506
|
+
const before = getHostSibling(cursor);
|
|
1507
|
+
if (before) {
|
|
1508
|
+
parentDom.insertBefore(node, before);
|
|
1509
|
+
return;
|
|
1510
|
+
}
|
|
1511
|
+
const parent = cursor.return;
|
|
1512
|
+
if (!parent || parent.workTag === HostComponent || parent.workTag === HostRoot) break;
|
|
1513
|
+
cursor = parent;
|
|
1514
|
+
}
|
|
1515
|
+
parentDom.appendChild(node);
|
|
1183
1516
|
}, "insertIntoParent");
|
|
1184
1517
|
var placeNode = /* @__PURE__ */ __name((wip, node) => {
|
|
1185
1518
|
insertIntoParent(wip, node);
|
|
1186
1519
|
precacheFiberNode(wip, node);
|
|
1187
1520
|
attachRef(wip);
|
|
1188
1521
|
}, "placeNode");
|
|
1189
|
-
|
|
1190
|
-
|
|
1191
|
-
case HostComponent:
|
|
1192
|
-
commitMutationHostComponent(childFiber);
|
|
1193
|
-
break;
|
|
1194
|
-
case HostText:
|
|
1195
|
-
commitMutationHostText(childFiber);
|
|
1196
|
-
break;
|
|
1197
|
-
}
|
|
1198
|
-
}, "commitMutation");
|
|
1522
|
+
|
|
1523
|
+
// ../rectify-reconciler/src/RectifyFiberCommitMutation.ts
|
|
1199
1524
|
var commitMutationHostComponent = /* @__PURE__ */ __name((wip) => {
|
|
1200
1525
|
if (!wip.stateNode) {
|
|
1201
1526
|
const node = createDomElementFromFiber(wip);
|
|
@@ -1215,9 +1540,13 @@ var commitMutationHostComponent = /* @__PURE__ */ __name((wip) => {
|
|
|
1215
1540
|
if (hasFlagOnFiber(wip, UpdateFlag)) {
|
|
1216
1541
|
applyPropsToDom(wip.stateNode, wip.memoizedProps, wip.pendingProps);
|
|
1217
1542
|
precacheFiberNode(wip, wip.stateNode);
|
|
1218
|
-
attachRef(wip);
|
|
1219
1543
|
removeFlagFromFiber(wip, UpdateFlag);
|
|
1220
1544
|
}
|
|
1545
|
+
if (hasFlagOnFiber(wip, RefFlag)) {
|
|
1546
|
+
detachRef(wip);
|
|
1547
|
+
attachRef(wip);
|
|
1548
|
+
removeFlagFromFiber(wip, RefFlag);
|
|
1549
|
+
}
|
|
1221
1550
|
}, "commitMutationHostComponent");
|
|
1222
1551
|
var commitMutationHostText = /* @__PURE__ */ __name((wip) => {
|
|
1223
1552
|
if (!wip.stateNode) {
|
|
@@ -1242,7 +1571,22 @@ var commitMutationHostText = /* @__PURE__ */ __name((wip) => {
|
|
|
1242
1571
|
removeFlagFromFiber(wip, UpdateFlag);
|
|
1243
1572
|
}
|
|
1244
1573
|
}, "commitMutationHostText");
|
|
1574
|
+
var commitMutation = /* @__PURE__ */ __name((fiber) => {
|
|
1575
|
+
switch (fiber.workTag) {
|
|
1576
|
+
case HostComponent:
|
|
1577
|
+
commitMutationHostComponent(fiber);
|
|
1578
|
+
break;
|
|
1579
|
+
case HostText:
|
|
1580
|
+
commitMutationHostText(fiber);
|
|
1581
|
+
break;
|
|
1582
|
+
}
|
|
1583
|
+
}, "commitMutation");
|
|
1584
|
+
|
|
1585
|
+
// ../rectify-reconciler/src/RectifyFiberCommitRemoval.ts
|
|
1245
1586
|
var removeHostTree = /* @__PURE__ */ __name((fiber) => {
|
|
1587
|
+
if (fiber.workTag === ClassComponent) {
|
|
1588
|
+
fiber.classInstance?.componentWillUnmount?.();
|
|
1589
|
+
}
|
|
1246
1590
|
if (fiber.memoizedState) {
|
|
1247
1591
|
runEffectCleanups(fiber);
|
|
1248
1592
|
}
|
|
@@ -1258,96 +1602,48 @@ var removeHostTree = /* @__PURE__ */ __name((fiber) => {
|
|
|
1258
1602
|
}
|
|
1259
1603
|
}, "removeHostTree");
|
|
1260
1604
|
|
|
1261
|
-
// ../rectify-reconciler/src/
|
|
1262
|
-
var
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
update.next = null;
|
|
1268
|
-
if (instance3.tail === null) {
|
|
1269
|
-
instance3.head = update;
|
|
1270
|
-
instance3.tail = update;
|
|
1271
|
-
return;
|
|
1272
|
-
}
|
|
1273
|
-
instance3.tail.next = update;
|
|
1274
|
-
instance3.tail = update;
|
|
1275
|
-
}, "enqueueUpdate");
|
|
1276
|
-
var dequeueUpdate = /* @__PURE__ */ __name(() => {
|
|
1277
|
-
const first = instance3.head;
|
|
1278
|
-
if (first === null) {
|
|
1279
|
-
return null;
|
|
1280
|
-
}
|
|
1281
|
-
instance3.head = first.next;
|
|
1282
|
-
if (instance3.head === null) {
|
|
1283
|
-
instance3.tail = null;
|
|
1605
|
+
// ../rectify-reconciler/src/RectifyFiberCommitWork.ts
|
|
1606
|
+
var MutationMask = PlacementFlag | UpdateFlag | MoveFlag | RefFlag;
|
|
1607
|
+
var commitWork = /* @__PURE__ */ __name((finishedWork) => {
|
|
1608
|
+
if (finishedWork.deletions?.length) {
|
|
1609
|
+
finishedWork.deletions.forEach(removeHostTree);
|
|
1610
|
+
finishedWork.deletions = null;
|
|
1284
1611
|
}
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
-
|
|
1288
|
-
var hasUpdate = /* @__PURE__ */ __name(() => instance3.head !== null, "hasUpdate");
|
|
1289
|
-
|
|
1290
|
-
// ../rectify-reconciler/src/RectifyFiberReconciler.ts
|
|
1291
|
-
injectEventPriorityCallbacks(
|
|
1292
|
-
setCurrentEventPriority,
|
|
1293
|
-
resetCurrentEventPriority
|
|
1294
|
-
);
|
|
1295
|
-
var isFlushingLayoutEffects = false;
|
|
1296
|
-
var performWork = /* @__PURE__ */ __name((lanes) => {
|
|
1297
|
-
const fiberRoot = getScheduledFiberRoot();
|
|
1298
|
-
if (!fiberRoot) return;
|
|
1299
|
-
if (!getResumeCursor()) flushPendingUpdates();
|
|
1300
|
-
setCurrentRenderingLanes(lanes);
|
|
1301
|
-
const completed = workLoopOnFiberLanes(fiberRoot.root, lanes);
|
|
1302
|
-
if (!completed) {
|
|
1303
|
-
scheduleRenderLane(lanes);
|
|
1304
|
-
return;
|
|
1612
|
+
if (finishedWork.flags & MutationMask) {
|
|
1613
|
+
commitMutation(finishedWork);
|
|
1614
|
+
finishedWork.memoizedProps = finishedWork.pendingProps;
|
|
1305
1615
|
}
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
}
|
|
1312
|
-
setWorkCallback(performWork);
|
|
1313
|
-
var onScheduleRerender = /* @__PURE__ */ __name((fiber) => {
|
|
1314
|
-
const lane = isFlushingLayoutEffects ? SyncLane : requestUpdateLane();
|
|
1315
|
-
enqueueUpdate({ lanes: lane, fiber, next: null });
|
|
1316
|
-
if (!isFlushingLayoutEffects) {
|
|
1317
|
-
scheduleRenderLane(lane);
|
|
1616
|
+
if (finishedWork.subtreeFlags & MutationMask) {
|
|
1617
|
+
let child = finishedWork.child;
|
|
1618
|
+
while (child) {
|
|
1619
|
+
commitWork(child);
|
|
1620
|
+
child = child.sibling;
|
|
1621
|
+
}
|
|
1318
1622
|
}
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
|
|
1623
|
+
if (finishedWork.workTag === ClassComponent && finishedWork.classInstance) {
|
|
1624
|
+
const instance4 = finishedWork.classInstance;
|
|
1625
|
+
const isMount = finishedWork.alternate === null;
|
|
1626
|
+
if (isMount) {
|
|
1627
|
+
instance4.componentDidMount?.();
|
|
1628
|
+
} else if (instance4._prevState !== void 0) {
|
|
1629
|
+
instance4.componentDidUpdate?.(
|
|
1630
|
+
instance4._prevProps,
|
|
1631
|
+
instance4._prevState
|
|
1632
|
+
);
|
|
1633
|
+
instance4._prevProps = void 0;
|
|
1634
|
+
instance4._prevState = void 0;
|
|
1635
|
+
}
|
|
1331
1636
|
}
|
|
1332
|
-
|
|
1333
|
-
|
|
1334
|
-
|
|
1335
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
var
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
setCurrentRenderingLanes(SyncLane);
|
|
1343
|
-
workLoop(wipRoot);
|
|
1344
|
-
commitWork(wipRoot);
|
|
1345
|
-
fiberRoot.root = wipRoot;
|
|
1346
|
-
markContainerAsRoot(wipRoot, fiberRoot.containerDom);
|
|
1347
|
-
setScheduledFiberRoot(fiberRoot);
|
|
1348
|
-
flushLayoutPhase(fiberRoot);
|
|
1349
|
-
schedulePassiveEffects();
|
|
1350
|
-
}, "updateContainer");
|
|
1637
|
+
finishedWork.flags = NoFlags;
|
|
1638
|
+
finishedWork.subtreeFlags = NoFlags;
|
|
1639
|
+
}, "commitWork");
|
|
1640
|
+
|
|
1641
|
+
// ../rectify-reconciler/src/RectifyFiberFlushPhase.ts
|
|
1642
|
+
var _isFlushingLayoutEffects = false;
|
|
1643
|
+
var getIsFlushingLayoutEffects = /* @__PURE__ */ __name(() => _isFlushingLayoutEffects, "getIsFlushingLayoutEffects");
|
|
1644
|
+
var setIsFlushingLayoutEffects = /* @__PURE__ */ __name((value) => {
|
|
1645
|
+
_isFlushingLayoutEffects = value;
|
|
1646
|
+
}, "setIsFlushingLayoutEffects");
|
|
1351
1647
|
var passiveChannel = new MessageChannel();
|
|
1352
1648
|
var schedulePassiveEffects = /* @__PURE__ */ __name(() => {
|
|
1353
1649
|
passiveChannel.port1.onmessage = () => {
|
|
@@ -1358,10 +1654,10 @@ var schedulePassiveEffects = /* @__PURE__ */ __name(() => {
|
|
|
1358
1654
|
}, "schedulePassiveEffects");
|
|
1359
1655
|
var flushLayoutPhase = /* @__PURE__ */ __name((fiberRoot) => {
|
|
1360
1656
|
while (true) {
|
|
1361
|
-
|
|
1657
|
+
setIsFlushingLayoutEffects(true);
|
|
1362
1658
|
flushLayoutEffectCleanups();
|
|
1363
1659
|
flushLayoutEffects();
|
|
1364
|
-
|
|
1660
|
+
setIsFlushingLayoutEffects(false);
|
|
1365
1661
|
if (!hasUpdate()) break;
|
|
1366
1662
|
flushPendingUpdates();
|
|
1367
1663
|
setCurrentRenderingLanes(SyncLane);
|
|
@@ -1392,6 +1688,71 @@ var propagateLaneToAncestors = /* @__PURE__ */ __name((updateQueue) => {
|
|
|
1392
1688
|
}
|
|
1393
1689
|
}, "propagateLaneToAncestors");
|
|
1394
1690
|
|
|
1691
|
+
// ../rectify-reconciler/src/RectifyFiberHookBridge.ts
|
|
1692
|
+
var onScheduleRerender = /* @__PURE__ */ __name((fiber) => {
|
|
1693
|
+
const lane = getIsFlushingLayoutEffects() ? SyncLane : requestUpdateLane();
|
|
1694
|
+
enqueueUpdate({ lanes: lane, fiber, next: null });
|
|
1695
|
+
if (!getIsFlushingLayoutEffects()) {
|
|
1696
|
+
scheduleRenderLane(lane);
|
|
1697
|
+
}
|
|
1698
|
+
}, "onScheduleRerender");
|
|
1699
|
+
var onMarkFiberDirty = /* @__PURE__ */ __name((fiber) => {
|
|
1700
|
+
const lane = getCurrentLanePriority();
|
|
1701
|
+
fiber.lanes |= lane;
|
|
1702
|
+
const wip = fiber.alternate;
|
|
1703
|
+
if (!wip) return;
|
|
1704
|
+
wip.lanes |= lane;
|
|
1705
|
+
let parent = wip.return;
|
|
1706
|
+
while (parent) {
|
|
1707
|
+
if ((parent.childLanes & lane) === lane) break;
|
|
1708
|
+
parent.childLanes |= lane;
|
|
1709
|
+
parent = parent.return;
|
|
1710
|
+
}
|
|
1711
|
+
}, "onMarkFiberDirty");
|
|
1712
|
+
setScheduleRerender(onScheduleRerender);
|
|
1713
|
+
setMarkFiberDirty(onMarkFiberDirty);
|
|
1714
|
+
|
|
1715
|
+
// ../rectify-reconciler/src/RectifyFiberBootstrap.ts
|
|
1716
|
+
injectEventPriorityCallbacks(
|
|
1717
|
+
setCurrentEventPriority,
|
|
1718
|
+
resetCurrentEventPriority
|
|
1719
|
+
);
|
|
1720
|
+
var performWork = /* @__PURE__ */ __name((lanes) => {
|
|
1721
|
+
const fiberRoot = getScheduledFiberRoot();
|
|
1722
|
+
if (!fiberRoot) return;
|
|
1723
|
+
if (!getResumeCursor()) flushPendingUpdates();
|
|
1724
|
+
setCurrentRenderingLanes(lanes);
|
|
1725
|
+
const completed = workLoopOnFiberLanes(fiberRoot.root, lanes);
|
|
1726
|
+
if (!completed) {
|
|
1727
|
+
scheduleRenderLane(lanes);
|
|
1728
|
+
return;
|
|
1729
|
+
}
|
|
1730
|
+
clearResumeCursor();
|
|
1731
|
+
commitWork(fiberRoot.root);
|
|
1732
|
+
markContainerAsRoot(fiberRoot.root, fiberRoot.containerDom);
|
|
1733
|
+
flushLayoutPhase(fiberRoot);
|
|
1734
|
+
schedulePassiveEffects();
|
|
1735
|
+
}, "performWork");
|
|
1736
|
+
setWorkCallback(performWork);
|
|
1737
|
+
|
|
1738
|
+
// ../rectify-reconciler/src/RectifyFiberReconciler.ts
|
|
1739
|
+
var createContainer = /* @__PURE__ */ __name((container) => {
|
|
1740
|
+
return createHostRootFiber(container);
|
|
1741
|
+
}, "createContainer");
|
|
1742
|
+
var updateContainer = /* @__PURE__ */ __name((children, fiberRoot) => {
|
|
1743
|
+
fiberRoot.children = children;
|
|
1744
|
+
setScheduledFiberRoot(fiberRoot);
|
|
1745
|
+
const wipRoot = createWorkInProgress(fiberRoot.root, { children });
|
|
1746
|
+
setCurrentRenderingLanes(SyncLane);
|
|
1747
|
+
workLoop(wipRoot);
|
|
1748
|
+
commitWork(wipRoot);
|
|
1749
|
+
fiberRoot.root = wipRoot;
|
|
1750
|
+
markContainerAsRoot(wipRoot, fiberRoot.containerDom);
|
|
1751
|
+
setScheduledFiberRoot(fiberRoot);
|
|
1752
|
+
flushLayoutPhase(fiberRoot);
|
|
1753
|
+
schedulePassiveEffects();
|
|
1754
|
+
}, "updateContainer");
|
|
1755
|
+
|
|
1395
1756
|
// ../rectify-dom/src/RectifyDomRoot.ts
|
|
1396
1757
|
var createRoot = /* @__PURE__ */ __name((container) => {
|
|
1397
1758
|
const hostRoot = createContainer(container);
|
|
@@ -1408,15 +1769,80 @@ var createRoot = /* @__PURE__ */ __name((container) => {
|
|
|
1408
1769
|
}, "createRoot");
|
|
1409
1770
|
|
|
1410
1771
|
// src/RectifyMemo.ts
|
|
1411
|
-
function memo(
|
|
1772
|
+
function memo(Component2, compare) {
|
|
1412
1773
|
const wrapper = /* @__PURE__ */ __name(((_props) => null), "wrapper");
|
|
1413
1774
|
wrapper._isMemo = true;
|
|
1414
|
-
wrapper._render =
|
|
1775
|
+
wrapper._render = Component2;
|
|
1415
1776
|
wrapper._compare = compare ?? null;
|
|
1416
1777
|
return wrapper;
|
|
1417
1778
|
}
|
|
1418
1779
|
__name(memo, "memo");
|
|
1419
1780
|
|
|
1420
|
-
|
|
1781
|
+
// src/RectifyLazy.ts
|
|
1782
|
+
var lazy = /* @__PURE__ */ __name((factory) => {
|
|
1783
|
+
const stub = /* @__PURE__ */ __name((() => null), "stub");
|
|
1784
|
+
return Object.assign(stub, {
|
|
1785
|
+
_isLazy: true,
|
|
1786
|
+
_status: "uninitialized",
|
|
1787
|
+
_result: null,
|
|
1788
|
+
_promise: null,
|
|
1789
|
+
_factory: factory
|
|
1790
|
+
});
|
|
1791
|
+
}, "lazy");
|
|
1792
|
+
|
|
1793
|
+
// src/RectifySuspense.ts
|
|
1794
|
+
var Suspense = /* @__PURE__ */ __name((_props) => null, "Suspense");
|
|
1795
|
+
Suspense._isSuspense = true;
|
|
1796
|
+
|
|
1797
|
+
// src/RectifyComponent.ts
|
|
1798
|
+
var _Component = class _Component {
|
|
1799
|
+
constructor(props) {
|
|
1800
|
+
this.state = {};
|
|
1801
|
+
/**
|
|
1802
|
+
* @internal Set by the reconciler when the instance is created so
|
|
1803
|
+
* `setState` can enqueue a re-render on the correct fiber.
|
|
1804
|
+
*/
|
|
1805
|
+
this._fiber = null;
|
|
1806
|
+
/**
|
|
1807
|
+
* @internal Snapshots taken by the reconciler in beginWork before each
|
|
1808
|
+
* update render so that `componentDidUpdate` receives the correct prev values.
|
|
1809
|
+
* Cleared after `componentDidUpdate` is called.
|
|
1810
|
+
*/
|
|
1811
|
+
this._prevProps = void 0;
|
|
1812
|
+
this._prevState = void 0;
|
|
1813
|
+
/**
|
|
1814
|
+
* @internal Queue of pending setState updates, flushed by the reconciler
|
|
1815
|
+
* during beginWork so that prevState snapshots can be taken first.
|
|
1816
|
+
*/
|
|
1817
|
+
this._pendingStateQueue = [];
|
|
1818
|
+
this.props = props;
|
|
1819
|
+
}
|
|
1820
|
+
// ---------------------------------------------------------------------------
|
|
1821
|
+
// Core API
|
|
1822
|
+
// ---------------------------------------------------------------------------
|
|
1823
|
+
/**
|
|
1824
|
+
* Merges `partialState` into the current state and schedules a re-render.
|
|
1825
|
+
* Accepts either a plain partial state object or an updater function.
|
|
1826
|
+
*/
|
|
1827
|
+
setState(partialState) {
|
|
1828
|
+
this._pendingStateQueue.push(partialState);
|
|
1829
|
+
if (this._fiber) {
|
|
1830
|
+
scheduleRerender(this._fiber);
|
|
1831
|
+
}
|
|
1832
|
+
}
|
|
1833
|
+
/**
|
|
1834
|
+
* Must be implemented by every class component.
|
|
1835
|
+
* Returns the subtree to render.
|
|
1836
|
+
*/
|
|
1837
|
+
render() {
|
|
1838
|
+
return null;
|
|
1839
|
+
}
|
|
1840
|
+
};
|
|
1841
|
+
__name(_Component, "Component");
|
|
1842
|
+
/** Marks this as a class component for the reconciler. */
|
|
1843
|
+
_Component._isClassComponent = true;
|
|
1844
|
+
var Component = _Component;
|
|
1845
|
+
|
|
1846
|
+
export { Component, Suspense, SyntheticEvent_default as SyntheticEvent, createContext, createRoot, lazy, memo, RectifyHookUseCallback_default as useCallback, useContext, RectifyHookUseEffect_default as useEffect, RectifyHookUseId_default as useId, RectifyHookUseLayoutEffect_default as useLayoutEffect, RectifyHookUseMemo_default as useMemo, RectifyHookUseReducer_default as useReducer, RectifyHookUseRef_default as useRef, RectifyHookUseState_default as useState };
|
|
1421
1847
|
//# sourceMappingURL=index.js.map
|
|
1422
1848
|
//# sourceMappingURL=index.js.map
|