sinho 0.3.2 → 0.3.4
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 +2 -2
- package/dist/bundle.d.ts +6 -8
- package/dist/bundle.js +30 -25
- package/dist/bundle.min.js +1 -1
- package/dist/component.d.ts +4 -4
- package/dist/component.js +14 -5
- package/dist/component.js.map +1 -1
- package/dist/intrinsic/TagComponent.js +1 -1
- package/dist/intrinsic/TagComponent.js.map +1 -1
- package/dist/scope.d.ts +2 -4
- package/dist/scope.js +15 -19
- package/dist/scope.js.map +1 -1
- package/package.json +1 -1
- package/src/component.ts +39 -14
- package/src/dom.ts +69 -82
- package/src/intrinsic/TagComponent.ts +1 -1
- package/src/scope.ts +17 -20
- package/web/package-lock.json +10 -39
- package/web/src/pages/index.tsx +8 -2
- package/web/src/pages/playground.tsx +3 -3
package/src/component.ts
CHANGED
|
@@ -348,7 +348,7 @@ declare abstract class ComponentInner<M extends Metadata> {
|
|
|
348
348
|
|
|
349
349
|
export type Component<M extends Metadata = {}> = {
|
|
350
350
|
-readonly [K in keyof Props<M>]: Props<M>[K] extends Signal<infer T>
|
|
351
|
-
? T
|
|
351
|
+
? T | undefined
|
|
352
352
|
: never;
|
|
353
353
|
} & ComponentInner<M> &
|
|
354
354
|
HTMLElement;
|
|
@@ -356,7 +356,7 @@ export type Component<M extends Metadata = {}> = {
|
|
|
356
356
|
export interface ComponentConstructor<M extends Metadata = {}> {
|
|
357
357
|
/** @ignore */
|
|
358
358
|
readonly [componentSym]: {
|
|
359
|
-
readonly _tagName: string;
|
|
359
|
+
readonly _tagName: string | null;
|
|
360
360
|
};
|
|
361
361
|
readonly observedAttributes: readonly string[];
|
|
362
362
|
|
|
@@ -403,7 +403,7 @@ export const useMountEffect = (
|
|
|
403
403
|
*
|
|
404
404
|
* @example
|
|
405
405
|
* ```tsx
|
|
406
|
-
* class MyComponent extends Component(
|
|
406
|
+
* class MyComponent extends Component({
|
|
407
407
|
* myProp: prop<string>("Hello, world!"),
|
|
408
408
|
* onMyEvent: event(),
|
|
409
409
|
* }) {
|
|
@@ -417,19 +417,34 @@ export const useMountEffect = (
|
|
|
417
417
|
* },
|
|
418
418
|
* }
|
|
419
419
|
*
|
|
420
|
-
*
|
|
420
|
+
* defineComponents(MyComponent);
|
|
421
421
|
* ```
|
|
422
422
|
*/
|
|
423
|
-
export const Component: ((tagName
|
|
423
|
+
export const Component: ((tagName?: string) => ComponentConstructor<{}>) &
|
|
424
424
|
(<const M extends Metadata>(
|
|
425
425
|
tagName: string,
|
|
426
426
|
metadata: M,
|
|
427
427
|
opts?: ComponentOptions,
|
|
428
|
+
) => ComponentConstructor<M>) &
|
|
429
|
+
(<const M extends Metadata>(
|
|
430
|
+
metadata: M,
|
|
431
|
+
opts?: ComponentOptions,
|
|
428
432
|
) => ComponentConstructor<M>) = ((
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
433
|
+
tagNameOrMetadata?: string | Metadata,
|
|
434
|
+
metadataOrOpts?: Metadata | ComponentOptions,
|
|
435
|
+
optsParam?: ComponentOptions,
|
|
432
436
|
): ComponentConstructor => {
|
|
437
|
+
const tagName =
|
|
438
|
+
typeof tagNameOrMetadata === "string" ? tagNameOrMetadata : null;
|
|
439
|
+
const metadata =
|
|
440
|
+
typeof tagNameOrMetadata === "string"
|
|
441
|
+
? (metadataOrOpts as Metadata)
|
|
442
|
+
: tagNameOrMetadata;
|
|
443
|
+
const opts =
|
|
444
|
+
(typeof tagNameOrMetadata === "string"
|
|
445
|
+
? optsParam
|
|
446
|
+
: (metadataOrOpts as ComponentOptions)) ?? {};
|
|
447
|
+
|
|
433
448
|
// Extract attribute information
|
|
434
449
|
|
|
435
450
|
const observedAttributes: string[] = [];
|
|
@@ -477,7 +492,7 @@ export const Component: ((tagName: string) => ComponentConstructor<{}>) &
|
|
|
477
492
|
|
|
478
493
|
const getRenderParent = (component: _Component) =>
|
|
479
494
|
opts.shadow
|
|
480
|
-
? component.shadowRoot ?? component.attachShadow(opts.shadow)
|
|
495
|
+
? (component.shadowRoot ?? component.attachShadow(opts.shadow))
|
|
481
496
|
: component;
|
|
482
497
|
abstract class _Component extends HTMLElement {
|
|
483
498
|
static readonly [componentSym]: ComponentConstructor[typeof componentSym] =
|
|
@@ -513,7 +528,14 @@ export const Component: ((tagName: string) => ComponentConstructor<{}>) &
|
|
|
513
528
|
|
|
514
529
|
Object.defineProperty(this, name, {
|
|
515
530
|
get: getter.peek,
|
|
516
|
-
set: (value) =>
|
|
531
|
+
set: (value) =>
|
|
532
|
+
setter(
|
|
533
|
+
() =>
|
|
534
|
+
!context && value === undefined
|
|
535
|
+
? meta._defaultOrContext
|
|
536
|
+
: value,
|
|
537
|
+
{ force: true },
|
|
538
|
+
),
|
|
517
539
|
});
|
|
518
540
|
} else if (meta._tag == "e" && name.startsWith("on")) {
|
|
519
541
|
const eventName = jsxPropNameToEventName(name as `on${string}`);
|
|
@@ -573,9 +595,7 @@ export const Component: ((tagName: string) => ComponentConstructor<{}>) &
|
|
|
573
595
|
this[prop.name as keyof this] =
|
|
574
596
|
value != null
|
|
575
597
|
? prop.meta.attribute.transform.call(this, value)
|
|
576
|
-
:
|
|
577
|
-
? undefined
|
|
578
|
-
: prop.meta._defaultOrContext;
|
|
598
|
+
: undefined;
|
|
579
599
|
}
|
|
580
600
|
}
|
|
581
601
|
|
|
@@ -624,6 +644,11 @@ export const defineComponents: ((
|
|
|
624
644
|
: ["", args as ComponentConstructor[]];
|
|
625
645
|
|
|
626
646
|
for (const component of components) {
|
|
627
|
-
customElements.define(
|
|
647
|
+
customElements.define(
|
|
648
|
+
prefix +
|
|
649
|
+
(component[componentSym]._tagName ??
|
|
650
|
+
camelCaseToKebabCase(component.name)),
|
|
651
|
+
component,
|
|
652
|
+
);
|
|
628
653
|
}
|
|
629
654
|
};
|
package/src/dom.ts
CHANGED
|
@@ -30,7 +30,6 @@ import {
|
|
|
30
30
|
type MaybeSignal,
|
|
31
31
|
type RefSignalSetter,
|
|
32
32
|
} from "./mod.js";
|
|
33
|
-
import { isComponent } from "./component.js";
|
|
34
33
|
|
|
35
34
|
const IS_NON_DIMENSIONAL =
|
|
36
35
|
/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i;
|
|
@@ -555,10 +554,10 @@ interface HtmlProps<in E> extends DomProps<E> {
|
|
|
555
554
|
}
|
|
556
555
|
|
|
557
556
|
interface SvgProps<in E> extends HtmlProps<E> {
|
|
558
|
-
|
|
557
|
+
"accent-height"?: MaybeSignal<number | string | undefined>;
|
|
559
558
|
accumulate?: MaybeSignal<"none" | "sum" | undefined>;
|
|
560
559
|
additive?: MaybeSignal<"replace" | "sum" | undefined>;
|
|
561
|
-
|
|
560
|
+
"alignment-baseline"?: MaybeSignal<
|
|
562
561
|
| "auto"
|
|
563
562
|
| "baseline"
|
|
564
563
|
| "before-edge"
|
|
@@ -574,36 +573,35 @@ interface SvgProps<in E> extends HtmlProps<E> {
|
|
|
574
573
|
| "inherit"
|
|
575
574
|
| undefined
|
|
576
575
|
>;
|
|
577
|
-
|
|
576
|
+
"allow-reorder"?: MaybeSignal<"no" | "yes" | undefined>;
|
|
578
577
|
alphabetic?: MaybeSignal<number | string | undefined>;
|
|
579
578
|
amplitude?: MaybeSignal<number | string | undefined>;
|
|
580
|
-
|
|
579
|
+
"arabic-form"?: MaybeSignal<
|
|
581
580
|
"initial" | "medial" | "terminal" | "isolated" | undefined
|
|
582
581
|
>;
|
|
583
582
|
ascent?: MaybeSignal<number | string | undefined>;
|
|
584
583
|
attributeName?: MaybeSignal<string | undefined>;
|
|
585
584
|
attributeType?: MaybeSignal<string | undefined>;
|
|
586
|
-
autoReverse?: MaybeSignal<number | string | undefined>;
|
|
587
585
|
azimuth?: MaybeSignal<number | string | undefined>;
|
|
588
586
|
baseFrequency?: MaybeSignal<number | string | undefined>;
|
|
589
|
-
|
|
587
|
+
"baseline-shift"?: MaybeSignal<number | string | undefined>;
|
|
590
588
|
baseProfile?: MaybeSignal<number | string | undefined>;
|
|
591
589
|
bbox?: MaybeSignal<number | string | undefined>;
|
|
592
590
|
begin?: MaybeSignal<number | string | undefined>;
|
|
593
591
|
bias?: MaybeSignal<number | string | undefined>;
|
|
594
592
|
by?: MaybeSignal<number | string | undefined>;
|
|
595
593
|
calcMode?: MaybeSignal<number | string | undefined>;
|
|
596
|
-
|
|
594
|
+
"cap-height"?: MaybeSignal<number | string | undefined>;
|
|
597
595
|
clip?: MaybeSignal<number | string | undefined>;
|
|
598
|
-
|
|
596
|
+
"clip-path"?: MaybeSignal<string | undefined>;
|
|
599
597
|
clipPathUnits?: MaybeSignal<number | string | undefined>;
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
598
|
+
"clip-rule"?: MaybeSignal<number | string | undefined>;
|
|
599
|
+
"color-interpolation"?: MaybeSignal<number | string | undefined>;
|
|
600
|
+
"color-interpolation-filters"?: MaybeSignal<
|
|
603
601
|
"auto" | "sRGB" | "linearRGB" | "inherit" | undefined
|
|
604
602
|
>;
|
|
605
|
-
|
|
606
|
-
|
|
603
|
+
"color-profile"?: MaybeSignal<number | string | undefined>;
|
|
604
|
+
"color-rendering"?: MaybeSignal<number | string | undefined>;
|
|
607
605
|
contentScriptType?: MaybeSignal<number | string | undefined>;
|
|
608
606
|
contentStyleType?: MaybeSignal<number | string | undefined>;
|
|
609
607
|
cursor?: MaybeSignal<number | string | undefined>;
|
|
@@ -616,49 +614,49 @@ interface SvgProps<in E> extends HtmlProps<E> {
|
|
|
616
614
|
direction?: MaybeSignal<number | string | undefined>;
|
|
617
615
|
display?: MaybeSignal<number | string | undefined>;
|
|
618
616
|
divisor?: MaybeSignal<number | string | undefined>;
|
|
619
|
-
|
|
617
|
+
"dominant-baseline"?: MaybeSignal<number | string | undefined>;
|
|
620
618
|
dur?: MaybeSignal<number | string | undefined>;
|
|
621
619
|
dx?: MaybeSignal<number | string | undefined>;
|
|
622
620
|
dy?: MaybeSignal<number | string | undefined>;
|
|
623
621
|
edgeMode?: MaybeSignal<number | string | undefined>;
|
|
624
622
|
elevation?: MaybeSignal<number | string | undefined>;
|
|
625
|
-
|
|
623
|
+
"enable-background"?: MaybeSignal<number | string | undefined>;
|
|
626
624
|
end?: MaybeSignal<number | string | undefined>;
|
|
627
625
|
exponent?: MaybeSignal<number | string | undefined>;
|
|
628
626
|
externalResourcesRequired?: MaybeSignal<number | string | undefined>;
|
|
629
627
|
fill?: MaybeSignal<string | undefined>;
|
|
630
|
-
|
|
631
|
-
|
|
628
|
+
"fill-opacity"?: MaybeSignal<number | string | undefined>;
|
|
629
|
+
"fill-rule"?: MaybeSignal<"nonzero" | "evenodd" | "inherit" | undefined>;
|
|
632
630
|
filter?: MaybeSignal<string | undefined>;
|
|
633
631
|
filterRes?: MaybeSignal<number | string | undefined>;
|
|
634
632
|
filterUnits?: MaybeSignal<number | string | undefined>;
|
|
635
|
-
|
|
636
|
-
|
|
633
|
+
"flood-color"?: MaybeSignal<number | string | undefined>;
|
|
634
|
+
"flood-opacity"?: MaybeSignal<number | string | undefined>;
|
|
637
635
|
focusable?: MaybeSignal<number | string | undefined>;
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
636
|
+
"font-family"?: MaybeSignal<string | undefined>;
|
|
637
|
+
"font-size"?: MaybeSignal<number | string | undefined>;
|
|
638
|
+
"font-size-adjust"?: MaybeSignal<number | string | undefined>;
|
|
639
|
+
"font-stretch"?: MaybeSignal<number | string | undefined>;
|
|
640
|
+
"font-style"?: MaybeSignal<number | string | undefined>;
|
|
641
|
+
"font-variant"?: MaybeSignal<number | string | undefined>;
|
|
642
|
+
"font-weight"?: MaybeSignal<number | string | undefined>;
|
|
645
643
|
format?: MaybeSignal<number | string | undefined>;
|
|
646
644
|
from?: MaybeSignal<number | string | undefined>;
|
|
647
645
|
fx?: MaybeSignal<number | string | undefined>;
|
|
648
646
|
fy?: MaybeSignal<number | string | undefined>;
|
|
649
647
|
g1?: MaybeSignal<number | string | undefined>;
|
|
650
648
|
g2?: MaybeSignal<number | string | undefined>;
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
649
|
+
"glyph-name"?: MaybeSignal<number | string | undefined>;
|
|
650
|
+
"glyph-orientation-horizontal"?: MaybeSignal<number | string | undefined>;
|
|
651
|
+
"glyph-orientation-vertical"?: MaybeSignal<number | string | undefined>;
|
|
654
652
|
glyphRef?: MaybeSignal<number | string | undefined>;
|
|
655
653
|
gradientTransform?: MaybeSignal<string | undefined>;
|
|
656
654
|
gradientUnits?: MaybeSignal<string | undefined>;
|
|
657
655
|
hanging?: MaybeSignal<number | string | undefined>;
|
|
658
|
-
|
|
659
|
-
|
|
656
|
+
"horiz-adv-x"?: MaybeSignal<number | string | undefined>;
|
|
657
|
+
"horiz-origin-x"?: MaybeSignal<number | string | undefined>;
|
|
660
658
|
ideographic?: MaybeSignal<number | string | undefined>;
|
|
661
|
-
|
|
659
|
+
"image-rendering"?: MaybeSignal<number | string | undefined>;
|
|
662
660
|
in2?: MaybeSignal<number | string | undefined>;
|
|
663
661
|
in?: MaybeSignal<string | undefined>;
|
|
664
662
|
intercept?: MaybeSignal<number | string | undefined>;
|
|
@@ -674,14 +672,14 @@ interface SvgProps<in E> extends HtmlProps<E> {
|
|
|
674
672
|
keySplines?: MaybeSignal<number | string | undefined>;
|
|
675
673
|
keyTimes?: MaybeSignal<number | string | undefined>;
|
|
676
674
|
lengthAdjust?: MaybeSignal<number | string | undefined>;
|
|
677
|
-
|
|
678
|
-
|
|
675
|
+
"letter-spacing"?: MaybeSignal<number | string | undefined>;
|
|
676
|
+
"lighting-color"?: MaybeSignal<number | string | undefined>;
|
|
679
677
|
limitingConeAngle?: MaybeSignal<number | string | undefined>;
|
|
680
678
|
local?: MaybeSignal<number | string | undefined>;
|
|
681
|
-
|
|
679
|
+
"marker-end"?: MaybeSignal<string | undefined>;
|
|
682
680
|
markerHeight?: MaybeSignal<number | string | undefined>;
|
|
683
|
-
|
|
684
|
-
|
|
681
|
+
"marker-mid"?: MaybeSignal<string | undefined>;
|
|
682
|
+
"marker-start"?: MaybeSignal<string | undefined>;
|
|
685
683
|
markerUnits?: MaybeSignal<number | string | undefined>;
|
|
686
684
|
markerWidth?: MaybeSignal<number | string | undefined>;
|
|
687
685
|
mask?: MaybeSignal<string | undefined>;
|
|
@@ -698,15 +696,15 @@ interface SvgProps<in E> extends HtmlProps<E> {
|
|
|
698
696
|
orientation?: MaybeSignal<number | string | undefined>;
|
|
699
697
|
origin?: MaybeSignal<number | string | undefined>;
|
|
700
698
|
overflow?: MaybeSignal<number | string | undefined>;
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
699
|
+
"overline-position"?: MaybeSignal<number | string | undefined>;
|
|
700
|
+
"overline-thickness"?: MaybeSignal<number | string | undefined>;
|
|
701
|
+
"paint-order"?: MaybeSignal<number | string | undefined>;
|
|
702
|
+
"panose-1"?: MaybeSignal<number | string | undefined>;
|
|
705
703
|
pathLength?: MaybeSignal<number | string | undefined>;
|
|
706
704
|
patternContentUnits?: MaybeSignal<string | undefined>;
|
|
707
705
|
patternTransform?: MaybeSignal<number | string | undefined>;
|
|
708
706
|
patternUnits?: MaybeSignal<string | undefined>;
|
|
709
|
-
|
|
707
|
+
"pointer-events"?: MaybeSignal<number | string | undefined>;
|
|
710
708
|
points?: MaybeSignal<string | undefined>;
|
|
711
709
|
pointsAtX?: MaybeSignal<number | string | undefined>;
|
|
712
710
|
pointsAtY?: MaybeSignal<number | string | undefined>;
|
|
@@ -718,7 +716,7 @@ interface SvgProps<in E> extends HtmlProps<E> {
|
|
|
718
716
|
radius?: MaybeSignal<number | string | undefined>;
|
|
719
717
|
refX?: MaybeSignal<number | string | undefined>;
|
|
720
718
|
refY?: MaybeSignal<number | string | undefined>;
|
|
721
|
-
|
|
719
|
+
"rendering-intent"?: MaybeSignal<number | string | undefined>;
|
|
722
720
|
repeatCount?: MaybeSignal<number | string | undefined>;
|
|
723
721
|
repeatDur?: MaybeSignal<number | string | undefined>;
|
|
724
722
|
requiredExtensions?: MaybeSignal<number | string | undefined>;
|
|
@@ -730,7 +728,7 @@ interface SvgProps<in E> extends HtmlProps<E> {
|
|
|
730
728
|
ry?: MaybeSignal<number | string | undefined>;
|
|
731
729
|
scale?: MaybeSignal<number | string | undefined>;
|
|
732
730
|
seed?: MaybeSignal<number | string | undefined>;
|
|
733
|
-
|
|
731
|
+
"shape-rendering"?: MaybeSignal<number | string | undefined>;
|
|
734
732
|
slope?: MaybeSignal<number | string | undefined>;
|
|
735
733
|
spacing?: MaybeSignal<number | string | undefined>;
|
|
736
734
|
specularConstant?: MaybeSignal<number | string | undefined>;
|
|
@@ -742,23 +740,23 @@ interface SvgProps<in E> extends HtmlProps<E> {
|
|
|
742
740
|
stemh?: MaybeSignal<number | string | undefined>;
|
|
743
741
|
stemv?: MaybeSignal<number | string | undefined>;
|
|
744
742
|
stitchTiles?: MaybeSignal<number | string | undefined>;
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
|
|
743
|
+
"stop-color"?: MaybeSignal<string | undefined>;
|
|
744
|
+
"stop-opacity"?: MaybeSignal<number | string | undefined>;
|
|
745
|
+
"strikethrough-position"?: MaybeSignal<number | string | undefined>;
|
|
746
|
+
"strikethrough-thickness"?: MaybeSignal<number | string | undefined>;
|
|
749
747
|
string?: MaybeSignal<number | string | undefined>;
|
|
750
748
|
stroke?: MaybeSignal<string | undefined>;
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
749
|
+
"stroke-dasharray"?: MaybeSignal<number | string | undefined>;
|
|
750
|
+
"stroke-dashoffset"?: MaybeSignal<number | string | undefined>;
|
|
751
|
+
"stroke-linecap"?: MaybeSignal<
|
|
754
752
|
"butt" | "round" | "square" | "inherit" | undefined
|
|
755
753
|
>;
|
|
756
|
-
|
|
754
|
+
"stroke-linejoin"?: MaybeSignal<
|
|
757
755
|
"miter" | "round" | "bevel" | "inherit" | undefined
|
|
758
756
|
>;
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
757
|
+
"stroke-miterlimit"?: MaybeSignal<number | string | undefined>;
|
|
758
|
+
"stroke-opacity"?: MaybeSignal<number | string | undefined>;
|
|
759
|
+
"stroke-width"?: MaybeSignal<number | string | undefined>;
|
|
762
760
|
surfaceScale?: MaybeSignal<number | string | undefined>;
|
|
763
761
|
systemLanguage?: MaybeSignal<number | string | undefined>;
|
|
764
762
|
tableValues?: MaybeSignal<number | string | undefined>;
|
|
@@ -770,47 +768,36 @@ interface SvgProps<in E> extends HtmlProps<E> {
|
|
|
770
768
|
textRendering?: MaybeSignal<number | string | undefined>;
|
|
771
769
|
to?: MaybeSignal<number | string | undefined>;
|
|
772
770
|
transform?: MaybeSignal<string | undefined>;
|
|
771
|
+
"transform-origin"?: MaybeSignal<string | undefined>;
|
|
773
772
|
u1?: MaybeSignal<number | string | undefined>;
|
|
774
773
|
u2?: MaybeSignal<number | string | undefined>;
|
|
775
|
-
|
|
776
|
-
|
|
774
|
+
"underline-position"?: MaybeSignal<number | string | undefined>;
|
|
775
|
+
"underline-thickness"?: MaybeSignal<number | string | undefined>;
|
|
777
776
|
unicode?: MaybeSignal<number | string | undefined>;
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
777
|
+
"unicode-bidi"?: MaybeSignal<number | string | undefined>;
|
|
778
|
+
"unicode-range"?: MaybeSignal<number | string | undefined>;
|
|
779
|
+
"units-per-em"?: MaybeSignal<number | string | undefined>;
|
|
780
|
+
"v-alphabetic"?: MaybeSignal<number | string | undefined>;
|
|
782
781
|
values?: MaybeSignal<string | undefined>;
|
|
783
782
|
vectorEffect?: MaybeSignal<number | string | undefined>;
|
|
784
783
|
version?: MaybeSignal<string | undefined>;
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
784
|
+
"vert-adv-y"?: MaybeSignal<number | string | undefined>;
|
|
785
|
+
"vert-origin-x"?: MaybeSignal<number | string | undefined>;
|
|
786
|
+
"vert-origin-y"?: MaybeSignal<number | string | undefined>;
|
|
787
|
+
"v-hanging"?: MaybeSignal<number | string | undefined>;
|
|
788
|
+
"v-ideographic"?: MaybeSignal<number | string | undefined>;
|
|
790
789
|
viewBox?: MaybeSignal<string | undefined>;
|
|
791
790
|
viewTarget?: MaybeSignal<number | string | undefined>;
|
|
792
791
|
visibility?: MaybeSignal<number | string | undefined>;
|
|
793
|
-
|
|
792
|
+
"v-mathematical"?: MaybeSignal<number | string | undefined>;
|
|
794
793
|
widths?: MaybeSignal<number | string | undefined>;
|
|
795
|
-
|
|
794
|
+
"word-spacing"?: MaybeSignal<number | string | undefined>;
|
|
796
795
|
writingMode?: MaybeSignal<number | string | undefined>;
|
|
797
796
|
x1?: MaybeSignal<number | string | undefined>;
|
|
798
797
|
x2?: MaybeSignal<number | string | undefined>;
|
|
799
798
|
x?: MaybeSignal<number | string | undefined>;
|
|
800
799
|
xChannelSelector?: MaybeSignal<string | undefined>;
|
|
801
|
-
|
|
802
|
-
xlinkActuate?: MaybeSignal<string | undefined>;
|
|
803
|
-
xlinkArcrole?: MaybeSignal<string | undefined>;
|
|
804
|
-
xlinkHref?: MaybeSignal<string | undefined>;
|
|
805
|
-
xlinkRole?: MaybeSignal<string | undefined>;
|
|
806
|
-
xlinkShow?: MaybeSignal<string | undefined>;
|
|
807
|
-
xlinkTitle?: MaybeSignal<string | undefined>;
|
|
808
|
-
xlinkType?: MaybeSignal<string | undefined>;
|
|
809
|
-
xmlBase?: MaybeSignal<string | undefined>;
|
|
810
|
-
xmlLang?: MaybeSignal<string | undefined>;
|
|
811
|
-
xmlns?: MaybeSignal<string | undefined>;
|
|
812
|
-
xmlnsXlink?: MaybeSignal<string | undefined>;
|
|
813
|
-
xmlSpace?: MaybeSignal<string | undefined>;
|
|
800
|
+
"x-height"?: MaybeSignal<number | string | undefined>;
|
|
814
801
|
y1?: MaybeSignal<number | string | undefined>;
|
|
815
802
|
y2?: MaybeSignal<number | string | undefined>;
|
|
816
803
|
y?: MaybeSignal<number | string | undefined>;
|
package/src/scope.ts
CHANGED
|
@@ -68,8 +68,8 @@ export type Cleanup = (() => void) | void | undefined | null;
|
|
|
68
68
|
|
|
69
69
|
export interface Scope<out T = {}> {
|
|
70
70
|
readonly _parent?: Scope;
|
|
71
|
-
_effects: Effect
|
|
72
|
-
_subscopes: Scope
|
|
71
|
+
_effects: Set<Effect>;
|
|
72
|
+
_subscopes: Set<Scope>;
|
|
73
73
|
_details: T;
|
|
74
74
|
|
|
75
75
|
_run<T>(fn: () => T): T;
|
|
@@ -79,8 +79,8 @@ export interface Scope<out T = {}> {
|
|
|
79
79
|
const createScope = (parent?: Scope): Scope => {
|
|
80
80
|
return {
|
|
81
81
|
_parent: parent,
|
|
82
|
-
_effects:
|
|
83
|
-
_subscopes:
|
|
82
|
+
_effects: new Set(),
|
|
83
|
+
_subscopes: new Set(),
|
|
84
84
|
_details: { ...parent?._details },
|
|
85
85
|
|
|
86
86
|
_run<T>(fn: () => T): T {
|
|
@@ -95,22 +95,23 @@ const createScope = (parent?: Scope): Scope => {
|
|
|
95
95
|
},
|
|
96
96
|
|
|
97
97
|
_cleanup(): void {
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
98
|
+
[...this._subscopes].forEach((_, i, arr) => {
|
|
99
|
+
const subscope = arr[arr.length - 1 - i];
|
|
100
|
+
subscope._cleanup();
|
|
101
|
+
});
|
|
101
102
|
|
|
102
|
-
this._subscopes =
|
|
103
|
+
this._subscopes = new Set();
|
|
103
104
|
|
|
104
|
-
|
|
105
|
-
const effect =
|
|
105
|
+
[...this._effects].forEach((_, i, arr) => {
|
|
106
|
+
const effect = arr[arr.length - 1 - i];
|
|
106
107
|
effect._clean?.();
|
|
107
108
|
effect._run = () => {};
|
|
108
109
|
|
|
109
110
|
effect._deps.forEach((signal) => signal._effects.delete(effect));
|
|
110
111
|
effect._deps.clear();
|
|
111
|
-
}
|
|
112
|
+
});
|
|
112
113
|
|
|
113
|
-
this._effects =
|
|
114
|
+
this._effects = new Set();
|
|
114
115
|
},
|
|
115
116
|
};
|
|
116
117
|
};
|
|
@@ -307,14 +308,14 @@ export const useEffect = (
|
|
|
307
308
|
},
|
|
308
309
|
};
|
|
309
310
|
|
|
310
|
-
currScope._effects.
|
|
311
|
+
currScope._effects.add(effect);
|
|
311
312
|
effect._run();
|
|
312
313
|
|
|
313
314
|
if (!effect._deps.size && !effect._clean) {
|
|
314
315
|
// Optimization: Destroy effect since there's no cleanup and this effect
|
|
315
316
|
// won't be called again
|
|
316
317
|
|
|
317
|
-
currScope._effects.
|
|
318
|
+
currScope._effects.delete(effect);
|
|
318
319
|
}
|
|
319
320
|
};
|
|
320
321
|
|
|
@@ -363,17 +364,13 @@ export const useSubscope = <T>(
|
|
|
363
364
|
Object.assign(scope._details, opts?.details);
|
|
364
365
|
|
|
365
366
|
try {
|
|
366
|
-
parent._subscopes.
|
|
367
|
+
parent._subscopes.add(scope);
|
|
367
368
|
const result = scope._run(fn);
|
|
368
369
|
|
|
369
370
|
return [
|
|
370
371
|
result,
|
|
371
372
|
() => {
|
|
372
|
-
|
|
373
|
-
if (index >= 0) {
|
|
374
|
-
parent._subscopes.splice(index, 1);
|
|
375
|
-
}
|
|
376
|
-
|
|
373
|
+
parent._subscopes.delete(scope);
|
|
377
374
|
scope._cleanup();
|
|
378
375
|
},
|
|
379
376
|
];
|