@symbiote-native/angular 3.1.3 → 3.2.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/build/angular/accessibility-events.d.ts +12 -0
- package/build/angular/accessibility-events.js +28 -0
- package/build/angular/accessibility-events.js.map +1 -0
- package/build/angular/accessibility-inputs.d.ts +40 -0
- package/build/angular/accessibility-inputs.js +130 -0
- package/build/angular/accessibility-inputs.js.map +1 -0
- package/build/angular/bootstrap.d.ts +3 -1
- package/build/angular/bootstrap.js +4 -1
- package/build/angular/bootstrap.js.map +1 -1
- package/build/angular/components/flat-list/flat-list-template.d.ts +1 -0
- package/build/angular/components/flat-list/flat-list-template.js +158 -0
- package/build/angular/components/flat-list/flat-list-template.js.map +1 -0
- package/build/angular/components/flat-list/index.d.ts +6 -61
- package/build/angular/components/flat-list/index.js +26 -463
- package/build/angular/components/flat-list/index.js.map +1 -1
- package/build/angular/components/keyboard-avoiding-view/index.d.ts +4 -40
- package/build/angular/components/keyboard-avoiding-view/index.js +7 -131
- package/build/angular/components/keyboard-avoiding-view/index.js.map +1 -1
- package/build/angular/components/modal/index.d.ts +5 -41
- package/build/angular/components/modal/index.js +8 -133
- package/build/angular/components/modal/index.js.map +1 -1
- package/build/angular/components/section-list/index.d.ts +4 -51
- package/build/angular/components/section-list/index.js +18 -335
- package/build/angular/components/section-list/index.js.map +1 -1
- package/build/angular/components/virtualized-list/cell-registry.d.ts +35 -0
- package/build/angular/components/virtualized-list/cell-registry.js +133 -0
- package/build/angular/components/virtualized-list/cell-registry.js.map +1 -0
- package/build/angular/components/virtualized-list/index.d.ts +18 -253
- package/build/angular/components/virtualized-list/index.js +112 -1178
- package/build/angular/components/virtualized-list/index.js.map +1 -1
- package/build/angular/components/virtualized-list/list-a11y-forward.d.ts +1 -0
- package/build/angular/components/virtualized-list/list-a11y-forward.js +42 -0
- package/build/angular/components/virtualized-list/list-a11y-forward.js.map +1 -0
- package/build/angular/components/virtualized-list/list-bags.d.ts +32 -0
- package/build/angular/components/virtualized-list/list-bags.js +120 -0
- package/build/angular/components/virtualized-list/list-bags.js.map +1 -0
- package/build/angular/components/virtualized-list/list-effects.d.ts +31 -0
- package/build/angular/components/virtualized-list/list-effects.js +83 -0
- package/build/angular/components/virtualized-list/list-effects.js.map +1 -0
- package/build/angular/components/virtualized-list/list-events.d.ts +17 -0
- package/build/angular/components/virtualized-list/list-events.js +34 -0
- package/build/angular/components/virtualized-list/list-events.js.map +1 -0
- package/build/angular/components/virtualized-list/list-handle.d.ts +35 -0
- package/build/angular/components/virtualized-list/list-handle.js +61 -0
- package/build/angular/components/virtualized-list/list-handle.js.map +1 -0
- package/build/angular/components/virtualized-list/list-inputs.d.ts +78 -0
- package/build/angular/components/virtualized-list/list-inputs.js +150 -0
- package/build/angular/components/virtualized-list/list-inputs.js.map +1 -0
- package/build/angular/components/virtualized-list/list-props.d.ts +58 -0
- package/build/angular/components/virtualized-list/list-props.js +3 -0
- package/build/angular/components/virtualized-list/list-props.js.map +1 -0
- package/build/angular/components/virtualized-list/list-styles.d.ts +23 -0
- package/build/angular/components/virtualized-list/list-styles.js +26 -0
- package/build/angular/components/virtualized-list/list-styles.js.map +1 -0
- package/build/angular/components/virtualized-list/list-template.d.ts +1 -0
- package/build/angular/components/virtualized-list/list-template.js +176 -0
- package/build/angular/components/virtualized-list/list-template.js.map +1 -0
- package/build/angular/components/virtualized-section-list/index.d.ts +13 -70
- package/build/angular/components/virtualized-section-list/index.js +22 -455
- package/build/angular/components/virtualized-section-list/index.js.map +1 -1
- package/build/angular/components/virtualized-section-list/section-list-template.d.ts +1 -0
- package/build/angular/components/virtualized-section-list/section-list-template.js +107 -0
- package/build/angular/components/virtualized-section-list/section-list-template.js.map +1 -0
- package/build/angular/finalization-registry.d.ts +4 -0
- package/build/angular/finalization-registry.js +17 -0
- package/build/angular/finalization-registry.js.map +1 -0
- package/build/angular/index.d.ts +5 -1
- package/build/angular/index.js +5 -1
- package/build/angular/index.js.map +1 -1
- package/build/angular/native-view-base.d.ts +19 -0
- package/build/angular/native-view-base.js +48 -0
- package/build/angular/native-view-base.js.map +1 -0
- package/build/angular/render/index.d.ts +2 -1
- package/build/angular/render/index.js +46 -73
- package/build/angular/render/index.js.map +1 -1
- package/build/angular/services/connect-watched-signal.d.ts +2 -0
- package/build/angular/services/connect-watched-signal.js +9 -0
- package/build/angular/services/connect-watched-signal.js.map +1 -0
- package/build/angular/services/create-event-value-hook.d.ts +3 -0
- package/build/angular/services/create-event-value-hook.js +17 -0
- package/build/angular/services/create-event-value-hook.js.map +1 -0
- package/build/angular/services/create-resource-hook.d.ts +7 -0
- package/build/angular/services/create-resource-hook.js +20 -0
- package/build/angular/services/create-resource-hook.js.map +1 -0
- package/build/angular/services/index.d.ts +4 -0
- package/build/angular/services/index.js +4 -0
- package/build/angular/services/index.js.map +1 -1
- package/build/angular/services/permissions-service-base.d.ts +14 -0
- package/build/angular/services/permissions-service-base.js +38 -0
- package/build/angular/services/permissions-service-base.js.map +1 -0
- package/package.json +6 -6
- package/src/accessibility-events.ts +13 -0
- package/src/accessibility-inputs.ts +89 -0
- package/src/bootstrap.ts +6 -2
- package/src/components/flat-list/flat-list-template.ts +159 -0
- package/src/components/flat-list/index.ts +30 -307
- package/src/components/keyboard-avoiding-view/index.ts +4 -78
- package/src/components/modal/index.ts +7 -80
- package/src/components/section-list/index.ts +21 -172
- package/src/components/virtualized-list/cell-registry.ts +199 -0
- package/src/components/virtualized-list/index.ts +145 -1181
- package/src/components/virtualized-list/list-a11y-forward.ts +42 -0
- package/src/components/virtualized-list/list-bags.ts +142 -0
- package/src/components/virtualized-list/list-effects.ts +116 -0
- package/src/components/virtualized-list/list-events.ts +31 -0
- package/src/components/virtualized-list/list-handle.ts +92 -0
- package/src/components/virtualized-list/list-inputs.ts +149 -0
- package/src/components/virtualized-list/list-props.ts +81 -0
- package/src/components/virtualized-list/list-styles.ts +62 -0
- package/src/components/virtualized-list/list-template.ts +175 -0
- package/src/components/virtualized-section-list/index.ts +40 -351
- package/src/components/virtualized-section-list/section-list-template.ts +108 -0
- package/src/finalization-registry.ts +18 -0
- package/src/index.ts +12 -1
- package/src/native-view-base.ts +51 -0
- package/src/render/index.ts +76 -77
- package/src/services/connect-watched-signal.ts +15 -0
- package/src/services/create-event-value-hook.ts +24 -0
- package/src/services/create-resource-hook.ts +32 -0
- package/src/services/index.ts +4 -0
- package/src/services/permissions-service-base.ts +46 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/virtualized-section-list/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/virtualized-section-list/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const VIRTUALIZED_SECTION_LIST_TEMPLATE = "\n <VirtualizedList\n [data]=\"flatEntries\"\n [getItem]=\"getEntry\"\n [getItemCount]=\"getEntryCount\"\n [keyExtractor]=\"entryKeyExtractor\"\n [getItemLayout]=\"entryItemLayout\"\n [stickyHeaderIndices]=\"stickyHeaderIndices\"\n [extraData]=\"extraData\"\n [inverted]=\"inverted\"\n [refreshing]=\"refreshing\"\n [progressViewOffset]=\"progressViewOffset\"\n [refreshRequested]=\"refreshRequested ?? refresh.observed\"\n (refresh)=\"resolvedOnRefresh?.()\"\n (endReached)=\"resolvedOnEndReached?.($event)\"\n [onEndReachedThreshold]=\"onEndReachedThreshold\"\n (startReached)=\"resolvedOnStartReached?.($event)\"\n [onStartReachedThreshold]=\"onStartReachedThreshold\"\n [initialNumToRender]=\"initialNumToRender\"\n [initialScrollIndex]=\"initialScrollIndex\"\n [maxToRenderPerBatch]=\"maxToRenderPerBatch\"\n [updateCellsBatchingPeriod]=\"updateCellsBatchingPeriod\"\n [windowSize]=\"windowSize\"\n [maintainVisibleContentPosition]=\"maintainVisibleContentPosition\"\n [onScroll]=\"onScroll\"\n [onScrollBeginDrag]=\"onScrollBeginDrag\"\n [onScrollEndDrag]=\"onScrollEndDrag\"\n [onMomentumScrollBegin]=\"onMomentumScrollBegin\"\n [onMomentumScrollEnd]=\"onMomentumScrollEnd\"\n [scrollEventThrottle]=\"scrollEventThrottle\"\n [keyboardShouldPersistTaps]=\"keyboardShouldPersistTaps\"\n [keyboardDismissMode]=\"keyboardDismissMode\"\n [removeClippedSubviews]=\"removeClippedSubviews\"\n [nestedScrollEnabled]=\"nestedScrollEnabled\"\n [style]=\"resolvedStyle\"\n [contentContainerStyle]=\"contentContainerStyle\"\n [testID]=\"testID\"\n [nativeID]=\"nativeID\"\n \n [accessible]=\"accessible\"\n [accessibilityLabel]=\"accessibilityLabel\"\n [accessibilityHint]=\"accessibilityHint\"\n [accessibilityRole]=\"accessibilityRole\"\n [accessibilityState]=\"accessibilityState\"\n [accessibilityValue]=\"accessibilityValue\"\n [accessibilityActions]=\"accessibilityActions\"\n [accessibilityLabelledBy]=\"accessibilityLabelledBy\"\n [importantForAccessibility]=\"importantForAccessibility\"\n [accessibilityLiveRegion]=\"accessibilityLiveRegion\"\n [screenReaderFocusable]=\"screenReaderFocusable\"\n [accessibilityViewIsModal]=\"accessibilityViewIsModal\"\n [accessibilityElementsHidden]=\"accessibilityElementsHidden\"\n [accessibilityIgnoresInvertColors]=\"accessibilityIgnoresInvertColors\"\n [accessibilityLanguage]=\"accessibilityLanguage\"\n [accessibilityRespondsToUserInteraction]=\"accessibilityRespondsToUserInteraction\"\n [accessibilityShowsLargeContentViewer]=\"accessibilityShowsLargeContentViewer\"\n [accessibilityLargeContentTitle]=\"accessibilityLargeContentTitle\"\n (accessibilityAction)=\"accessibilityAction.emit($event)\"\n (accessibilityTap)=\"accessibilityTap.emit($event)\"\n (magicTap)=\"magicTap.emit($event)\"\n (accessibilityEscape)=\"accessibilityEscape.emit($event)\"\n [role]=\"role\"\n [aria-label]=\"ariaLabel\"\n [aria-labelledby]=\"ariaLabelledBy\"\n [aria-live]=\"ariaLive\"\n [aria-hidden]=\"ariaHidden\"\n [aria-busy]=\"ariaBusy\"\n [aria-checked]=\"ariaChecked\"\n [aria-disabled]=\"ariaDisabled\"\n [aria-expanded]=\"ariaExpanded\"\n [aria-selected]=\"ariaSelected\"\n [aria-modal]=\"ariaModal\"\n [aria-valuemax]=\"ariaValueMax\"\n [aria-valuemin]=\"ariaValueMin\"\n [aria-valuenow]=\"ariaValueNow\"\n [aria-valuetext]=\"ariaValueText\"\n\n >\n <!-- The single synthesized cell template: dispatch per flattened entry tag -->\n <ng-template vListItem let-entry let-separators=\"separators\">\n @switch (entryKind(entry)) {\n @case ('header') {\n <ng-container\n [vListOutlet]=\"sectionHeaderDir?.templateRef\"\n [vListOutletContext]=\"sectionContextOf(entry)\"\n ></ng-container>\n }\n @case ('footer') {\n <ng-container\n [vListOutlet]=\"sectionFooterDir?.templateRef\"\n [vListOutletContext]=\"sectionContextOf(entry)\"\n ></ng-container>\n }\n @case ('section-separator') {\n <ng-container\n [vListOutlet]=\"sectionSeparatorDir?.templateRef\"\n ></ng-container>\n }\n @case ('item') {\n <ng-container\n [vListOutlet]=\"sectionItemDir?.templateRef\"\n [vListOutletContext]=\"itemContextOf(entry, separators)\"\n ></ng-container>\n }\n }\n </ng-template>\n\n <!-- List-level slots: forward the app's directives to the inner list -->\n @if (listHeaderDir !== undefined) {\n <ng-template vListHeader>\n <ng-container [vListOutlet]=\"listHeaderDir.templateRef\"></ng-container>\n </ng-template>\n }\n @if (listFooterDir !== undefined) {\n <ng-template vListFooter>\n <ng-container [vListOutlet]=\"listFooterDir.templateRef\"></ng-container>\n </ng-template>\n }\n @if (listEmptyDir !== undefined) {\n <ng-template vListEmpty>\n <ng-container [vListOutlet]=\"listEmptyDir.templateRef\"></ng-container>\n </ng-template>\n }\n <!-- Item separator: unwrap each flattened entry back to its item -->\n @if (itemSeparatorDir !== undefined) {\n <ng-template\n vListSeparator\n let-highlighted\n let-leadingItem=\"leadingItem\"\n let-trailingItem=\"trailingItem\"\n >\n <ng-container\n [vListOutlet]=\"itemSeparatorDir.templateRef\"\n [vListOutletContext]=\"\n itemSeparatorContextOf(highlighted, leadingItem, trailingItem)\n \"\n ></ng-container>\n </ng-template>\n }\n </VirtualizedList>\n";
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// One synthesized `vListItem` template switches on the flattened entry kind and stamps the matching
|
|
2
|
+
// app template, since the inner list renders every cell through a single one
|
|
3
|
+
import { LIST_ACCESSIBILITY_FORWARD } from '../virtualized-list/list-a11y-forward';
|
|
4
|
+
export const VIRTUALIZED_SECTION_LIST_TEMPLATE = `
|
|
5
|
+
<VirtualizedList
|
|
6
|
+
[data]="flatEntries"
|
|
7
|
+
[getItem]="getEntry"
|
|
8
|
+
[getItemCount]="getEntryCount"
|
|
9
|
+
[keyExtractor]="entryKeyExtractor"
|
|
10
|
+
[getItemLayout]="entryItemLayout"
|
|
11
|
+
[stickyHeaderIndices]="stickyHeaderIndices"
|
|
12
|
+
[extraData]="extraData"
|
|
13
|
+
[inverted]="inverted"
|
|
14
|
+
[refreshing]="refreshing"
|
|
15
|
+
[progressViewOffset]="progressViewOffset"
|
|
16
|
+
[refreshRequested]="refreshRequested ?? refresh.observed"
|
|
17
|
+
(refresh)="resolvedOnRefresh?.()"
|
|
18
|
+
(endReached)="resolvedOnEndReached?.($event)"
|
|
19
|
+
[onEndReachedThreshold]="onEndReachedThreshold"
|
|
20
|
+
(startReached)="resolvedOnStartReached?.($event)"
|
|
21
|
+
[onStartReachedThreshold]="onStartReachedThreshold"
|
|
22
|
+
[initialNumToRender]="initialNumToRender"
|
|
23
|
+
[initialScrollIndex]="initialScrollIndex"
|
|
24
|
+
[maxToRenderPerBatch]="maxToRenderPerBatch"
|
|
25
|
+
[updateCellsBatchingPeriod]="updateCellsBatchingPeriod"
|
|
26
|
+
[windowSize]="windowSize"
|
|
27
|
+
[maintainVisibleContentPosition]="maintainVisibleContentPosition"
|
|
28
|
+
[onScroll]="onScroll"
|
|
29
|
+
[onScrollBeginDrag]="onScrollBeginDrag"
|
|
30
|
+
[onScrollEndDrag]="onScrollEndDrag"
|
|
31
|
+
[onMomentumScrollBegin]="onMomentumScrollBegin"
|
|
32
|
+
[onMomentumScrollEnd]="onMomentumScrollEnd"
|
|
33
|
+
[scrollEventThrottle]="scrollEventThrottle"
|
|
34
|
+
[keyboardShouldPersistTaps]="keyboardShouldPersistTaps"
|
|
35
|
+
[keyboardDismissMode]="keyboardDismissMode"
|
|
36
|
+
[removeClippedSubviews]="removeClippedSubviews"
|
|
37
|
+
[nestedScrollEnabled]="nestedScrollEnabled"
|
|
38
|
+
[style]="resolvedStyle"
|
|
39
|
+
[contentContainerStyle]="contentContainerStyle"
|
|
40
|
+
[testID]="testID"
|
|
41
|
+
[nativeID]="nativeID"
|
|
42
|
+
${LIST_ACCESSIBILITY_FORWARD}
|
|
43
|
+
>
|
|
44
|
+
<!-- The single synthesized cell template: dispatch per flattened entry tag -->
|
|
45
|
+
<ng-template vListItem let-entry let-separators="separators">
|
|
46
|
+
@switch (entryKind(entry)) {
|
|
47
|
+
@case ('header') {
|
|
48
|
+
<ng-container
|
|
49
|
+
[vListOutlet]="sectionHeaderDir?.templateRef"
|
|
50
|
+
[vListOutletContext]="sectionContextOf(entry)"
|
|
51
|
+
></ng-container>
|
|
52
|
+
}
|
|
53
|
+
@case ('footer') {
|
|
54
|
+
<ng-container
|
|
55
|
+
[vListOutlet]="sectionFooterDir?.templateRef"
|
|
56
|
+
[vListOutletContext]="sectionContextOf(entry)"
|
|
57
|
+
></ng-container>
|
|
58
|
+
}
|
|
59
|
+
@case ('section-separator') {
|
|
60
|
+
<ng-container
|
|
61
|
+
[vListOutlet]="sectionSeparatorDir?.templateRef"
|
|
62
|
+
></ng-container>
|
|
63
|
+
}
|
|
64
|
+
@case ('item') {
|
|
65
|
+
<ng-container
|
|
66
|
+
[vListOutlet]="sectionItemDir?.templateRef"
|
|
67
|
+
[vListOutletContext]="itemContextOf(entry, separators)"
|
|
68
|
+
></ng-container>
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
</ng-template>
|
|
72
|
+
|
|
73
|
+
<!-- List-level slots: forward the app's directives to the inner list -->
|
|
74
|
+
@if (listHeaderDir !== undefined) {
|
|
75
|
+
<ng-template vListHeader>
|
|
76
|
+
<ng-container [vListOutlet]="listHeaderDir.templateRef"></ng-container>
|
|
77
|
+
</ng-template>
|
|
78
|
+
}
|
|
79
|
+
@if (listFooterDir !== undefined) {
|
|
80
|
+
<ng-template vListFooter>
|
|
81
|
+
<ng-container [vListOutlet]="listFooterDir.templateRef"></ng-container>
|
|
82
|
+
</ng-template>
|
|
83
|
+
}
|
|
84
|
+
@if (listEmptyDir !== undefined) {
|
|
85
|
+
<ng-template vListEmpty>
|
|
86
|
+
<ng-container [vListOutlet]="listEmptyDir.templateRef"></ng-container>
|
|
87
|
+
</ng-template>
|
|
88
|
+
}
|
|
89
|
+
<!-- Item separator: unwrap each flattened entry back to its item -->
|
|
90
|
+
@if (itemSeparatorDir !== undefined) {
|
|
91
|
+
<ng-template
|
|
92
|
+
vListSeparator
|
|
93
|
+
let-highlighted
|
|
94
|
+
let-leadingItem="leadingItem"
|
|
95
|
+
let-trailingItem="trailingItem"
|
|
96
|
+
>
|
|
97
|
+
<ng-container
|
|
98
|
+
[vListOutlet]="itemSeparatorDir.templateRef"
|
|
99
|
+
[vListOutletContext]="
|
|
100
|
+
itemSeparatorContextOf(highlighted, leadingItem, trailingItem)
|
|
101
|
+
"
|
|
102
|
+
></ng-container>
|
|
103
|
+
</ng-template>
|
|
104
|
+
}
|
|
105
|
+
</VirtualizedList>
|
|
106
|
+
`;
|
|
107
|
+
//# sourceMappingURL=section-list-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"section-list-template.js","sourceRoot":"","sources":["../../../../src/components/virtualized-section-list/section-list-template.ts"],"names":[],"mappings":"AAAA,oGAAoG;AACpG,6EAA6E;AAE7E,OAAO,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAC;AAEnF,MAAM,CAAC,MAAM,iCAAiC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAsC3C,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgE/B,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Hermes has no `FinalizationRegistry`, and `@angular/core` >=22.2 builds one at module load
|
|
3
|
+
// Cleanup callbacks never fire, which only costs Angular's signal debug bookkeeping
|
|
4
|
+
class InertFinalizationRegistry {
|
|
5
|
+
register() { }
|
|
6
|
+
unregister() {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
if (typeof globalThis.FinalizationRegistry === 'undefined') {
|
|
11
|
+
Object.defineProperty(globalThis, 'FinalizationRegistry', {
|
|
12
|
+
value: InertFinalizationRegistry,
|
|
13
|
+
configurable: true,
|
|
14
|
+
writable: true,
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=finalization-registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"finalization-registry.js","sourceRoot":"","sources":["../../src/finalization-registry.ts"],"names":[],"mappings":";AAAA,6FAA6F;AAC7F,oFAAoF;AAEpF,MAAM,yBAAyB;IAC7B,QAAQ,KAAU,CAAC;IAEnB,UAAU;QACR,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AAED,IAAI,OAAO,UAAU,CAAC,oBAAoB,KAAK,WAAW,EAAE,CAAC;IAC3D,MAAM,CAAC,cAAc,CAAC,UAAU,EAAE,sBAAsB,EAAE;QACxD,KAAK,EAAE,yBAAyB;QAChC,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;AACL,CAAC"}
|
package/build/angular/index.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import './finalization-registry';
|
|
1
2
|
import './register';
|
|
2
3
|
export { anchorHostStyle, FlatList, HorizontalScrollContentView, HorizontalScrollView, Image, KeyboardAvoidingView, Modal, ScrollContentView, SectionList, stableAnchorStyle, SymbioteHostPropsDirective, SymbioteStyleInputDirective, Text, TouchableNativeFeedback, View, VirtualizedList, VirtualizedSectionList, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, VSectionFooterDirective, VSectionHeaderDirective, VSectionItemDirective, VSectionSeparatorDirective, } from './components';
|
|
3
4
|
export { Animated } from './modules/animated';
|
|
@@ -20,7 +21,10 @@ export { StatusBar } from './modules/status-bar';
|
|
|
20
21
|
export type { IStatusBarProps, IStatusBarStyle } from './modules/status-bar';
|
|
21
22
|
export { AppRegistry, setHostRegistrar } from './modules/app-registry';
|
|
22
23
|
export type { IComponentProvider, IAppParameters, IRunnable, IHostRegistrar, IWrapperComponentProvider, IRegistry, IHeadlessTask, ITaskProvider, ITaskCanceller, ITaskCancelProvider, } from './modules/app-registry';
|
|
23
|
-
export { ColorSchemeService, WindowDimensionsService } from './services';
|
|
24
|
+
export { ColorSchemeService, WindowDimensionsService, createResourceHook, createEventValueHook, connectWatchedSignal, PermissionsServiceBase, } from './services';
|
|
25
|
+
export { AccessibilityInputsBase } from './accessibility-inputs';
|
|
26
|
+
export { NativeViewBase } from './native-view-base';
|
|
27
|
+
export { anchorStyleProp } from './primitives/shared';
|
|
24
28
|
export { Alert, Share, ActionSheetIOS, Linking, Vibration, ToastAndroid, Settings, I18nManager, Dimensions, Appearance, AppState, Keyboard, KEYBOARD_EVENT, BackHandler, PermissionsAndroid, PERMISSIONS, RESULTS, AccessibilityInfo, LayoutAnimation, InteractionManager, PanResponder, PixelRatio, PlatformColor, DynamicColorIOS, } from '@symbiote-native/engine';
|
|
25
29
|
export type { IAlertType, IAlertButtonStyle, IAlertButton, IAlertButtons, IAlertOptions, IShareContent, IShareOptions, IShareAction, IActionSheetIOSOptions, IShareActionSheetIOSOptions, IShareActionSheetError, IUrlEvent, II18nManagerConstants, IDisplayMetrics, IDisplayMetricsAndroid, IDimensionsPayload, IDimensionsSet, IDimensionsKey, IDimensionsChangeListener, IDimensionsStatic, IColorSchemeName, IColorSchemePreference, IAppStateStatus, IAppStateEvent, IKeyboardEventName, IKeyboardEvent, IKeyboardMetrics, IBackPressEventName, IBackPressHandler, IPermission, IPermissionStatus, IRationale, IAccessibilityChangeEvent, IAccessibilityChangeEventName, IAccessibilityChangeEventHandler, IAccessibilityAnnouncementFinishedEvent, IAnnounceForAccessibilityOptions, IAccessibilityEventType, ILayoutAnimationType, ILayoutAnimationProperty, ILayoutAnimationConfig, ILayoutAnimationAnim, IInteractionEvent, ISimpleTask, IPromiseTask, ITask, IHandle, IPanResponderGestureState, IPanResponderCallbacks, IGestureResponderHandlers, IPanResponderInstance, IPixelRatioStatic, IColorValue, IOpaqueColorValue, IDynamicColorIOSTuple, } from '@symbiote-native/engine';
|
|
26
30
|
export { dlog, isDebug, Platform, processColor, setColorProcessor, setDeviceEventSource, setNativeViewConfigSource, StyleSheet, } from '@symbiote-native/engine';
|
package/build/angular/index.js
CHANGED
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
// They stay EXPORTED because the composed components render them and ngtsc resolves a component's
|
|
17
17
|
// template dependencies to importable names (NG3004, the same rule that put the element directives
|
|
18
18
|
// back below). Retiring them means retiring them from those nine components first.
|
|
19
|
+
import './finalization-registry';
|
|
19
20
|
import './register';
|
|
20
21
|
export { anchorHostStyle, FlatList, HorizontalScrollContentView, HorizontalScrollView, Image, KeyboardAvoidingView, Modal, ScrollContentView, SectionList, stableAnchorStyle, SymbioteHostPropsDirective, SymbioteStyleInputDirective, Text, TouchableNativeFeedback, View, VirtualizedList, VirtualizedSectionList, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, VSectionFooterDirective, VSectionHeaderDirective, VSectionItemDirective, VSectionSeparatorDirective, } from './components';
|
|
21
22
|
export { Animated } from './modules/animated';
|
|
@@ -70,7 +71,10 @@ export { StatusBar } from './modules/status-bar';
|
|
|
70
71
|
// AppRegistry: RN's app entry point over `mount`. setHostRegistrar wires RN's own
|
|
71
72
|
// registrar so the native Fabric host finds our runnable by app key.
|
|
72
73
|
export { AppRegistry, setHostRegistrar } from './modules/app-registry';
|
|
73
|
-
export { ColorSchemeService, WindowDimensionsService } from './services';
|
|
74
|
+
export { ColorSchemeService, WindowDimensionsService, createResourceHook, createEventValueHook, connectWatchedSignal, PermissionsServiceBase, } from './services';
|
|
75
|
+
export { AccessibilityInputsBase } from './accessibility-inputs';
|
|
76
|
+
export { NativeViewBase } from './native-view-base';
|
|
77
|
+
export { anchorStyleProp } from './primitives/shared';
|
|
74
78
|
// Framework-agnostic runtime modules from @symbiote-native/engine. Every adapter re-exports them so
|
|
75
79
|
// app code names only @symbiote-native/angular.
|
|
76
80
|
export { Alert, Share, ActionSheetIOS, Linking, Vibration, ToastAndroid, Settings, I18nManager, Dimensions, Appearance, AppState, Keyboard, KEYBOARD_EVENT, BackHandler, PermissionsAndroid, PERMISSIONS, RESULTS, AccessibilityInfo, LayoutAnimation, InteractionManager, PanResponder, PixelRatio, PlatformColor, DynamicColorIOS, } from '@symbiote-native/engine';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,yGAAyG;AACzG,8FAA8F;AAC9F,sGAAsG;AACtG,EAAE;AACF,4FAA4F;AAC5F,wFAAwF;AACxF,EAAE;AACF,kFAAkF;AAClF,kGAAkG;AAClG,mGAAmG;AACnG,EAAE;AACF,mGAAmG;AACnG,sGAAsG;AACtG,oFAAoF;AACpF,EAAE;AACF,kGAAkG;AAClG,mGAAmG;AACnG,mFAAmF;AAEnF,OAAO,yBAAyB,CAAC;AACjC,OAAO,YAAY,CAAC;AAEpB,OAAO,EACL,eAAe,EACf,QAAQ,EACR,2BAA2B,EAC3B,oBAAoB,EACpB,KAAK,EACL,oBAAoB,EACpB,KAAK,EACL,iBAAiB,EACjB,WAAW,EACX,iBAAiB,EACjB,0BAA0B,EAC1B,2BAA2B,EAC3B,IAAI,EACJ,uBAAuB,EACvB,IAAI,EACJ,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,0BAA0B,GAC3B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,mGAAmG;AACnG,wFAAwF;AACxF,iEAAiE;AACjE,wGAAwG;AACxG,yGAAyG;AACzG,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,kBAAkB,EAClB,mBAAmB,EACnB,YAAY,EACZ,YAAY,GACb,MAAM,oBAAoB,CAAC;AAC5B,yFAAyF;AACzF,iGAAiG;AACjG,gGAAgG;AAChG,gGAAgG;AAChG,4FAA4F;AAC5F,gGAAgG;AAChG,iFAAiF;AACjF,mGAAmG;AACnG,8FAA8F;AAC9F,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AA+D7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,2FAA2F;AAC3F,gGAAgG;AAChG,2FAA2F;AAC3F,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,+BAA+B,EAC/B,aAAa,EACb,8BAA8B,EAC9B,2BAA2B,EAC3B,sBAAsB,EACtB,YAAY,EACZ,yBAAyB,EACzB,YAAY,EACZ,yBAAyB,EACzB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,iBAAiB,EACjB,mBAAmB,EACnB,aAAa,EACb,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,sBAAsB,EACtB,yBAAyB,EACzB,8BAA8B,EAC9B,uBAAuB,EACvB,+BAA+B,EAC/B,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,qGAAqG;AACrG,oGAAoG;AACpG,mGAAmG;AACnG,mGAAmG;AACnG,OAAO,EACL,2BAA2B,EAC3B,oBAAoB,GACrB,MAAM,iBAAiB,CAAC;AAMzB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1C,wFAAwF;AACxF,6DAA6D;AAC7D,mHAAmH;AACnH,iDAAiD;AACjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAC3D,0FAA0F;AAC1F,wFAAwF;AACxF,0FAA0F;AAC1F,0FAA0F;AAC1F,8FAA8F;AAC9F,QAAQ;AACR,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AACzE,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,SAAS,GAEV,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACvE,iGAAiG;AACjG,kGAAkG;AAClG,gGAAgG;AAChG,UAAU;AACV,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAEjD,kFAAkF;AAClF,qEAAqE;AACrE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAavE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,oGAAoG;AACpG,gDAAgD;AAChD,OAAO,EACL,KAAK,EACL,KAAK,EACL,cAAc,EACd,OAAO,EACP,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,UAAU,EACV,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,cAAc,EACd,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,OAAO,EACP,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,YAAY,EACZ,UAAU,EACV,aAAa,EACb,eAAe,GAChB,MAAM,yBAAyB,CAAC;AA0DjC,OAAO,EACL,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,oBAAoB,EACpB,yBAAyB,EACzB,UAAU,GACX,MAAM,yBAAyB,CAAC;AAoCjC,gGAAgG;AAChG,kGAAkG;AAClG,mFAAmF;AACnF,OAAO,EACL,kBAAkB,EAClB,wBAAwB,EACxB,uBAAuB,GACxB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { IDescriptor } from '@symbiote-native/components';
|
|
2
|
+
import type { IStyleProp, ISymbioteEvent, IViewStyle } from '@symbiote-native/engine';
|
|
3
|
+
import { AccessibilityInputsBase } from './accessibility-inputs';
|
|
4
|
+
import * as i0 from "@angular/core";
|
|
5
|
+
export declare abstract class NativeViewBase extends AccessibilityInputsBase {
|
|
6
|
+
style?: IStyleProp<IViewStyle>;
|
|
7
|
+
testID?: string;
|
|
8
|
+
nativeID?: string;
|
|
9
|
+
onLayout?: (event: ISymbioteEvent) => void;
|
|
10
|
+
onAccessibilityTap?: (event: ISymbioteEvent) => void;
|
|
11
|
+
onMagicTap?: (event: ISymbioteEvent) => void;
|
|
12
|
+
onAccessibilityEscape?: (event: ISymbioteEvent) => void;
|
|
13
|
+
private readonly elementRef;
|
|
14
|
+
protected abstract readonly propNames: readonly string[];
|
|
15
|
+
protected abstract renderView(props: object): IDescriptor | null;
|
|
16
|
+
get descriptor(): IDescriptor | null;
|
|
17
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<NativeViewBase, never>;
|
|
18
|
+
static ɵdir: i0.ɵɵDirectiveDeclaration<NativeViewBase, never, never, { "style": { "alias": "style"; "required": false; }; "testID": { "alias": "testID"; "required": false; }; "nativeID": { "alias": "nativeID"; "required": false; }; "onLayout": { "alias": "onLayout"; "required": false; }; "onAccessibilityTap": { "alias": "onAccessibilityTap"; "required": false; }; "onMagicTap": { "alias": "onMagicTap"; "required": false; }; "onAccessibilityEscape": { "alias": "onAccessibilityEscape"; "required": false; }; }, {}, never, never, true, never>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { Directive, ElementRef, inject, Input } from '@angular/core';
|
|
2
|
+
import { resolveAccessibilityProps } from '@symbiote-native/components';
|
|
3
|
+
import { AccessibilityInputsBase } from './accessibility-inputs';
|
|
4
|
+
import { anchorStyleProp } from './primitives/shared';
|
|
5
|
+
import * as i0 from "@angular/core";
|
|
6
|
+
// Shared shell of a component that paints one Expo native view: the common inputs, the anchor
|
|
7
|
+
// host `class="..."` resolves onto, and a descriptor that recomputes on every OnPush check
|
|
8
|
+
export class NativeViewBase extends AccessibilityInputsBase {
|
|
9
|
+
constructor() {
|
|
10
|
+
super(...arguments);
|
|
11
|
+
// This component's own `ElementRef`, the anchor a `class="..."` at the use site lands on
|
|
12
|
+
this.elementRef = inject(ElementRef);
|
|
13
|
+
}
|
|
14
|
+
get descriptor() {
|
|
15
|
+
return this.renderView(resolveAccessibilityProps({
|
|
16
|
+
...this.accessibilityInputProps(),
|
|
17
|
+
...Object.fromEntries(this.propNames.map(name => [name, Reflect.get(this, name)])),
|
|
18
|
+
// Ambient class style first, so an explicit `style` input wins
|
|
19
|
+
style: [anchorStyleProp(this.elementRef), this.style],
|
|
20
|
+
testID: this.testID,
|
|
21
|
+
nativeID: this.nativeID,
|
|
22
|
+
onLayout: this.onLayout,
|
|
23
|
+
onAccessibilityTap: this.onAccessibilityTap,
|
|
24
|
+
onMagicTap: this.onMagicTap,
|
|
25
|
+
onAccessibilityEscape: this.onAccessibilityEscape,
|
|
26
|
+
}));
|
|
27
|
+
}
|
|
28
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NativeViewBase, deps: null, target: i0.ɵɵFactoryTarget.Directive }); }
|
|
29
|
+
static { this.ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: NativeViewBase, isStandalone: true, inputs: { style: "style", testID: "testID", nativeID: "nativeID", onLayout: "onLayout", onAccessibilityTap: "onAccessibilityTap", onMagicTap: "onMagicTap", onAccessibilityEscape: "onAccessibilityEscape" }, usesInheritance: true, ngImport: i0 }); }
|
|
30
|
+
}
|
|
31
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: NativeViewBase, decorators: [{
|
|
32
|
+
type: Directive
|
|
33
|
+
}], propDecorators: { style: [{
|
|
34
|
+
type: Input
|
|
35
|
+
}], testID: [{
|
|
36
|
+
type: Input
|
|
37
|
+
}], nativeID: [{
|
|
38
|
+
type: Input
|
|
39
|
+
}], onLayout: [{
|
|
40
|
+
type: Input
|
|
41
|
+
}], onAccessibilityTap: [{
|
|
42
|
+
type: Input
|
|
43
|
+
}], onMagicTap: [{
|
|
44
|
+
type: Input
|
|
45
|
+
}], onAccessibilityEscape: [{
|
|
46
|
+
type: Input
|
|
47
|
+
}] } });
|
|
48
|
+
//# sourceMappingURL=native-view-base.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"native-view-base.js","sourceRoot":"","sources":["../../src/native-view-base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAOxE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;;AAEtD,8FAA8F;AAC9F,2FAA2F;AAE3F,MAAM,OAAgB,cAAe,SAAQ,uBAAuB;IADpE;;QAUE,yFAAyF;QACxE,eAAU,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;KA0BlD;IAlBC,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,CACpB,yBAAyB,CAAC;YACxB,GAAG,IAAI,CAAC,uBAAuB,EAAE;YACjC,GAAG,MAAM,CAAC,WAAW,CACnB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAC5D;YACD,+DAA+D;YAC/D,KAAK,EAAE,CAAC,eAAe,CAAa,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC;YACjE,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,kBAAkB,EAAE,IAAI,CAAC,kBAAkB;YAC3C,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;SAClD,CAAC,CACH,CAAC;IACJ,CAAC;8GAnCmB,cAAc;kGAAd,cAAc;;2FAAd,cAAc;kBADnC,SAAS;;sBAEP,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import { type IRootTag, type SymbioteSurface } from '@symbiote-native/engine';
|
|
2
|
-
import { type Type } from '@angular/core';
|
|
2
|
+
import { type EnvironmentProviders, type Provider, type Type } from '@angular/core';
|
|
3
3
|
export interface IMountOptions {
|
|
4
4
|
initialProps?: object;
|
|
5
5
|
wrapperComponent?: Type<unknown>;
|
|
6
6
|
}
|
|
7
|
+
export declare function setRootProviders(providers: (Provider | EnvironmentProviders)[]): void;
|
|
7
8
|
export declare function mount(rootTag: IRootTag, rootComponent: Type<unknown>, options?: IMountOptions): SymbioteSurface;
|
|
8
9
|
export declare function unmount(rootTag: IRootTag): void;
|
|
9
10
|
declare global {
|
|
@@ -67,6 +67,11 @@ class SymbioteErrorHandler extends ErrorHandler {
|
|
|
67
67
|
reportUncaughtError(error, { origin: 'angular render' });
|
|
68
68
|
}
|
|
69
69
|
}
|
|
70
|
+
// App-level providers (`provideHttpClient()` and the like), set once at bootstrap
|
|
71
|
+
let rootProviders = [];
|
|
72
|
+
export function setRootProviders(providers) {
|
|
73
|
+
rootProviders = providers;
|
|
74
|
+
}
|
|
70
75
|
function applyInputs(cmpRef, initialProps) {
|
|
71
76
|
if (initialProps === undefined)
|
|
72
77
|
return;
|
|
@@ -123,26 +128,13 @@ function settleAngularDevMode() {
|
|
|
123
128
|
return;
|
|
124
129
|
enableProdMode();
|
|
125
130
|
}
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
{
|
|
134
|
-
provide: RendererFactory2,
|
|
135
|
-
useValue: rendererFactory,
|
|
136
|
-
},
|
|
137
|
-
// `getElementById` is not decoration: `resource()` resolves TransferState, whose root
|
|
138
|
-
// factory runs `retrieveTransferredState(doc, appId)` ->
|
|
139
|
-
// `doc.getElementById(appId + '-state')` (core/src/transfer_state.ts:156) to pick up
|
|
140
|
-
// server-rendered state. A stub without it makes that a TypeError, and because the throw
|
|
141
|
-
// happens while the component is being constructed, the ENTIRE screen renders nothing —
|
|
142
|
-
// white body under a native header that navigation drew anyway, no error surfaced. The
|
|
143
|
-
// `optional: true` on the injector lookup does not help: the token resolves, its factory
|
|
144
|
-
// is what throws. Returning null is the honest client answer — there is no server here, so
|
|
145
|
-
// `script?.tagName` short-circuits and the caller gets `{}`.
|
|
131
|
+
// Kept apart from `mount` so the provider list reads as one block
|
|
132
|
+
function createRootInjector(surface, rendererFactory) {
|
|
133
|
+
return createEnvironmentInjector([
|
|
134
|
+
...rootProviders,
|
|
135
|
+
{ provide: RendererFactory2, useValue: rendererFactory },
|
|
136
|
+
// `resource()` resolves TransferState, which calls `doc.getElementById`
|
|
137
|
+
// a stub without it throws mid-construction and the whole screen renders nothing
|
|
146
138
|
{
|
|
147
139
|
provide: DOCUMENT,
|
|
148
140
|
useValue: {
|
|
@@ -151,69 +143,50 @@ export function mount(rootTag, rootComponent, options) {
|
|
|
151
143
|
getElementById: () => null,
|
|
152
144
|
},
|
|
153
145
|
},
|
|
154
|
-
//
|
|
155
|
-
// only (see EnvironmentNgModuleRefAdapter), so providedIn:'root' tokens — ApplicationRef
|
|
156
|
-
// included — never resolve (R3Injector.get walks up for a `scopes` containing 'root', and
|
|
157
|
-
// a null parent always dead-ends in NullInjector). platform-browser solves this the same
|
|
158
|
-
// way for real DOM apps via BROWSER_MODULE_PROVIDERS: hand { provide: INJECTOR_SCOPE,
|
|
159
|
-
// useValue: 'root' } to the app-level providers, which R3Injector's constructor reads to
|
|
160
|
-
// self-tag this.scopes with 'root'. Same trick here, no PlatformRef, no DOM.
|
|
146
|
+
// A null-parent injector is not root-scoped, so `providedIn: 'root'` tokens never resolve
|
|
161
147
|
{ provide: INJECTOR_SCOPE, useValue: 'root' },
|
|
162
|
-
//
|
|
163
|
-
// ApplicationRef.afterTick) + NoopNgZone + ZONELESS_ENABLED: true — the exact bundle
|
|
164
|
-
// internalCreateApplication() uses. Replaces the old unconditional
|
|
165
|
-
// `rootView.detectChanges(); cmpView.detectChanges()` (force-ran both root views on every
|
|
166
|
-
// tick) with Angular's own tick(), which only enters a view something actually marked
|
|
167
|
-
// dirty. This does NOT stop the root's own template from re-running on a plain press or
|
|
168
|
-
// `markForCheck()` anywhere in the tree — `markViewDirty` unconditionally sets RefreshView
|
|
169
|
-
// on every ancestor up to the root; that's fundamental Angular zoneless behavior, not
|
|
170
|
-
// something this swap changes. A genuine child `@Component` boundary still protects a
|
|
171
|
-
// sibling branch from an unrelated press.
|
|
148
|
+
// Real microtask-batched scheduler plus a noop zone, so `appRef.tick()` drives the views
|
|
172
149
|
...provideZonelessChangeDetectionInternal(),
|
|
173
|
-
// Angular's
|
|
174
|
-
// `injector.get(ErrorHandler)`; a normal `bootstrapApplication` registers that token by
|
|
175
|
-
// default, but our from-scratch environment injector never did, so the lookup itself threw
|
|
176
|
-
// NG0201 and replaced the real error with "No provider found for ErrorHandler" — any async
|
|
177
|
-
// tick() exception crashed hard, uncaught, instead of being reported. The token still has to
|
|
178
|
-
// be provided for exactly that reason; what it resolves to is now SymbioteErrorHandler
|
|
179
|
-
// (see above), which reports through the engine instead of Angular's `console.error('ERROR',
|
|
180
|
-
// e)` and, like the default, returns rather than rethrows so the app keeps running.
|
|
150
|
+
// Angular's `tick()` looks up `ErrorHandler`, and a from-scratch injector has none (NG0201)
|
|
181
151
|
{ provide: ErrorHandler, useClass: SymbioteErrorHandler },
|
|
182
152
|
ColorSchemeService,
|
|
183
153
|
WindowDimensionsService,
|
|
184
154
|
], rootInjectorParent());
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
cmpRef = createComponent(rootComponent, {
|
|
192
|
-
environmentInjector: injector,
|
|
193
|
-
hostElement: asAngularHost(surface),
|
|
194
|
-
});
|
|
195
|
-
applyInputs(cmpRef, options?.initialProps);
|
|
196
|
-
}
|
|
197
|
-
else {
|
|
198
|
-
// The root gets its own host node from the renderer (createComponent without a
|
|
199
|
-
// hostElement) but is not attached to the surface directly; it is handed to the
|
|
200
|
-
// wrapper as projectable content instead, so only the wrapper needs a real host.
|
|
201
|
-
const rootHost = asAngularHost(createDetachedViewHost());
|
|
202
|
-
rootRef = createComponent(rootComponent, {
|
|
203
|
-
environmentInjector: injector,
|
|
204
|
-
hostElement: rootHost,
|
|
205
|
-
});
|
|
206
|
-
applyInputs(rootRef, options.initialProps);
|
|
207
|
-
cmpRef = createComponent(options.wrapperComponent, {
|
|
155
|
+
}
|
|
156
|
+
function createRoots(injector, surface, rootComponent, options) {
|
|
157
|
+
const { wrapperComponent, initialProps } = options ?? {};
|
|
158
|
+
// `hostElement` is the surface, content commits straight into it with no wrapper view
|
|
159
|
+
if (wrapperComponent === undefined) {
|
|
160
|
+
const cmpRef = createComponent(rootComponent, {
|
|
208
161
|
environmentInjector: injector,
|
|
209
162
|
hostElement: asAngularHost(surface),
|
|
210
|
-
projectableNodes: [[rootHost]],
|
|
211
163
|
});
|
|
164
|
+
applyInputs(cmpRef, initialProps);
|
|
165
|
+
return { cmpRef, rootRef: undefined };
|
|
212
166
|
}
|
|
213
|
-
//
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
167
|
+
// The root gets its own host and reaches the wrapper as projected content
|
|
168
|
+
const rootHost = asAngularHost(createDetachedViewHost());
|
|
169
|
+
const rootRef = createComponent(rootComponent, {
|
|
170
|
+
environmentInjector: injector,
|
|
171
|
+
hostElement: rootHost,
|
|
172
|
+
});
|
|
173
|
+
applyInputs(rootRef, initialProps);
|
|
174
|
+
const cmpRef = createComponent(wrapperComponent, {
|
|
175
|
+
environmentInjector: injector,
|
|
176
|
+
hostElement: asAngularHost(surface),
|
|
177
|
+
projectableNodes: [[rootHost]],
|
|
178
|
+
});
|
|
179
|
+
return { cmpRef, rootRef };
|
|
180
|
+
}
|
|
181
|
+
export function mount(rootTag, rootComponent, options) {
|
|
182
|
+
settleAngularDevMode();
|
|
183
|
+
// A re-mount on a live rootTag starts clean; otherwise the stale app double-drives the surface.
|
|
184
|
+
teardown(rootTag);
|
|
185
|
+
const surface = createSurface(rootTag);
|
|
186
|
+
const rendererFactory = new SymbioteRendererFactory(surface);
|
|
187
|
+
const injector = createRootInjector(surface, rendererFactory);
|
|
188
|
+
const { cmpRef, rootRef } = createRoots(injector, surface, rootComponent, options);
|
|
189
|
+
// `tick()` then drives both root views through the real scheduler
|
|
217
190
|
const appRef = injector.get(ApplicationRef);
|
|
218
191
|
appRef.attachView(cmpRef.hostView);
|
|
219
192
|
if (rootRef !== undefined) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/render/index.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,yFAAyF;AACzF,2FAA2F;AAC3F,oFAAoF;AACpF,8EAA8E;AAC9E,8BAA8B;AAE9B,OAAO,EACL,aAAa,IAAI,mBAAmB,EACpC,aAAa,EACb,WAAW,EACX,IAAI,EACJ,mBAAmB,EACnB,gBAAgB,GAIjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,eAAe,IAAI,cAAc,EACjC,uCAAuC,IAAI,sCAAsC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/render/index.ts"],"names":[],"mappings":"AAAA,qFAAqF;AACrF,yFAAyF;AACzF,2FAA2F;AAC3F,oFAAoF;AACpF,8EAA8E;AAC9E,8BAA8B;AAE9B,OAAO,EACL,aAAa,IAAI,mBAAmB,EACpC,aAAa,EACb,WAAW,EACX,IAAI,EACJ,mBAAmB,EACnB,gBAAgB,GAIjB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EACL,cAAc,EACd,eAAe,EACf,yBAAyB,EACzB,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,gBAAgB,EAChB,eAAe,IAAI,cAAc,EACjC,uCAAuC,IAAI,sCAAsC,GAMlF,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAE1E,0FAA0F;AAC1F,4FAA4F;AAC5F,6FAA6F;AAC7F,qFAAqF;AACrF,6FAA6F;AAC7F,0FAA0F;AAC1F,2CAA2C;AAC3C,SAAS,kBAAkB;IACzB,OAAO,IAAsC,CAAC;AAChD,CAAC;AACD,SAAS,aAAa,CAAC,QAAyC;IAC9D,yFAAyF;IACzF,uFAAuF;IACvF,wCAAwC;IACxC,MAAM,CAAC,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE;QACzC,YAAY,EAAE,IAAI;QAClB,KAAK,EAAE,eAAe;KACvB,CAAC,CAAC;IACH,OAAO,QAA8B,CAAC;AACxC,CAAC;AAED,mFAAmF;AACnF,+FAA+F;AAC/F,6FAA6F;AAC7F,8FAA8F;AAC9F,4FAA4F;AAC5F,8FAA8F;AAC9F,yCAAyC;AACzC,SAAS,sBAAsB;IAC7B,2EAA2E;IAC3E,4FAA4F;IAC5F,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;IACzC,OAAO,gBAAgB,CACrB,mBAAmB,CAAC,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,CAC7D,CAAC;AACJ,CAAC;AAED,iGAAiG;AACjG,mGAAmG;AACnG,6FAA6F;AAC7F,kGAAkG;AAClG,qBAAqB;AACrB,EAAE;AACF,qFAAqF;AACrF,kGAAkG;AAClG,8FAA8F;AAC9F,8FAA8F;AAC9F,+FAA+F;AAC/F,0FAA0F;AAC1F,+DAA+D;AAC/D,EAAE;AACF,+FAA+F;AAC/F,iGAAiG;AACjG,2FAA2F;AAC3F,mGAAmG;AACnG,kGAAkG;AAClG,cAAc;AACd,MAAM,oBAAqB,SAAQ,YAAY;IACpC,WAAW,CAAC,KAAc;QACjC,mBAAmB,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC3D,CAAC;CACF;AAwBD,kFAAkF;AAClF,IAAI,aAAa,GAAwC,EAAE,CAAC;AAE5D,MAAM,UAAU,gBAAgB,CAC9B,SAA8C;IAE9C,aAAa,GAAG,SAAS,CAAC;AAC5B,CAAC;AAED,SAAS,WAAW,CAClB,MAA6B,EAC7B,YAAgC;IAEhC,IAAI,YAAY,KAAK,SAAS;QAAE,OAAO;IACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACxD,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,kFAAkF;AAClF,2FAA2F;AAC3F,+DAA+D;AAC/D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;AAE9C,SAAS,QAAQ,CAAC,OAAiB;IACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC9B,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO;IAC9B,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC;IACvB,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;IACrB,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;IACvB,0FAA0F;IAC1F,+DAA+D;IAC/D,GAAG,CAAC,eAAe,CAAC,OAAO,EAAE,CAAC;IAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrB,WAAW,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAYD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,SAAS,oBAAoB;IAC3B,IAAI,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,KAAK,KAAK;QAAE,OAAO;IAChE,cAAc,EAAE,CAAC;AACnB,CAAC;AAED,kEAAkE;AAClE,SAAS,kBAAkB,CACzB,OAAwB,EACxB,eAAwC;IAExC,OAAO,yBAAyB,CAC9B;QACE,GAAG,aAAa;QAChB,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,eAAe,EAAE;QACxD,wEAAwE;QACxE,iFAAiF;QACjF;YACE,OAAO,EAAE,QAAQ;YACjB,QAAQ,EAAE;gBACR,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,OAAO;gBACb,cAAc,EAAE,GAAS,EAAE,CAAC,IAAI;aACjC;SACF;QACD,0FAA0F;QAC1F,EAAE,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE;QAC7C,yFAAyF;QACzF,GAAG,sCAAsC,EAAE;QAC3C,4FAA4F;QAC5F,EAAE,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,oBAAoB,EAAE;QACzD,kBAAkB;QAClB,uBAAuB;KACxB,EACD,kBAAkB,EAAE,CACrB,CAAC;AACJ,CAAC;AAOD,SAAS,WAAW,CAClB,QAA6B,EAC7B,OAAwB,EACxB,aAA4B,EAC5B,OAAkC;IAElC,MAAM,EAAE,gBAAgB,EAAE,YAAY,EAAE,GAAG,OAAO,IAAI,EAAE,CAAC;IACzD,sFAAsF;IACtF,IAAI,gBAAgB,KAAK,SAAS,EAAE,CAAC;QACnC,MAAM,MAAM,GAAG,eAAe,CAAU,aAAa,EAAE;YACrD,mBAAmB,EAAE,QAAQ;YAC7B,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC;SACpC,CAAC,CAAC;QACH,WAAW,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAClC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;IACxC,CAAC;IACD,0EAA0E;IAC1E,MAAM,QAAQ,GAAG,aAAa,CAAC,sBAAsB,EAAE,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,eAAe,CAAU,aAAa,EAAE;QACtD,mBAAmB,EAAE,QAAQ;QAC7B,WAAW,EAAE,QAAQ;KACtB,CAAC,CAAC;IACH,WAAW,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,eAAe,CAAU,gBAAgB,EAAE;QACxD,mBAAmB,EAAE,QAAQ;QAC7B,WAAW,EAAE,aAAa,CAAC,OAAO,CAAC;QACnC,gBAAgB,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC;KAC/B,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,KAAK,CACnB,OAAiB,EACjB,aAA4B,EAC5B,OAAuB;IAEvB,oBAAoB,EAAE,CAAC;IACvB,gGAAgG;IAChG,QAAQ,CAAC,OAAO,CAAC,CAAC;IAElB,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACvC,MAAM,eAAe,GAAG,IAAI,uBAAuB,CAAC,OAAO,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IAC9D,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,WAAW,CACrC,QAAQ,EACR,OAAO,EACP,aAAa,EACb,OAAO,CACR,CAAC;IAEF,kEAAkE;IAClE,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5C,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACnC,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,CAAC,sBAAsB,OAAO,EAAE,CAAC,CAAC;IACtC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,cAAc;IAC7B,OAAO,CAAC,aAAa,EAAE,CAAC;IAExB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;IAClE,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,qFAAqF;AACrF,uEAAuE;AACvE,MAAM,UAAU,OAAO,CAAC,OAAiB;IACvC,IAAI,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACpB,CAAC;AAWD,SAAS,wBAAwB;IAC/B,UAAU,CAAC,cAAc,GAAG,CAAC,SAAiB,EAAQ,EAAE;QACtD,OAAO,CAAC,SAAS,CAAC,CAAC;IACrB,CAAC,CAAC;IACF,IAAI,CAAC,iCAAiC,CAAC,CAAC;AAC1C,CAAC;AAED,wBAAwB,EAAE,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// A signal fed by a `watch` subscription that lives as long as the injector's owner
|
|
2
|
+
import { effect, signal } from '@angular/core';
|
|
3
|
+
export function connectWatchedSignal(injector, initial, watch) {
|
|
4
|
+
const value = signal(initial, /* @ts-ignore */
|
|
5
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
6
|
+
effect(onCleanup => onCleanup(watch(next => value.set(next))), { injector });
|
|
7
|
+
return value.asReadonly();
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=connect-watched-signal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-watched-signal.js","sourceRoot":"","sources":["../../../src/services/connect-watched-signal.ts"],"names":[],"mappings":"AAAA,oFAAoF;AAEpF,OAAO,EAAE,MAAM,EAAE,MAAM,EAA8B,MAAM,eAAe,CAAC;AAE3E,MAAM,UAAU,oBAAoB,CAClC,QAAkB,EAClB,OAAU,EACV,KAA8C;IAE9C,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO;8EAAC,CAAC;IAE9B,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;IAE7E,OAAO,KAAK,CAAC,UAAU,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { type Signal } from '@angular/core';
|
|
2
|
+
import type { IEventValueSource } from '@symbiote-native/engine';
|
|
3
|
+
export declare function createEventValueHook<TSource extends IEventValueSource<TValue, TEvent>, TValue, TEvent extends string = string>(event: TEvent, getValue: (source: TSource) => TValue): (getSource: () => TSource) => Signal<TValue>;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Every `useXStatus`-style `injectX` (`injectAudioPlayerStatus`, ...) binds this to its own
|
|
2
|
+
// event name + initial-value getter instead of repeating the signal/effect wiring
|
|
3
|
+
import { effect, signal } from '@angular/core';
|
|
4
|
+
export function createEventValueHook(event, getValue) {
|
|
5
|
+
return function injectValue(getSource) {
|
|
6
|
+
const value = signal(getValue(getSource()), /* @ts-ignore */
|
|
7
|
+
...(ngDevMode ? [{ debugName: "value" }] : /* istanbul ignore next */ []));
|
|
8
|
+
effect(onCleanup => {
|
|
9
|
+
const source = getSource();
|
|
10
|
+
value.set(getValue(source));
|
|
11
|
+
const subscription = source.addListener(event, next => value.set(next));
|
|
12
|
+
onCleanup(() => subscription.remove());
|
|
13
|
+
});
|
|
14
|
+
return value.asReadonly();
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=create-event-value-hook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-event-value-hook.js","sourceRoot":"","sources":["../../../src/services/create-event-value-hook.ts"],"names":[],"mappings":"AAAA,4FAA4F;AAC5F,kFAAkF;AAElF,OAAO,EAAE,MAAM,EAAE,MAAM,EAAe,MAAM,eAAe,CAAC;AAG5D,MAAM,UAAU,oBAAoB,CAIlC,KAAa,EAAE,QAAqC;IACpD,OAAO,SAAS,WAAW,CAAC,SAAwB;QAClD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,EAAE,CAAC;kFAAC,CAAC;QAE5C,MAAM,CAAC,SAAS,CAAC,EAAE;YACjB,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;YAC3B,KAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5B,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YACxE,SAAS,CAAC,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,OAAO,KAAK,CAAC,UAAU,EAAE,CAAC;IAC5B,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { type Signal } from '@angular/core';
|
|
2
|
+
export type IResourceHookController<TArgs extends unknown[], TResource> = {
|
|
3
|
+
resolve: (...args: TArgs) => TResource;
|
|
4
|
+
flushDispose: () => void;
|
|
5
|
+
dispose: () => void;
|
|
6
|
+
};
|
|
7
|
+
export declare function createResourceHook<TArgs extends unknown[], TResource>(createController: () => IResourceHookController<TArgs, TResource>): (getArgs: () => TArgs) => Signal<TResource>;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
// Every `useReleasingSharedObject`-style `injectX` (`injectAudioPlayer`, `injectImageManipulator`,
|
|
2
|
+
// ...) binds this to its own `createXController()` factory instead of repeating the wiring
|
|
3
|
+
import { DestroyRef, effect, inject, signal } from '@angular/core';
|
|
4
|
+
export function createResourceHook(createController) {
|
|
5
|
+
return function injectResource(getArgs) {
|
|
6
|
+
const controller = createController();
|
|
7
|
+
const resource = signal(controller.resolve(...getArgs()), /* @ts-ignore */
|
|
8
|
+
...(ngDevMode ? [{ debugName: "resource" }] : /* istanbul ignore next */ []));
|
|
9
|
+
effect(() => {
|
|
10
|
+
resource.set(controller.resolve(...getArgs()));
|
|
11
|
+
});
|
|
12
|
+
effect(() => {
|
|
13
|
+
resource();
|
|
14
|
+
controller.flushDispose();
|
|
15
|
+
});
|
|
16
|
+
inject(DestroyRef).onDestroy(() => controller.dispose());
|
|
17
|
+
return resource.asReadonly();
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=create-resource-hook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-resource-hook.js","sourceRoot":"","sources":["../../../src/services/create-resource-hook.ts"],"names":[],"mappings":"AAAA,mGAAmG;AACnG,2FAA2F;AAE3F,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAe,MAAM,eAAe,CAAC;AAQhF,MAAM,UAAU,kBAAkB,CAChC,gBAAiE;IAEjE,OAAO,SAAS,cAAc,CAAC,OAAoB;QACjD,MAAM,UAAU,GAAG,gBAAgB,EAAE,CAAC;QACtC,MAAM,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE,CAAC;qFAAC,CAAC;QAE1D,MAAM,CAAC,GAAG,EAAE;YACV,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,GAAG,OAAO,EAAE,CAAC,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,GAAG,EAAE;YACV,QAAQ,EAAE,CAAC;YACX,UAAU,CAAC,YAAY,EAAE,CAAC;QAC5B,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;QAEzD,OAAO,QAAQ,CAAC,UAAU,EAAE,CAAC;IAC/B,CAAC,CAAC;AACJ,CAAC"}
|