@symbiote-native/angular 0.6.2 → 0.7.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/bin/symbiote-angular-dev.cjs +20 -19
- package/build/angular/anchor-host-registry.js +2 -2
- package/build/angular/anchor-host-registry.js.map +1 -1
- package/build/angular/components/activity-indicator/index.android.d.ts +2 -1
- package/build/angular/components/activity-indicator/index.android.js +6 -3
- package/build/angular/components/activity-indicator/index.android.js.map +1 -1
- package/build/angular/components/activity-indicator/index.ios.d.ts +2 -1
- package/build/angular/components/activity-indicator/index.ios.js +6 -3
- package/build/angular/components/activity-indicator/index.ios.js.map +1 -1
- package/build/angular/components/activity-indicator/shared.js +3 -3
- package/build/angular/components/button.d.ts +4 -2
- package/build/angular/components/button.js +28 -17
- package/build/angular/components/button.js.map +1 -1
- package/build/angular/components/flat-list/index.d.ts +5 -3
- package/build/angular/components/flat-list/index.js +35 -38
- package/build/angular/components/flat-list/index.js.map +1 -1
- package/build/angular/components/image/index.android.d.ts +8 -3
- package/build/angular/components/image/index.android.js +39 -9
- package/build/angular/components/image/index.android.js.map +1 -1
- package/build/angular/components/image/index.ios.d.ts +8 -3
- package/build/angular/components/image/index.ios.js +39 -9
- package/build/angular/components/image/index.ios.js.map +1 -1
- package/build/angular/components/image/shared.d.ts +4 -1
- package/build/angular/components/image/shared.js +33 -2
- package/build/angular/components/image/shared.js.map +1 -1
- package/build/angular/components/image-background.d.ts +2 -1
- package/build/angular/components/image-background.js +6 -4
- package/build/angular/components/image-background.js.map +1 -1
- package/build/angular/components/input-accessory-view/index.d.ts +9 -4
- package/build/angular/components/input-accessory-view/index.js +43 -9
- package/build/angular/components/input-accessory-view/index.js.map +1 -1
- package/build/angular/components/keyboard-avoiding-view/index.d.ts +2 -1
- package/build/angular/components/keyboard-avoiding-view/index.js +6 -4
- package/build/angular/components/keyboard-avoiding-view/index.js.map +1 -1
- package/build/angular/components/modal/index.d.ts +11 -8
- package/build/angular/components/modal/index.js +45 -28
- package/build/angular/components/modal/index.js.map +1 -1
- package/build/angular/components/pressable/index.d.ts +11 -5
- package/build/angular/components/pressable/index.js +61 -12
- package/build/angular/components/pressable/index.js.map +1 -1
- package/build/angular/components/refresh-control/index.d.ts +8 -4
- package/build/angular/components/refresh-control/index.js +52 -16
- package/build/angular/components/refresh-control/index.js.map +1 -1
- package/build/angular/components/safe-area-view/index.d.ts +9 -4
- package/build/angular/components/safe-area-view/index.js +46 -9
- package/build/angular/components/safe-area-view/index.js.map +1 -1
- package/build/angular/components/scroll-view/index.android.d.ts +2 -3
- package/build/angular/components/scroll-view/index.android.js +49 -52
- package/build/angular/components/scroll-view/index.android.js.map +1 -1
- package/build/angular/components/scroll-view/index.ios.d.ts +2 -3
- package/build/angular/components/scroll-view/index.ios.js +15 -17
- package/build/angular/components/scroll-view/index.ios.js.map +1 -1
- package/build/angular/components/scroll-view/projection.d.ts +3 -0
- package/build/angular/components/scroll-view/projection.js +68 -7
- package/build/angular/components/scroll-view/projection.js.map +1 -1
- package/build/angular/components/scroll-view/shared.d.ts +14 -5
- package/build/angular/components/scroll-view/shared.js +198 -69
- package/build/angular/components/scroll-view/shared.js.map +1 -1
- package/build/angular/components/scroll-view/sticky-header.js +14 -19
- package/build/angular/components/scroll-view/sticky-header.js.map +1 -1
- package/build/angular/components/section-list/index.d.ts +2 -1
- package/build/angular/components/section-list/index.js +31 -39
- package/build/angular/components/section-list/index.js.map +1 -1
- package/build/angular/components/switch/index.android.d.ts +7 -3
- package/build/angular/components/switch/index.android.js +38 -10
- package/build/angular/components/switch/index.android.js.map +1 -1
- package/build/angular/components/switch/index.ios.d.ts +7 -3
- package/build/angular/components/switch/index.ios.js +38 -10
- package/build/angular/components/switch/index.ios.js.map +1 -1
- package/build/angular/components/switch/shared.d.ts +12 -3
- package/build/angular/components/switch/shared.js +66 -5
- package/build/angular/components/switch/shared.js.map +1 -1
- package/build/angular/components/text-input.d.ts +10 -2
- package/build/angular/components/text-input.js +46 -6
- package/build/angular/components/text-input.js.map +1 -1
- package/build/angular/components/touchable/index.d.ts +17 -8
- package/build/angular/components/touchable/index.js +78 -19
- package/build/angular/components/touchable/index.js.map +1 -1
- package/build/angular/components/touchable-native-feedback/index.d.ts +6 -3
- package/build/angular/components/touchable-native-feedback/index.js +61 -25
- package/build/angular/components/touchable-native-feedback/index.js.map +1 -1
- package/build/angular/components/virtualized-list/directives.js +18 -18
- package/build/angular/components/virtualized-list/index.d.ts +12 -4
- package/build/angular/components/virtualized-list/index.js +163 -68
- package/build/angular/components/virtualized-list/index.js.map +1 -1
- package/build/angular/components/virtualized-section-list/directives.js +12 -12
- package/build/angular/components/virtualized-section-list/index.d.ts +2 -1
- package/build/angular/components/virtualized-section-list/index.js +6 -4
- package/build/angular/components/virtualized-section-list/index.js.map +1 -1
- package/build/angular/components.d.ts +1 -1
- package/build/angular/components.js +5 -0
- package/build/angular/components.js.map +1 -1
- package/build/angular/create-portal/index.js +29 -35
- package/build/angular/create-portal/index.js.map +1 -1
- package/build/angular/create-tunnel/index.js +19 -22
- package/build/angular/create-tunnel/index.js.map +1 -1
- package/build/angular/descriptor-to-angular/index.js +3 -3
- package/build/angular/index.d.ts +4 -2
- package/build/angular/index.js +2 -2
- package/build/angular/index.js.map +1 -1
- package/build/angular/modules/animated/animated-leaf-binder.d.ts +1 -7
- package/build/angular/modules/animated/animated-leaf-binder.js +22 -72
- package/build/angular/modules/animated/animated-leaf-binder.js.map +1 -1
- package/build/angular/modules/animated/create-animated-component.d.ts +11 -6
- package/build/angular/modules/animated/create-animated-component.js +83 -50
- package/build/angular/modules/animated/create-animated-component.js.map +1 -1
- package/build/angular/modules/app-registry/index.js.map +1 -1
- package/build/angular/modules/status-bar/index.js +3 -3
- package/build/angular/primitives/index.d.ts +1 -1
- package/build/angular/primitives/index.js +46 -46
- package/build/angular/primitives/index.js.map +1 -1
- package/build/angular/primitives/shared.d.ts +39 -1
- package/build/angular/primitives/shared.js +110 -9
- package/build/angular/primitives/shared.js.map +1 -1
- package/build/angular/render/index.js +23 -35
- package/build/angular/render/index.js.map +1 -1
- package/build/angular/services/color-scheme.service.js +3 -3
- package/build/angular/services/window-dimensions.service.js +3 -3
- package/package.json +9 -7
- package/src/anchor-host-registry.ts +2 -2
- package/src/components/activity-indicator/index.android.ts +2 -0
- package/src/components/activity-indicator/index.ios.ts +2 -0
- package/src/components/button.ts +28 -14
- package/src/components/flat-list/index.ts +34 -36
- package/src/components/image/index.android.ts +50 -6
- package/src/components/image/index.ios.ts +50 -6
- package/src/components/image/shared.ts +34 -2
- package/src/components/image-background.ts +2 -1
- package/src/components/input-accessory-view/index.ts +42 -4
- package/src/components/keyboard-avoiding-view/index.ts +7 -1
- package/src/components/modal/index.ts +51 -26
- package/src/components/pressable/index.ts +67 -8
- package/src/components/refresh-control/index.ts +54 -12
- package/src/components/safe-area-view/index.ts +50 -5
- package/src/components/scroll-view/index.android.ts +34 -41
- package/src/components/scroll-view/index.ios.ts +10 -21
- package/src/components/scroll-view/projection.ts +79 -7
- package/src/components/scroll-view/shared.ts +223 -68
- package/src/components/scroll-view/sticky-header.ts +11 -16
- package/src/components/section-list/index.ts +27 -36
- package/src/components/switch/index.android.ts +48 -7
- package/src/components/switch/index.ios.ts +48 -7
- package/src/components/switch/shared.ts +79 -3
- package/src/components/text-input.ts +52 -2
- package/src/components/touchable/index.ts +76 -16
- package/src/components/touchable-native-feedback/index.ts +62 -21
- package/src/components/virtualized-list/index.ts +137 -44
- package/src/components/virtualized-section-list/index.ts +2 -1
- package/src/components.ts +5 -0
- package/src/create-portal/index.ts +23 -29
- package/src/create-tunnel/index.ts +13 -16
- package/src/index.ts +30 -1
- package/src/modules/animated/animated-leaf-binder.ts +28 -77
- package/src/modules/animated/create-animated-component.ts +75 -36
- package/src/modules/app-registry/index.ts +6 -8
- package/src/primitives/index.ts +1 -0
- package/src/primitives/shared.ts +102 -3
- package/src/render/index.ts +23 -35
- package/build/angular/modules/animated/animated-leaf-binder/index.d.ts +0 -14
- package/build/angular/modules/animated/animated-leaf-binder/index.js +0 -91
- package/build/angular/modules/animated/animated-leaf-binder/index.js.map +0 -1
- package/src/modules/animated/animated-leaf-binder/index.ts +0 -101
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
// Cross-platform replacement for the old per-app dev-with-watch.sh: Angular needs a pre-Metro
|
|
3
|
-
// AOT compile (ngc), kept in sync via `ngc --watch` while developing. Metro itself must stay
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
//
|
|
7
|
-
//
|
|
8
|
-
//
|
|
9
|
-
// every `node_modules/.bin` up the tree to PATH for any script invocation, this one included.
|
|
3
|
+
// AOT compile (ngc), kept in sync via `ngc --watch` while developing. Metro itself must stay the
|
|
4
|
+
// FOREGROUND process — it reads raw keypresses (r/j/d/...) straight off stdin, and any wrapper
|
|
5
|
+
// that pipes stdin through itself (concurrently, npm-run-all, ...) breaks that raw-mode read. So
|
|
6
|
+
// ngc runs as a plain background child process, never a stdin-owning process manager. `shell:
|
|
7
|
+
// true` resolves `ngc`/`react-native` off PATH the same way the bash script did — npm/pnpm/yarn
|
|
8
|
+
// already prepend every `node_modules/.bin` up the tree to PATH for any script invocation.
|
|
10
9
|
const { spawn, spawnSync } = require('node:child_process');
|
|
11
10
|
const path = require('node:path');
|
|
12
11
|
const fs = require('node:fs');
|
|
@@ -16,16 +15,15 @@ const TSCONFIG = 'tsconfig.angular.json';
|
|
|
16
15
|
const metroArgs = process.argv.slice(2);
|
|
17
16
|
const projectRoot = process.cwd();
|
|
18
17
|
|
|
19
|
-
// perform_watch.js chokidar-watches angularCompilerOptions.basePath recursively (filtered only
|
|
20
|
-
//
|
|
21
|
-
//
|
|
22
|
-
// trees out of the watch
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
// carries a machine-specific absolute path.
|
|
18
|
+
// perform_watch.js chokidar-watches angularCompilerOptions.basePath recursively (filtered only by
|
|
19
|
+
// a hardcoded node_modules/.dotfiles/.js/.map/.metadata.json regex — never ios/android/build), so
|
|
20
|
+
// an app's tsconfig.angular.json narrows basePath to its own src/ to keep the native platform
|
|
21
|
+
// trees out of the watch. That value is written relative (portable, checked in) — but
|
|
22
|
+
// @angular/compiler-cli's INCREMENTAL recompile path (oldProgram reuse, only reachable once `ngc
|
|
23
|
+
// --watch` is already running) calls absoluteFrom() on basePath directly and throws "TS500: ...
|
|
24
|
+
// path is not absolute" if it isn't already absolute, even though the initial cold compile
|
|
25
|
+
// tolerates a relative one fine. Resolve it here, at spawn time, into a throwaway override
|
|
26
|
+
// config — the checked-in tsconfig itself never carries a machine-specific absolute path.
|
|
29
27
|
function resolveWatchTsconfig(tsconfigName) {
|
|
30
28
|
const realPath = path.resolve(projectRoot, tsconfigName);
|
|
31
29
|
const { config, error } = ts.readConfigFile(realPath, ts.sys.readFile);
|
|
@@ -70,7 +68,10 @@ if (initialBuild.status !== 0) {
|
|
|
70
68
|
}
|
|
71
69
|
|
|
72
70
|
const watchTsconfigPath = resolveWatchTsconfig(TSCONFIG);
|
|
73
|
-
const ngcWatch = spawn('ngc', ['-p', watchTsconfigPath, '--watch'], {
|
|
71
|
+
const ngcWatch = spawn('ngc', ['-p', watchTsconfigPath, '--watch'], {
|
|
72
|
+
stdio: 'inherit',
|
|
73
|
+
shell: true,
|
|
74
|
+
});
|
|
74
75
|
const metro = spawn('react-native', ['start', ...metroArgs], { stdio: 'inherit', shell: true });
|
|
75
76
|
|
|
76
77
|
function stopNgcWatch() {
|
|
@@ -80,7 +81,7 @@ function stopNgcWatch() {
|
|
|
80
81
|
}
|
|
81
82
|
}
|
|
82
83
|
|
|
83
|
-
metro.on('exit',
|
|
84
|
+
metro.on('exit', code => {
|
|
84
85
|
stopNgcWatch();
|
|
85
86
|
process.exit(code ?? 0);
|
|
86
87
|
});
|
|
@@ -11,11 +11,11 @@
|
|
|
11
11
|
// Housing the registry here rather than inline in `renderer/index.ts` keeps it out of the require
|
|
12
12
|
// cycle (cheap insurance against a load-order strand). The bug that actually surfaced this,
|
|
13
13
|
// though, was STALE BUILD ARTIFACTS, not the cycle: `ngc -p` never deletes orphaned outputs, so
|
|
14
|
-
// after the renderer moved `renderer.ts`
|
|
14
|
+
// after the renderer moved `renderer.ts` -> `renderer/index.ts` the orphaned `build/angular/
|
|
15
15
|
// renderer.js` lingered and SHADOWED `build/angular/renderer/index.js` (a file beats a folder in
|
|
16
16
|
// Node/Metro resolution), giving the bundle a second, stale registry Set — fixed by cleaning
|
|
17
17
|
// `build/` before every ngc build (see each Angular package's `clean` script). Full record:
|
|
18
|
-
// angular-adapter §11c
|
|
18
|
+
// angular-adapter §11c.
|
|
19
19
|
// Lowercased at construction — isAnchorHostComponent and registerComposedComponent both normalize
|
|
20
20
|
// to lowercase (Angular lowercases a dynamically-mounted component's selector at runtime, see
|
|
21
21
|
// angular-adapter §11a), so the literal entries below must match that or every capitalized one
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anchor-host-registry.js","sourceRoot":"","sources":["../../src/anchor-host-registry.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,EAAE;AACF,sFAAsF;AACtF,8FAA8F;AAC9F,iGAAiG;AACjG,6FAA6F;AAC7F,gGAAgG;AAChG,8FAA8F;AAC9F,yCAAyC;AACzC,EAAE;AACF,kGAAkG;AAClG,4FAA4F;AAC5F,gGAAgG;AAChG,
|
|
1
|
+
{"version":3,"file":"anchor-host-registry.js","sourceRoot":"","sources":["../../src/anchor-host-registry.ts"],"names":[],"mappings":"AAAA,2FAA2F;AAC3F,EAAE;AACF,sFAAsF;AACtF,8FAA8F;AAC9F,iGAAiG;AACjG,6FAA6F;AAC7F,gGAAgG;AAChG,8FAA8F;AAC9F,yCAAyC;AACzC,EAAE;AACF,kGAAkG;AAClG,4FAA4F;AAC5F,gGAAgG;AAChG,6FAA6F;AAC7F,iGAAiG;AACjG,6FAA6F;AAC7F,4FAA4F;AAC5F,wBAAwB;AAExB,kGAAkG;AAClG,8FAA8F;AAC9F,+FAA+F;AAC/F,kGAAkG;AAClG,kGAAkG;AAClG,yBAAyB;AACzB,MAAM,sBAAsB,GAAgB,IAAI,GAAG,CACjD;IACE,0FAA0F;IAC1F,2FAA2F;IAC3F,2FAA2F;IAC3F,uFAAuF;IACvF,4FAA4F;IAC5F,6FAA6F;IAC7F,oFAAoF;IACpF,4FAA4F;IAC5F,yFAAyF;IACzF,mBAAmB;IACnB,QAAQ;IACR,UAAU;IACV,cAAc;IACd,wBAAwB;IACxB,cAAc;IACd,wBAAwB;IACxB,eAAe;IACf,yBAAyB;IACzB,oBAAoB;IACpB,+BAA+B;IAC/B,4BAA4B;IAC5B,YAAY;IACZ,OAAO;IACP,iBAAiB;IACjB,oBAAoB;IACpB,sBAAsB;IACtB,OAAO;IACP,WAAW;IACX,gBAAgB;IAChB,cAAc;IACd,YAAY;IACZ,wBAAwB;IACxB,aAAa;IACb,wBAAwB;IACxB,WAAW;IACX,QAAQ;IACR,MAAM;IACN,WAAW;IACX,oBAAoB;IACpB,yBAAyB;IACzB,kBAAkB;IAClB,0BAA0B;IAC1B,iBAAiB;IACjB,wBAAwB;IACxB,oBAAoB;CACrB,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAC1C,CAAC;AAEF,8FAA8F;AAC9F,8FAA8F;AAC9F,+FAA+F;AAC/F,sCAAsC;AACtC,MAAM,UAAU,yBAAyB,CAAC,QAAgB;IACxD,sBAAsB,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;AACrD,CAAC;AAED,yFAAyF;AACzF,yFAAyF;AACzF,MAAM,UAAU,qBAAqB,CAAC,UAAkB;IACtD,OAAO,sBAAsB,CAAC,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;AAC9D,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ActivityIndicatorBase } from './shared';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../primitives/shared";
|
|
3
4
|
export type { IActivityIndicatorProps } from './shared';
|
|
4
5
|
export declare class ActivityIndicator extends ActivityIndicatorBase {
|
|
5
6
|
protected readonly defaultColor: null;
|
|
@@ -8,5 +9,5 @@ export declare class ActivityIndicator extends ActivityIndicatorBase {
|
|
|
8
9
|
indeterminate: boolean;
|
|
9
10
|
};
|
|
10
11
|
static ɵfac: i0.ɵɵFactoryDeclaration<ActivityIndicator, never>;
|
|
11
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ActivityIndicator, "ActivityIndicator", never, {}, {}, never, never, true,
|
|
12
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ActivityIndicator, "ActivityIndicator", never, {}, {}, never, never, true, [{ directive: typeof i1.SymbioteStyleInputDirective; inputs: { "style": "style"; }; outputs: {}; }]>;
|
|
12
13
|
}
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
2
|
import { DescriptorOutlet } from '../../descriptor-to-angular';
|
|
3
3
|
import { ActivityIndicatorBase } from './shared';
|
|
4
|
+
import { SymbioteStyleInputDirective } from '../../primitives';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../primitives/shared";
|
|
5
7
|
export class ActivityIndicator extends ActivityIndicatorBase {
|
|
6
8
|
defaultColor = null;
|
|
7
9
|
nativeExtras = { styleAttr: 'Normal', indeterminate: true };
|
|
8
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
9
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
10
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ActivityIndicator, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
11
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: ActivityIndicator, isStandalone: true, selector: "ActivityIndicator", usesInheritance: true, hostDirectives: [{ directive: i1.SymbioteStyleInputDirective, inputs: ["style", "style"] }], ngImport: i0, template: `<symbiote-descriptor-outlet [node]="descriptor" />`, isInline: true, dependencies: [{ kind: "component", type: DescriptorOutlet, selector: "symbiote-descriptor-outlet", inputs: ["node"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
10
12
|
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ActivityIndicator, decorators: [{
|
|
12
14
|
type: Component,
|
|
13
15
|
args: [{
|
|
14
16
|
selector: 'ActivityIndicator',
|
|
15
17
|
standalone: true,
|
|
18
|
+
hostDirectives: [{ directive: SymbioteStyleInputDirective, inputs: ['style'] }],
|
|
16
19
|
imports: [DescriptorOutlet],
|
|
17
20
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
18
21
|
template: `<symbiote-descriptor-outlet [node]="descriptor" />`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.android.js","sourceRoot":"","sources":["../../../../src/components/activity-indicator/index.android.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC
|
|
1
|
+
{"version":3,"file":"index.android.js","sourceRoot":"","sources":["../../../../src/components/activity-indicator/index.android.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;;;AAW/D,MAAM,OAAO,iBAAkB,SAAQ,qBAAqB;IACvC,YAAY,GAAG,IAAI,CAAC;IACX,YAAY,GAAG,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;uGAF7E,iBAAiB;2FAAjB,iBAAiB,iMAFlB,oDAAoD,4DAFpD,gBAAgB;;2FAIf,iBAAiB;kBAR7B,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,UAAU,EAAE,IAAI;oBAChB,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,2BAA2B,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC/E,OAAO,EAAE,CAAC,gBAAgB,CAAC;oBAC3B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,QAAQ,EAAE,oDAAoD;iBAC/D"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { ActivityIndicatorBase } from './shared';
|
|
2
2
|
import * as i0 from "@angular/core";
|
|
3
|
+
import * as i1 from "../../primitives/shared";
|
|
3
4
|
export type { IActivityIndicatorProps } from './shared';
|
|
4
5
|
export declare class ActivityIndicator extends ActivityIndicatorBase {
|
|
5
6
|
protected readonly defaultColor = "#999999";
|
|
6
7
|
static ɵfac: i0.ɵɵFactoryDeclaration<ActivityIndicator, never>;
|
|
7
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<ActivityIndicator, "ActivityIndicator", never, {}, {}, never, never, true,
|
|
8
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<ActivityIndicator, "ActivityIndicator", never, {}, {}, never, never, true, [{ directive: typeof i1.SymbioteStyleInputDirective; inputs: { "style": "style"; }; outputs: {}; }]>;
|
|
8
9
|
}
|
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import { ChangeDetectionStrategy, Component } from '@angular/core';
|
|
2
2
|
import { DescriptorOutlet } from '../../descriptor-to-angular';
|
|
3
3
|
import { ActivityIndicatorBase } from './shared';
|
|
4
|
+
import { SymbioteStyleInputDirective } from '../../primitives';
|
|
4
5
|
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../primitives/shared";
|
|
5
7
|
const IOS_DEFAULT_COLOR = '#999999';
|
|
6
8
|
export class ActivityIndicator extends ActivityIndicatorBase {
|
|
7
9
|
defaultColor = IOS_DEFAULT_COLOR;
|
|
8
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
9
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
10
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ActivityIndicator, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
11
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: ActivityIndicator, isStandalone: true, selector: "ActivityIndicator", usesInheritance: true, hostDirectives: [{ directive: i1.SymbioteStyleInputDirective, inputs: ["style", "style"] }], ngImport: i0, template: `<symbiote-descriptor-outlet [node]="descriptor" />`, isInline: true, dependencies: [{ kind: "component", type: DescriptorOutlet, selector: "symbiote-descriptor-outlet", inputs: ["node"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
10
12
|
}
|
|
11
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
13
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ActivityIndicator, decorators: [{
|
|
12
14
|
type: Component,
|
|
13
15
|
args: [{
|
|
14
16
|
selector: 'ActivityIndicator',
|
|
15
17
|
standalone: true,
|
|
18
|
+
hostDirectives: [{ directive: SymbioteStyleInputDirective, inputs: ['style'] }],
|
|
16
19
|
imports: [DescriptorOutlet],
|
|
17
20
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
18
21
|
template: `<symbiote-descriptor-outlet [node]="descriptor" />`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.ios.js","sourceRoot":"","sources":["../../../../src/components/activity-indicator/index.ios.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC
|
|
1
|
+
{"version":3,"file":"index.ios.js","sourceRoot":"","sources":["../../../../src/components/activity-indicator/index.ios.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;;;AAG/D,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAUpC,MAAM,OAAO,iBAAkB,SAAQ,qBAAqB;IACvC,YAAY,GAAG,iBAAiB,CAAC;uGADzC,iBAAiB;2FAAjB,iBAAiB,iMAFlB,oDAAoD,4DAFpD,gBAAgB;;2FAIf,iBAAiB;kBAR7B,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,UAAU,EAAE,IAAI;oBAChB,cAAc,EAAE,CAAC,EAAE,SAAS,EAAE,2BAA2B,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC/E,OAAO,EAAE,CAAC,gBAAgB,CAAC;oBAC3B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,QAAQ,EAAE,oDAAoD;iBAC/D"}
|
|
@@ -147,10 +147,10 @@ export class ActivityIndicatorBase {
|
|
|
147
147
|
emitterHandler(emitter, handler) {
|
|
148
148
|
return emitter.observed ? handler : undefined;
|
|
149
149
|
}
|
|
150
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
151
|
-
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.
|
|
150
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ActivityIndicatorBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
|
|
151
|
+
static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.8", type: ActivityIndicatorBase, isStandalone: true, inputs: { animating: "animating", color: "color", hidesWhenStopped: "hidesWhenStopped", nativeID: "nativeID", size: "size", style: "style", testID: "testID", accessible: "accessible", accessibilityLabel: "accessibilityLabel", accessibilityHint: "accessibilityHint", accessibilityRole: "accessibilityRole", accessibilityState: "accessibilityState", accessibilityValue: "accessibilityValue", accessibilityActions: "accessibilityActions", accessibilityLabelledBy: "accessibilityLabelledBy", importantForAccessibility: "importantForAccessibility", accessibilityLiveRegion: "accessibilityLiveRegion", screenReaderFocusable: "screenReaderFocusable", accessibilityViewIsModal: "accessibilityViewIsModal", accessibilityElementsHidden: "accessibilityElementsHidden", accessibilityIgnoresInvertColors: "accessibilityIgnoresInvertColors", accessibilityLanguage: "accessibilityLanguage", accessibilityRespondsToUserInteraction: "accessibilityRespondsToUserInteraction", accessibilityShowsLargeContentViewer: "accessibilityShowsLargeContentViewer", accessibilityLargeContentTitle: "accessibilityLargeContentTitle", role: "role", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledBy: ["aria-labelledby", "ariaLabelledBy"], ariaLive: ["aria-live", "ariaLive"], ariaHidden: ["aria-hidden", "ariaHidden"], ariaBusy: ["aria-busy", "ariaBusy"], ariaChecked: ["aria-checked", "ariaChecked"], ariaDisabled: ["aria-disabled", "ariaDisabled"], ariaExpanded: ["aria-expanded", "ariaExpanded"], ariaSelected: ["aria-selected", "ariaSelected"], ariaModal: ["aria-modal", "ariaModal"], ariaValueMax: ["aria-valuemax", "ariaValueMax"], ariaValueMin: ["aria-valuemin", "ariaValueMin"], ariaValueNow: ["aria-valuenow", "ariaValueNow"], ariaValueText: ["aria-valuetext", "ariaValueText"] }, outputs: { layout: "layout", accessibilityAction: "accessibilityAction", accessibilityTap: "accessibilityTap", magicTap: "magicTap", accessibilityEscape: "accessibilityEscape" }, ngImport: i0 });
|
|
152
152
|
}
|
|
153
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
153
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: ActivityIndicatorBase, decorators: [{
|
|
154
154
|
type: Directive
|
|
155
155
|
}], propDecorators: { animating: [{
|
|
156
156
|
type: Input
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { EventEmitter } from '@angular/core';
|
|
1
|
+
import { EventEmitter, type DoCheck } from '@angular/core';
|
|
2
2
|
import { type IAccessibilityProps, type IAccessibilityStateValue, type IAriaProps, type IButtonProps as ICoreButtonProps } from '@symbiote-native/components';
|
|
3
3
|
import type { ISymbioteEvent, ITextStyle, IStyleProp, IViewStyle } from '@symbiote-native/engine';
|
|
4
4
|
import * as i0 from "@angular/core";
|
|
5
5
|
export type IButtonProps = Omit<ICoreButtonProps, 'onPress' | 'onAccessibilityAction' | 'onAccessibilityTap' | 'onMagicTap' | 'onAccessibilityEscape'>;
|
|
6
|
-
export declare class Button implements IButtonProps {
|
|
6
|
+
export declare class Button implements IButtonProps, DoCheck {
|
|
7
7
|
private readonly elementRef;
|
|
8
8
|
readonly press: EventEmitter<ISymbioteEvent>;
|
|
9
9
|
readonly accessibilityAction: EventEmitter<ISymbioteEvent>;
|
|
@@ -57,6 +57,8 @@ export declare class Button implements IButtonProps {
|
|
|
57
57
|
ariaValueText?: string;
|
|
58
58
|
readonly buttonRole = "button";
|
|
59
59
|
get textStyle(): ITextStyle;
|
|
60
|
+
private readonly anchorStyleValue;
|
|
61
|
+
ngDoCheck(): void;
|
|
60
62
|
get anchorStyle(): IStyleProp<IViewStyle> | undefined;
|
|
61
63
|
static ɵfac: i0.ɵɵFactoryDeclaration<Button, never>;
|
|
62
64
|
static ɵcmp: i0.ɵɵComponentDeclaration<Button, "Button", never, { "title": { "alias": "title"; "required": false; }; "color": { "alias": "color"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "touchSoundDisabled": { "alias": "touchSoundDisabled"; "required": false; }; "testID": { "alias": "testID"; "required": false; }; "hasTVPreferredFocus": { "alias": "hasTVPreferredFocus"; "required": false; }; "nextFocusDown": { "alias": "nextFocusDown"; "required": false; }; "nextFocusForward": { "alias": "nextFocusForward"; "required": false; }; "nextFocusLeft": { "alias": "nextFocusLeft"; "required": false; }; "nextFocusRight": { "alias": "nextFocusRight"; "required": false; }; "nextFocusUp": { "alias": "nextFocusUp"; "required": false; }; "nativeID": { "alias": "nativeID"; "required": false; }; "accessible": { "alias": "accessible"; "required": false; }; "accessibilityLabel": { "alias": "accessibilityLabel"; "required": false; }; "accessibilityHint": { "alias": "accessibilityHint"; "required": false; }; "accessibilityRole": { "alias": "accessibilityRole"; "required": false; }; "accessibilityState": { "alias": "accessibilityState"; "required": false; }; "accessibilityValue": { "alias": "accessibilityValue"; "required": false; }; "accessibilityActions": { "alias": "accessibilityActions"; "required": false; }; "accessibilityLabelledBy": { "alias": "accessibilityLabelledBy"; "required": false; }; "importantForAccessibility": { "alias": "importantForAccessibility"; "required": false; }; "accessibilityLiveRegion": { "alias": "accessibilityLiveRegion"; "required": false; }; "screenReaderFocusable": { "alias": "screenReaderFocusable"; "required": false; }; "accessibilityViewIsModal": { "alias": "accessibilityViewIsModal"; "required": false; }; "accessibilityElementsHidden": { "alias": "accessibilityElementsHidden"; "required": false; }; "accessibilityIgnoresInvertColors": { "alias": "accessibilityIgnoresInvertColors"; "required": false; }; "accessibilityLanguage": { "alias": "accessibilityLanguage"; "required": false; }; "accessibilityRespondsToUserInteraction": { "alias": "accessibilityRespondsToUserInteraction"; "required": false; }; "accessibilityShowsLargeContentViewer": { "alias": "accessibilityShowsLargeContentViewer"; "required": false; }; "accessibilityLargeContentTitle": { "alias": "accessibilityLargeContentTitle"; "required": false; }; "role": { "alias": "role"; "required": false; }; "ariaLabel": { "alias": "aria-label"; "required": false; }; "ariaLabelledBy": { "alias": "aria-labelledby"; "required": false; }; "ariaLive": { "alias": "aria-live"; "required": false; }; "ariaHidden": { "alias": "aria-hidden"; "required": false; }; "ariaBusy": { "alias": "aria-busy"; "required": false; }; "ariaChecked": { "alias": "aria-checked"; "required": false; }; "ariaDisabled": { "alias": "aria-disabled"; "required": false; }; "ariaExpanded": { "alias": "aria-expanded"; "required": false; }; "ariaSelected": { "alias": "aria-selected"; "required": false; }; "ariaModal": { "alias": "aria-modal"; "required": false; }; "ariaValueMax": { "alias": "aria-valuemax"; "required": false; }; "ariaValueMin": { "alias": "aria-valuemin"; "required": false; }; "ariaValueNow": { "alias": "aria-valuenow"; "required": false; }; "ariaValueText": { "alias": "aria-valuetext"; "required": false; }; }, { "press": "press"; "accessibilityAction": "accessibilityAction"; "accessibilityTap": "accessibilityTap"; "magicTap": "magicTap"; "accessibilityEscape": "accessibilityEscape"; }, never, never, true, never>;
|
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
// Button for Angular. The minimal cross-platform button in RN's iOS shape (Button.js): a
|
|
2
2
|
// TouchableOpacity wrapping a Text. The base text style, the role constant, and the color fold are
|
|
3
|
-
// shared in @symbiote-native/components/view;
|
|
4
|
-
// symbiote-text child and re-maps the few Button-owned props.
|
|
5
|
-
//
|
|
3
|
+
// shared in @symbiote-native/components/view; Angular only composes its TouchableOpacity + a
|
|
4
|
+
// symbiote-text child and re-maps the few Button-owned props. No JS-side platform branch, so this
|
|
5
|
+
// stays a flat single file.
|
|
6
6
|
//
|
|
7
|
-
// RN's Button fixes accessibilityRole="button", marks the root accessible, and propagates
|
|
8
|
-
// into the accessibility state; those three win over any caller value. `title` becomes
|
|
9
|
-
// child; disabled forwards straight; touchSoundDisabled maps to the pressable's
|
|
10
|
-
// Every
|
|
11
|
-
//
|
|
12
|
-
// verbatim. onPress and the four accessibility callbacks are the
|
|
7
|
+
// RN's Button fixes accessibilityRole="button", marks the root accessible, and propagates
|
|
8
|
+
// `disabled` into the accessibility state; those three win over any caller value. `title` becomes
|
|
9
|
+
// the Text child; disabled forwards straight; touchSoundDisabled maps to the pressable's
|
|
10
|
+
// android_disableSound. Every other field of the shared IButtonProps stays RE-EXPORTED from
|
|
11
|
+
// @symbiote-native/components verbatim. onPress and the four accessibility callbacks are the
|
|
13
12
|
// exceptions: each is a real @Output() here (`press`, `accessibilityAction`, `accessibilityTap`,
|
|
14
|
-
// `magicTap`, `accessibilityEscape`), mirroring the Vue adapter's Button, which forks the
|
|
15
|
-
// field the same way
|
|
16
|
-
|
|
17
|
-
import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, inject, Input, Output, } from '@angular/core';
|
|
13
|
+
// `magicTap`, `accessibilityEscape`), mirroring the Vue adapter's Button, which forks the same
|
|
14
|
+
// onPress field the same way — not a new precedent, the existing one extended to accessibility.
|
|
15
|
+
import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, ElementRef, EventEmitter, inject, Input, Output, signal, } from '@angular/core';
|
|
18
16
|
import { BUTTON_ACCESSIBILITY_ROLE, resolveButtonTextStyle, } from '@symbiote-native/components';
|
|
19
17
|
import { anchorStyleProp, TextHost } from '../primitives';
|
|
20
18
|
import { TouchableOpacity } from './touchable';
|
|
@@ -90,11 +88,24 @@ export class Button {
|
|
|
90
88
|
get textStyle() {
|
|
91
89
|
return resolveButtonTextStyle(this.color, this.disabled);
|
|
92
90
|
}
|
|
91
|
+
// Polled, not read live: a class toggled after mount reaches the anchor through
|
|
92
|
+
// addClass/removeClass, which dirties nothing, so a plain getter froze at its creation value.
|
|
93
|
+
// Button cannot use SymbioteStyleInputDirective instead - RN's Button has no `style` prop, so
|
|
94
|
+
// there is no `style` @Input for it to hang off.
|
|
95
|
+
//
|
|
96
|
+
// ngDoCheck runs during the PARENT's refresh even when this view is skipped; the signal write is
|
|
97
|
+
// what marks this view. The anchor returns the same props.style reference until a commit changes
|
|
98
|
+
// it, so Object.is makes an unchanged poll free.
|
|
99
|
+
anchorStyleValue = signal(undefined, /* @ts-ignore */
|
|
100
|
+
...(ngDevMode ? [{ debugName: "anchorStyleValue" }] : /* istanbul ignore next */ []));
|
|
101
|
+
ngDoCheck() {
|
|
102
|
+
this.anchorStyleValue.set(anchorStyleProp(this.elementRef));
|
|
103
|
+
}
|
|
93
104
|
get anchorStyle() {
|
|
94
|
-
return
|
|
105
|
+
return this.anchorStyleValue();
|
|
95
106
|
}
|
|
96
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
97
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.
|
|
107
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: Button, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
108
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: Button, isStandalone: true, selector: "Button", inputs: { title: "title", color: "color", disabled: "disabled", touchSoundDisabled: "touchSoundDisabled", testID: "testID", hasTVPreferredFocus: "hasTVPreferredFocus", nextFocusDown: "nextFocusDown", nextFocusForward: "nextFocusForward", nextFocusLeft: "nextFocusLeft", nextFocusRight: "nextFocusRight", nextFocusUp: "nextFocusUp", nativeID: "nativeID", accessible: "accessible", accessibilityLabel: "accessibilityLabel", accessibilityHint: "accessibilityHint", accessibilityRole: "accessibilityRole", accessibilityState: "accessibilityState", accessibilityValue: "accessibilityValue", accessibilityActions: "accessibilityActions", accessibilityLabelledBy: "accessibilityLabelledBy", importantForAccessibility: "importantForAccessibility", accessibilityLiveRegion: "accessibilityLiveRegion", screenReaderFocusable: "screenReaderFocusable", accessibilityViewIsModal: "accessibilityViewIsModal", accessibilityElementsHidden: "accessibilityElementsHidden", accessibilityIgnoresInvertColors: "accessibilityIgnoresInvertColors", accessibilityLanguage: "accessibilityLanguage", accessibilityRespondsToUserInteraction: "accessibilityRespondsToUserInteraction", accessibilityShowsLargeContentViewer: "accessibilityShowsLargeContentViewer", accessibilityLargeContentTitle: "accessibilityLargeContentTitle", role: "role", ariaLabel: ["aria-label", "ariaLabel"], ariaLabelledBy: ["aria-labelledby", "ariaLabelledBy"], ariaLive: ["aria-live", "ariaLive"], ariaHidden: ["aria-hidden", "ariaHidden"], ariaBusy: ["aria-busy", "ariaBusy"], ariaChecked: ["aria-checked", "ariaChecked"], ariaDisabled: ["aria-disabled", "ariaDisabled"], ariaExpanded: ["aria-expanded", "ariaExpanded"], ariaSelected: ["aria-selected", "ariaSelected"], ariaModal: ["aria-modal", "ariaModal"], ariaValueMax: ["aria-valuemax", "ariaValueMax"], ariaValueMin: ["aria-valuemin", "ariaValueMin"], ariaValueNow: ["aria-valuenow", "ariaValueNow"], ariaValueText: ["aria-valuetext", "ariaValueText"] }, outputs: { press: "press", accessibilityAction: "accessibilityAction", accessibilityTap: "accessibilityTap", magicTap: "magicTap", accessibilityEscape: "accessibilityEscape" }, ngImport: i0, template: `
|
|
98
109
|
<TouchableOpacity
|
|
99
110
|
[style]="anchorStyle"
|
|
100
111
|
(press)="press.emit($event)"
|
|
@@ -150,7 +161,7 @@ export class Button {
|
|
|
150
161
|
</TouchableOpacity>
|
|
151
162
|
`, isInline: true, dependencies: [{ kind: "component", type: TouchableOpacity, selector: "TouchableOpacity", inputs: ["activeOpacity", "delayPressIn", "delayPressOut", "minPressDuration", "style", "delayLongPress", "delayHoverIn", "delayHoverOut", "disabled", "cancelable", "hitSlop", "pressRetentionOffset", "unstable_pressDelay", "android_ripple", "android_disableSound", "testID", "nativeID", "hasTVPreferredFocus", "nextFocusDown", "nextFocusForward", "nextFocusLeft", "nextFocusRight", "nextFocusUp", "accessible", "accessibilityLabel", "accessibilityHint", "accessibilityRole", "accessibilityState", "accessibilityValue", "accessibilityActions", "accessibilityLabelledBy", "importantForAccessibility", "accessibilityLiveRegion", "screenReaderFocusable", "accessibilityViewIsModal", "accessibilityElementsHidden", "accessibilityIgnoresInvertColors", "accessibilityLanguage", "accessibilityRespondsToUserInteraction", "accessibilityShowsLargeContentViewer", "accessibilityLargeContentTitle", "ariaLabel", "ariaBusy", "ariaChecked", "ariaDisabled", "ariaExpanded", "ariaHidden", "ariaLabelledBy", "ariaLive", "ariaSelected", "ariaModal", "ariaValueMax", "ariaValueMin", "ariaValueNow", "ariaValueText", "id", "role"], outputs: ["press", "pressIn", "pressOut", "pressMove", "longPress", "hoverIn", "hoverOut", "accessibilityAction", "accessibilityTap", "magicTap", "accessibilityEscape"] }, { kind: "component", type: TextHost, selector: "symbiote-text, Text" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
152
163
|
}
|
|
153
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
164
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: Button, decorators: [{
|
|
154
165
|
type: Component,
|
|
155
166
|
args: [{
|
|
156
167
|
selector: 'Button',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"button.js","sourceRoot":"","sources":["../../../src/components/button.ts"],"names":[],"mappings":"AAAA,yFAAyF;AACzF,mGAAmG;AACnG,kGAAkG;AAClG,
|
|
1
|
+
{"version":3,"file":"button.js","sourceRoot":"","sources":["../../../src/components/button.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { EventEmitter, type OnChanges, type SimpleChanges } from '@angular/core';
|
|
1
|
+
import { EventEmitter, type DoCheck, type OnChanges, type SimpleChanges } from '@angular/core';
|
|
2
2
|
import { type IRow, type IScrollViewHandle, type IViewabilityConfigCallbackPair, type IViewableItemsChangedInfo, type IVirtualizedListHandle } from '@symbiote-native/components';
|
|
3
3
|
import { type IStyleProp, type ISymbioteNode, type IViewStyle } from '@symbiote-native/engine';
|
|
4
4
|
import { VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, type IVirtualizedListProps, type IVListItemContext, type IVListSeparatorContext } from '../virtualized-list';
|
|
5
5
|
import * as i0 from "@angular/core";
|
|
6
|
+
import * as i1 from "../../primitives/shared";
|
|
6
7
|
export type { ISeparators, IViewableItemsChangedInfo, IViewabilityConfigCallbackPair, IVirtualizedListHandle, } from '@symbiote-native/components';
|
|
7
8
|
export { VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, } from '../virtualized-list';
|
|
8
9
|
export type { IVListItemContext, IVListSeparatorContext } from '../virtualized-list';
|
|
@@ -13,7 +14,7 @@ export type IFlatListProps<ItemT> = Omit<IVirtualizedListProps<ItemT>, 'data' |
|
|
|
13
14
|
columnWrapperStyle?: IStyleProp<IViewStyle> | string;
|
|
14
15
|
};
|
|
15
16
|
export type IFlatListInputs<ItemT> = Omit<IFlatListProps<ItemT>, 'onEndReached' | 'onStartReached' | 'onRefresh' | 'onViewableItemsChanged' | 'onScrollToIndexFailed'>;
|
|
16
|
-
export declare class FlatList<ItemT = unknown> implements IFlatListInputs<ItemT>, IVirtualizedListHandle, OnChanges {
|
|
17
|
+
export declare class FlatList<ItemT = unknown> implements IFlatListInputs<ItemT>, IVirtualizedListHandle, DoCheck, OnChanges {
|
|
17
18
|
readonly endReached: EventEmitter<{
|
|
18
19
|
distanceFromEnd: number;
|
|
19
20
|
}>;
|
|
@@ -79,6 +80,7 @@ export declare class FlatList<ItemT = unknown> implements IFlatListInputs<ItemT>
|
|
|
79
80
|
resolvedStyle: IViewStyle | undefined;
|
|
80
81
|
get columns(): number;
|
|
81
82
|
get isMultiColumn(): boolean;
|
|
83
|
+
ngDoCheck(): void;
|
|
82
84
|
ngOnChanges(changes: SimpleChanges): void;
|
|
83
85
|
getFlatItem: (_data: unknown, index: number) => ItemT;
|
|
84
86
|
getFlatCount: (_data: unknown) => number;
|
|
@@ -118,5 +120,5 @@ export declare class FlatList<ItemT = unknown> implements IFlatListInputs<ItemT>
|
|
|
118
120
|
getScrollNode(): ISymbioteNode | null;
|
|
119
121
|
recordInteraction(): void;
|
|
120
122
|
static ɵfac: i0.ɵɵFactoryDeclaration<FlatList<any>, never>;
|
|
121
|
-
static ɵcmp: i0.ɵɵComponentDeclaration<FlatList<any>, "FlatList", never, { "data": { "alias": "data"; "required": true; }; "numColumns": { "alias": "numColumns"; "required": false; }; "columnWrapperStyle": { "alias": "columnWrapperStyle"; "required": false; }; "keyExtractor": { "alias": "keyExtractor"; "required": false; }; "getItemLayout": { "alias": "getItemLayout"; "required": false; }; "horizontal": { "alias": "horizontal"; "required": false; }; "inverted": { "alias": "inverted"; "required": false; }; "extraData": { "alias": "extraData"; "required": false; }; "onEndReachedThreshold": { "alias": "onEndReachedThreshold"; "required": false; }; "onStartReachedThreshold": { "alias": "onStartReachedThreshold"; "required": false; }; "refreshing": { "alias": "refreshing"; "required": false; }; "progressViewOffset": { "alias": "progressViewOffset"; "required": false; }; "viewabilityConfig": { "alias": "viewabilityConfig"; "required": false; }; "viewabilityConfigCallbackPairs": { "alias": "viewabilityConfigCallbackPairs"; "required": false; }; "initialNumToRender": { "alias": "initialNumToRender"; "required": false; }; "initialScrollIndex": { "alias": "initialScrollIndex"; "required": false; }; "maxToRenderPerBatch": { "alias": "maxToRenderPerBatch"; "required": false; }; "updateCellsBatchingPeriod": { "alias": "updateCellsBatchingPeriod"; "required": false; }; "windowSize": { "alias": "windowSize"; "required": false; }; "stickyHeaderIndices": { "alias": "stickyHeaderIndices"; "required": false; }; "maintainVisibleContentPosition": { "alias": "maintainVisibleContentPosition"; "required": false; }; "onScroll": { "alias": "onScroll"; "required": false; }; "onScrollBeginDrag": { "alias": "onScrollBeginDrag"; "required": false; }; "onScrollEndDrag": { "alias": "onScrollEndDrag"; "required": false; }; "onMomentumScrollBegin": { "alias": "onMomentumScrollBegin"; "required": false; }; "onMomentumScrollEnd": { "alias": "onMomentumScrollEnd"; "required": false; }; "scrollEventThrottle": { "alias": "scrollEventThrottle"; "required": false; }; "keyboardShouldPersistTaps": { "alias": "keyboardShouldPersistTaps"; "required": false; }; "keyboardDismissMode": { "alias": "keyboardDismissMode"; "required": false; }; "style": { "alias": "style"; "required": false; }; "contentContainerStyle": { "alias": "contentContainerStyle"; "required": false; }; }, { "endReached": "endReached"; "startReached": "startReached"; "refresh": "refresh"; "viewableItemsChanged": "viewableItemsChanged"; "scrollToIndexFailed": "scrollToIndexFailed"; }, ["itemDir", "headerDir", "footerDir", "emptyDir", "separatorDir"], never, true,
|
|
123
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<FlatList<any>, "FlatList", never, { "data": { "alias": "data"; "required": true; }; "numColumns": { "alias": "numColumns"; "required": false; }; "columnWrapperStyle": { "alias": "columnWrapperStyle"; "required": false; }; "keyExtractor": { "alias": "keyExtractor"; "required": false; }; "getItemLayout": { "alias": "getItemLayout"; "required": false; }; "horizontal": { "alias": "horizontal"; "required": false; }; "inverted": { "alias": "inverted"; "required": false; }; "extraData": { "alias": "extraData"; "required": false; }; "onEndReachedThreshold": { "alias": "onEndReachedThreshold"; "required": false; }; "onStartReachedThreshold": { "alias": "onStartReachedThreshold"; "required": false; }; "refreshing": { "alias": "refreshing"; "required": false; }; "progressViewOffset": { "alias": "progressViewOffset"; "required": false; }; "viewabilityConfig": { "alias": "viewabilityConfig"; "required": false; }; "viewabilityConfigCallbackPairs": { "alias": "viewabilityConfigCallbackPairs"; "required": false; }; "initialNumToRender": { "alias": "initialNumToRender"; "required": false; }; "initialScrollIndex": { "alias": "initialScrollIndex"; "required": false; }; "maxToRenderPerBatch": { "alias": "maxToRenderPerBatch"; "required": false; }; "updateCellsBatchingPeriod": { "alias": "updateCellsBatchingPeriod"; "required": false; }; "windowSize": { "alias": "windowSize"; "required": false; }; "stickyHeaderIndices": { "alias": "stickyHeaderIndices"; "required": false; }; "maintainVisibleContentPosition": { "alias": "maintainVisibleContentPosition"; "required": false; }; "onScroll": { "alias": "onScroll"; "required": false; }; "onScrollBeginDrag": { "alias": "onScrollBeginDrag"; "required": false; }; "onScrollEndDrag": { "alias": "onScrollEndDrag"; "required": false; }; "onMomentumScrollBegin": { "alias": "onMomentumScrollBegin"; "required": false; }; "onMomentumScrollEnd": { "alias": "onMomentumScrollEnd"; "required": false; }; "scrollEventThrottle": { "alias": "scrollEventThrottle"; "required": false; }; "keyboardShouldPersistTaps": { "alias": "keyboardShouldPersistTaps"; "required": false; }; "keyboardDismissMode": { "alias": "keyboardDismissMode"; "required": false; }; "style": { "alias": "style"; "required": false; }; "contentContainerStyle": { "alias": "contentContainerStyle"; "required": false; }; }, { "endReached": "endReached"; "startReached": "startReached"; "refresh": "refresh"; "viewableItemsChanged": "viewableItemsChanged"; "scrollToIndexFailed": "scrollToIndexFailed"; }, ["itemDir", "headerDir", "footerDir", "emptyDir", "separatorDir"], never, true, [{ directive: typeof i1.SymbioteStyleInputDirective; inputs: { "style": "style"; }; outputs: {}; }]>;
|
|
122
124
|
}
|
|
@@ -1,44 +1,43 @@
|
|
|
1
1
|
// FlatList, the Angular convenience surface over VirtualizedList. It takes a plain `data` array
|
|
2
2
|
// and derives getItem/getItemCount; numColumns packs items into rows (each row a flex-row of N
|
|
3
|
-
// columns), so the virtualized stream is rows, not items (RN's FlatList).
|
|
4
|
-
//
|
|
5
|
-
//
|
|
6
|
-
// verbatim from @symbiote-native/components,
|
|
7
|
-
// Angular twin of adapters/vue/src/components/flat-list/index.ts.
|
|
3
|
+
// columns), so the virtualized stream is rows, not items (RN's FlatList). Windowing / viewability /
|
|
4
|
+
// batching / imperative scrolling are inherited from VirtualizedList; the data shaping
|
|
5
|
+
// (chunkIntoRows / rowKeyExtractor / expandRowViewability / row-separator unwrap) is shared
|
|
6
|
+
// verbatim from @symbiote-native/components, same as React/Vue's FlatLists.
|
|
8
7
|
//
|
|
9
|
-
// TEMPLATE FORWARDING — both paths RE-STAMP; neither uses a bare `<ng-content>` passthrough.
|
|
8
|
+
// TEMPLATE FORWARDING — both column paths RE-STAMP; neither uses a bare `<ng-content>` passthrough.
|
|
10
9
|
// Angular's @ContentChild does NOT resolve a directive across a SECOND `<ng-content>` re-projection
|
|
11
|
-
// hop (
|
|
12
|
-
// `<VirtualizedList ...><ng-content></ng-content></VirtualizedList>`
|
|
13
|
-
// itemDir/headerDir/etc. undefined,
|
|
14
|
-
// flat-list.test.ts). Fixed for both column modes
|
|
10
|
+
// hop (only what's projected directly onto the querying component's own tag) — a bare
|
|
11
|
+
// `<VirtualizedList ...><ng-content></ng-content></VirtualizedList>` left VirtualizedList's own
|
|
12
|
+
// itemDir/headerDir/etc. undefined, rendering every cell empty (confirmed device bug, see
|
|
13
|
+
// flat-list.test.ts). Fixed for both column modes:
|
|
15
14
|
// * Single column (numColumns <= 1): FlatList captures the app's `<ng-template vListItem>` (and
|
|
16
15
|
// vListHeader/vListFooter/vListEmpty/vListSeparator) with its OWN @ContentChild — a single,
|
|
17
16
|
// direct projection hop, which always resolves — then re-authors equivalent `<ng-template>`s on
|
|
18
|
-
// `<VirtualizedList>`,
|
|
17
|
+
// `<VirtualizedList>`, forwarding the captured templateRef + context through
|
|
19
18
|
// VListOutletDirective. Item/index/separators pass through 1:1 (no row wrapping).
|
|
20
|
-
// * Multi column (numColumns > 1):
|
|
21
|
-
// while the virtualized stream is rows (IRow<ItemT>), so a plain passthrough couldn't work
|
|
22
|
-
//
|
|
23
|
-
//
|
|
24
|
-
//
|
|
25
|
-
//
|
|
26
|
-
//
|
|
27
|
-
// renderItem with renderRow.
|
|
19
|
+
// * Multi column (numColumns > 1): same re-stamp, but the app's vListItem is typed for ItemT
|
|
20
|
+
// while the virtualized stream is rows (IRow<ItemT>), so a plain passthrough couldn't work
|
|
21
|
+
// regardless. The row vListItem lays out the N columns side by side (each cell stamps the
|
|
22
|
+
// app's item template via VListOutletDirective with context {item, index: row.startIndex +
|
|
23
|
+
// column, separators}), the row vListSeparator unwraps the flanking rows to their last/first
|
|
24
|
+
// item, and onViewableItemsChanged is wrapped with expandRowViewability so the caller still
|
|
25
|
+
// sees per-item visibility — mirrors how Vue's FlatList intercepts renderItem with renderRow.
|
|
28
26
|
//
|
|
29
27
|
// The imperative handle (scrollToIndex / scrollToOffset / scrollToEnd / scrollToItem /
|
|
30
28
|
// recordInteraction / flashScrollIndicators / getScroll* / getNativeScrollRef) is RN's FlatList
|
|
31
|
-
// surface
|
|
32
|
-
//
|
|
33
|
-
//
|
|
34
|
-
//
|
|
29
|
+
// surface, delegated straight to the inner VirtualizedList (@ViewChild). The element-returning
|
|
30
|
+
// props (renderItem / ItemSeparatorComponent / List{Header,Footer,Empty}Component) are templates
|
|
31
|
+
// in Angular, so they're absent from IFlatListProps per the per-adapter children/render split;
|
|
32
|
+
// everything else mirrors IVirtualizedListProps.
|
|
35
33
|
import { CUSTOM_ELEMENTS_SCHEMA, ChangeDetectionStrategy, Component, ContentChild, ElementRef, EventEmitter, Input, Output, ViewChild, inject, } from '@angular/core';
|
|
36
34
|
import { SINGLE_COLUMN, chunkIntoRows, expandRowViewability, firstItemOfRow, lastItemOfRow, rowKeyExtractor, } from '@symbiote-native/components';
|
|
37
35
|
import { dlog, flattenStyle, resolveClassName, } from '@symbiote-native/engine';
|
|
38
36
|
import { VirtualizedList, VListEmptyDirective, VListFooterDirective, VListHeaderDirective, VListItemDirective, VListSeparatorDirective, } from '../virtualized-list';
|
|
39
37
|
import { VListOutletDirective } from '../virtualized-list/directives';
|
|
40
|
-
import { stableAnchorStyle, ViewHost } from '../../primitives';
|
|
38
|
+
import { stableAnchorStyle, SymbioteStyleInputDirective, ViewHost } from '../../primitives';
|
|
41
39
|
import * as i0 from "@angular/core";
|
|
40
|
+
import * as i1 from "../../primitives/shared";
|
|
42
41
|
function isRecord(value) {
|
|
43
42
|
return typeof value === 'object' && value !== null;
|
|
44
43
|
}
|
|
@@ -138,18 +137,15 @@ export class FlatList {
|
|
|
138
137
|
get isMultiColumn() {
|
|
139
138
|
return this.columns > SINGLE_COLUMN;
|
|
140
139
|
}
|
|
141
|
-
ngOnChanges
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
// inline from Renderer2.addClass, before this component's own lifecycle hooks). stableAnchorStyle
|
|
148
|
-
// (not a bare flattenStyle) keeps `resolvedStyle`'s REFERENCE stable across ticks where nothing
|
|
149
|
-
// actually changed — `[style]="resolvedStyle"` binds onto VirtualizedList's own `@Input() style`,
|
|
150
|
-
// which feeds its `ngDoCheck` dedup gate; a fresh object every tick would defeat that gate and
|
|
151
|
-
// free-run change detection forever (see stableAnchorStyle's doc comment).
|
|
140
|
+
// ngDoCheck, NOT ngOnChanges: a bare `class=` never becomes an @Input, so ngOnChanges does not
|
|
141
|
+
// RUN for it and the merge froze at its creation value (a stranded tile on the ReactiveStyle
|
|
142
|
+
// canary). stableAnchorStyle, not a bare flattenStyle, keeps `resolvedStyle`'s reference stable
|
|
143
|
+
// across ticks that changed nothing - a fresh object every tick defeats VirtualizedList's own
|
|
144
|
+
// dedup gate and free-runs CD (see stableAnchorStyle's doc comment).
|
|
145
|
+
ngDoCheck() {
|
|
152
146
|
this.resolvedStyle = stableAnchorStyle(this.elementRef, this.style, this.resolvedStyle);
|
|
147
|
+
}
|
|
148
|
+
ngOnChanges(changes) {
|
|
153
149
|
if (changes['columnWrapperStyle'] !== undefined) {
|
|
154
150
|
// A class-name string resolves through the shared registry before flattenStyle, which
|
|
155
151
|
// only understands style objects/arrays.
|
|
@@ -255,8 +251,8 @@ export class FlatList {
|
|
|
255
251
|
recordInteraction() {
|
|
256
252
|
this.listRef?.recordInteraction();
|
|
257
253
|
}
|
|
258
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.
|
|
259
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.
|
|
254
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: FlatList, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
255
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: FlatList, isStandalone: true, selector: "FlatList", inputs: { data: "data", numColumns: "numColumns", columnWrapperStyle: "columnWrapperStyle", keyExtractor: "keyExtractor", getItemLayout: "getItemLayout", horizontal: "horizontal", inverted: "inverted", extraData: "extraData", onEndReachedThreshold: "onEndReachedThreshold", onStartReachedThreshold: "onStartReachedThreshold", refreshing: "refreshing", progressViewOffset: "progressViewOffset", viewabilityConfig: "viewabilityConfig", viewabilityConfigCallbackPairs: "viewabilityConfigCallbackPairs", initialNumToRender: "initialNumToRender", initialScrollIndex: "initialScrollIndex", maxToRenderPerBatch: "maxToRenderPerBatch", updateCellsBatchingPeriod: "updateCellsBatchingPeriod", windowSize: "windowSize", stickyHeaderIndices: "stickyHeaderIndices", maintainVisibleContentPosition: "maintainVisibleContentPosition", onScroll: "onScroll", onScrollBeginDrag: "onScrollBeginDrag", onScrollEndDrag: "onScrollEndDrag", onMomentumScrollBegin: "onMomentumScrollBegin", onMomentumScrollEnd: "onMomentumScrollEnd", scrollEventThrottle: "scrollEventThrottle", keyboardShouldPersistTaps: "keyboardShouldPersistTaps", keyboardDismissMode: "keyboardDismissMode", style: "style", contentContainerStyle: "contentContainerStyle" }, outputs: { endReached: "endReached", startReached: "startReached", refresh: "refresh", viewableItemsChanged: "viewableItemsChanged", scrollToIndexFailed: "scrollToIndexFailed" }, queries: [{ propertyName: "itemDir", first: true, predicate: VListItemDirective, descendants: true }, { propertyName: "headerDir", first: true, predicate: VListHeaderDirective, descendants: true }, { propertyName: "footerDir", first: true, predicate: VListFooterDirective, descendants: true }, { propertyName: "emptyDir", first: true, predicate: VListEmptyDirective, descendants: true }, { propertyName: "separatorDir", first: true, predicate: VListSeparatorDirective, descendants: true }], viewQueries: [{ propertyName: "listRef", first: true, predicate: VirtualizedList, descendants: true }], usesOnChanges: true, hostDirectives: [{ directive: i1.SymbioteStyleInputDirective, inputs: ["style", "style"] }], ngImport: i0, template: `
|
|
260
256
|
@if (isMultiColumn) {
|
|
261
257
|
<VirtualizedList
|
|
262
258
|
[data]="rows"
|
|
@@ -416,11 +412,12 @@ export class FlatList {
|
|
|
416
412
|
}
|
|
417
413
|
`, isInline: true, dependencies: [{ kind: "component", type: VirtualizedList, selector: "VirtualizedList", inputs: ["data", "getItem", "getItemCount", "keyExtractor", "getItemLayout", "horizontal", "inverted", "extraData", "onEndReachedThreshold", "onStartReachedThreshold", "refreshing", "progressViewOffset", "refreshRequested", "viewabilityConfig", "viewabilityConfigCallbackPairs", "initialNumToRender", "initialScrollIndex", "maxToRenderPerBatch", "updateCellsBatchingPeriod", "windowSize", "stickyHeaderIndices", "maintainVisibleContentPosition", "onScroll", "onScrollBeginDrag", "onScrollEndDrag", "onMomentumScrollBegin", "onMomentumScrollEnd", "scrollEventThrottle", "keyboardShouldPersistTaps", "keyboardDismissMode", "style", "contentContainerStyle", "testID", "nativeID", "accessible", "accessibilityLabel", "accessibilityHint", "accessibilityRole", "accessibilityState", "accessibilityValue", "accessibilityActions", "accessibilityLabelledBy", "importantForAccessibility", "accessibilityLiveRegion", "screenReaderFocusable", "accessibilityViewIsModal", "accessibilityElementsHidden", "accessibilityIgnoresInvertColors", "accessibilityLanguage", "accessibilityRespondsToUserInteraction", "accessibilityShowsLargeContentViewer", "accessibilityLargeContentTitle", "role", "ariaLabel", "ariaLabelledBy", "ariaLive", "ariaHidden", "ariaBusy", "ariaChecked", "ariaDisabled", "ariaExpanded", "ariaSelected", "ariaModal", "ariaValueMax", "ariaValueMin", "ariaValueNow", "ariaValueText"], outputs: ["endReached", "startReached", "refresh", "viewableItemsChanged", "scrollToIndexFailed", "accessibilityAction", "accessibilityTap", "magicTap", "accessibilityEscape"] }, { kind: "directive", type: VListItemDirective, selector: "[vListItem]" }, { kind: "directive", type: VListHeaderDirective, selector: "[vListHeader]" }, { kind: "directive", type: VListFooterDirective, selector: "[vListFooter]" }, { kind: "directive", type: VListEmptyDirective, selector: "[vListEmpty]" }, { kind: "directive", type: VListSeparatorDirective, selector: "[vListSeparator]" }, { kind: "directive", type: VListOutletDirective, selector: "[vListOutlet]", inputs: ["vListOutlet", "vListOutletContext"] }, { kind: "component", type: ViewHost, selector: "symbiote-view, View" }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
418
414
|
}
|
|
419
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.
|
|
415
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: FlatList, decorators: [{
|
|
420
416
|
type: Component,
|
|
421
417
|
args: [{
|
|
422
418
|
selector: 'FlatList',
|
|
423
419
|
standalone: true,
|
|
420
|
+
hostDirectives: [{ directive: SymbioteStyleInputDirective, inputs: ['style'] }],
|
|
424
421
|
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
425
422
|
imports: [
|
|
426
423
|
VirtualizedList,
|