@symbiote-native/angular 0.6.1 → 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.
Files changed (206) hide show
  1. package/README.md +1 -1
  2. package/bin/symbiote-angular-dev.cjs +20 -19
  3. package/build/angular/anchor-host-registry.js +2 -2
  4. package/build/angular/anchor-host-registry.js.map +1 -1
  5. package/build/angular/components/activity-indicator/index.android.d.ts +2 -1
  6. package/build/angular/components/activity-indicator/index.android.js +6 -3
  7. package/build/angular/components/activity-indicator/index.android.js.map +1 -1
  8. package/build/angular/components/activity-indicator/index.ios.d.ts +2 -1
  9. package/build/angular/components/activity-indicator/index.ios.js +6 -3
  10. package/build/angular/components/activity-indicator/index.ios.js.map +1 -1
  11. package/build/angular/components/activity-indicator/shared.js +3 -3
  12. package/build/angular/components/button.d.ts +4 -2
  13. package/build/angular/components/button.js +28 -17
  14. package/build/angular/components/button.js.map +1 -1
  15. package/build/angular/components/flat-list/index.d.ts +5 -3
  16. package/build/angular/components/flat-list/index.js +35 -38
  17. package/build/angular/components/flat-list/index.js.map +1 -1
  18. package/build/angular/components/image/index.android.d.ts +8 -3
  19. package/build/angular/components/image/index.android.js +39 -9
  20. package/build/angular/components/image/index.android.js.map +1 -1
  21. package/build/angular/components/image/index.ios.d.ts +8 -3
  22. package/build/angular/components/image/index.ios.js +39 -9
  23. package/build/angular/components/image/index.ios.js.map +1 -1
  24. package/build/angular/components/image/shared.d.ts +4 -1
  25. package/build/angular/components/image/shared.js +33 -2
  26. package/build/angular/components/image/shared.js.map +1 -1
  27. package/build/angular/components/image-background.d.ts +2 -1
  28. package/build/angular/components/image-background.js +6 -4
  29. package/build/angular/components/image-background.js.map +1 -1
  30. package/build/angular/components/input-accessory-view/index.d.ts +9 -4
  31. package/build/angular/components/input-accessory-view/index.js +43 -9
  32. package/build/angular/components/input-accessory-view/index.js.map +1 -1
  33. package/build/angular/components/keyboard-avoiding-view/index.d.ts +2 -1
  34. package/build/angular/components/keyboard-avoiding-view/index.js +6 -4
  35. package/build/angular/components/keyboard-avoiding-view/index.js.map +1 -1
  36. package/build/angular/components/modal/index.d.ts +11 -8
  37. package/build/angular/components/modal/index.js +45 -28
  38. package/build/angular/components/modal/index.js.map +1 -1
  39. package/build/angular/components/pressable/index.d.ts +11 -5
  40. package/build/angular/components/pressable/index.js +61 -12
  41. package/build/angular/components/pressable/index.js.map +1 -1
  42. package/build/angular/components/refresh-control/index.d.ts +8 -4
  43. package/build/angular/components/refresh-control/index.js +52 -16
  44. package/build/angular/components/refresh-control/index.js.map +1 -1
  45. package/build/angular/components/safe-area-view/index.d.ts +9 -4
  46. package/build/angular/components/safe-area-view/index.js +46 -9
  47. package/build/angular/components/safe-area-view/index.js.map +1 -1
  48. package/build/angular/components/scroll-view/index.android.d.ts +2 -3
  49. package/build/angular/components/scroll-view/index.android.js +49 -52
  50. package/build/angular/components/scroll-view/index.android.js.map +1 -1
  51. package/build/angular/components/scroll-view/index.ios.d.ts +2 -3
  52. package/build/angular/components/scroll-view/index.ios.js +15 -17
  53. package/build/angular/components/scroll-view/index.ios.js.map +1 -1
  54. package/build/angular/components/scroll-view/projection.d.ts +3 -0
  55. package/build/angular/components/scroll-view/projection.js +68 -7
  56. package/build/angular/components/scroll-view/projection.js.map +1 -1
  57. package/build/angular/components/scroll-view/shared.d.ts +14 -5
  58. package/build/angular/components/scroll-view/shared.js +198 -69
  59. package/build/angular/components/scroll-view/shared.js.map +1 -1
  60. package/build/angular/components/scroll-view/sticky-header.js +14 -19
  61. package/build/angular/components/scroll-view/sticky-header.js.map +1 -1
  62. package/build/angular/components/section-list/index.d.ts +2 -1
  63. package/build/angular/components/section-list/index.js +31 -39
  64. package/build/angular/components/section-list/index.js.map +1 -1
  65. package/build/angular/components/switch/index.android.d.ts +7 -3
  66. package/build/angular/components/switch/index.android.js +38 -10
  67. package/build/angular/components/switch/index.android.js.map +1 -1
  68. package/build/angular/components/switch/index.ios.d.ts +7 -3
  69. package/build/angular/components/switch/index.ios.js +38 -10
  70. package/build/angular/components/switch/index.ios.js.map +1 -1
  71. package/build/angular/components/switch/shared.d.ts +12 -3
  72. package/build/angular/components/switch/shared.js +66 -5
  73. package/build/angular/components/switch/shared.js.map +1 -1
  74. package/build/angular/components/text-input.d.ts +10 -2
  75. package/build/angular/components/text-input.js +46 -6
  76. package/build/angular/components/text-input.js.map +1 -1
  77. package/build/angular/components/touchable/index.d.ts +17 -8
  78. package/build/angular/components/touchable/index.js +78 -19
  79. package/build/angular/components/touchable/index.js.map +1 -1
  80. package/build/angular/components/touchable-native-feedback/index.d.ts +6 -3
  81. package/build/angular/components/touchable-native-feedback/index.js +61 -25
  82. package/build/angular/components/touchable-native-feedback/index.js.map +1 -1
  83. package/build/angular/components/virtualized-list/directives.js +18 -18
  84. package/build/angular/components/virtualized-list/index.d.ts +12 -4
  85. package/build/angular/components/virtualized-list/index.js +163 -68
  86. package/build/angular/components/virtualized-list/index.js.map +1 -1
  87. package/build/angular/components/virtualized-section-list/directives.js +12 -12
  88. package/build/angular/components/virtualized-section-list/index.d.ts +2 -1
  89. package/build/angular/components/virtualized-section-list/index.js +6 -4
  90. package/build/angular/components/virtualized-section-list/index.js.map +1 -1
  91. package/build/angular/components.d.ts +1 -1
  92. package/build/angular/components.js +5 -0
  93. package/build/angular/components.js.map +1 -1
  94. package/build/angular/create-portal/index.js +29 -35
  95. package/build/angular/create-portal/index.js.map +1 -1
  96. package/build/angular/create-tunnel/index.js +19 -22
  97. package/build/angular/create-tunnel/index.js.map +1 -1
  98. package/build/angular/descriptor-to-angular/index.js +3 -3
  99. package/build/angular/index.d.ts +4 -2
  100. package/build/angular/index.js +2 -2
  101. package/build/angular/index.js.map +1 -1
  102. package/build/angular/modules/animated/animated-leaf-binder.d.ts +1 -7
  103. package/build/angular/modules/animated/animated-leaf-binder.js +22 -72
  104. package/build/angular/modules/animated/animated-leaf-binder.js.map +1 -1
  105. package/build/angular/modules/animated/create-animated-component.d.ts +11 -6
  106. package/build/angular/modules/animated/create-animated-component.js +83 -50
  107. package/build/angular/modules/animated/create-animated-component.js.map +1 -1
  108. package/build/angular/modules/app-registry/index.js.map +1 -1
  109. package/build/angular/modules/status-bar/index.js +3 -3
  110. package/build/angular/primitives/index.d.ts +1 -1
  111. package/build/angular/primitives/index.js +46 -46
  112. package/build/angular/primitives/index.js.map +1 -1
  113. package/build/angular/primitives/shared.d.ts +39 -1
  114. package/build/angular/primitives/shared.js +110 -9
  115. package/build/angular/primitives/shared.js.map +1 -1
  116. package/build/angular/render/index.js +23 -35
  117. package/build/angular/render/index.js.map +1 -1
  118. package/build/angular/services/color-scheme.service.js +3 -3
  119. package/build/angular/services/window-dimensions.service.js +3 -3
  120. package/package.json +13 -8
  121. package/src/anchor-host-registry.ts +2 -2
  122. package/src/components/activity-indicator/index.android.ts +2 -0
  123. package/src/components/activity-indicator/index.ios.ts +2 -0
  124. package/src/components/button.ts +28 -14
  125. package/src/components/flat-list/index.ts +34 -36
  126. package/src/components/image/index.android.ts +50 -6
  127. package/src/components/image/index.ios.ts +50 -6
  128. package/src/components/image/shared.ts +34 -2
  129. package/src/components/image-background.ts +2 -1
  130. package/src/components/input-accessory-view/index.ts +42 -4
  131. package/src/components/keyboard-avoiding-view/index.ts +7 -1
  132. package/src/components/modal/index.ts +51 -26
  133. package/src/components/pressable/index.ts +67 -8
  134. package/src/components/refresh-control/index.ts +54 -12
  135. package/src/components/safe-area-view/index.ts +50 -5
  136. package/src/components/scroll-view/index.android.ts +34 -41
  137. package/src/components/scroll-view/index.ios.ts +10 -21
  138. package/src/components/scroll-view/projection.ts +79 -7
  139. package/src/components/scroll-view/shared.ts +223 -68
  140. package/src/components/scroll-view/sticky-header.ts +11 -16
  141. package/src/components/section-list/index.ts +27 -36
  142. package/src/components/switch/index.android.ts +48 -7
  143. package/src/components/switch/index.ios.ts +48 -7
  144. package/src/components/switch/shared.ts +79 -3
  145. package/src/components/text-input.ts +52 -2
  146. package/src/components/touchable/index.ts +76 -16
  147. package/src/components/touchable-native-feedback/index.ts +62 -21
  148. package/src/components/virtualized-list/index.ts +137 -44
  149. package/src/components/virtualized-section-list/index.ts +2 -1
  150. package/src/components.ts +5 -0
  151. package/src/create-portal/index.ts +23 -29
  152. package/src/create-tunnel/index.ts +13 -16
  153. package/src/index.ts +30 -1
  154. package/src/modules/animated/animated-leaf-binder.ts +28 -77
  155. package/src/modules/animated/create-animated-component.ts +75 -36
  156. package/src/modules/app-registry/index.ts +6 -8
  157. package/src/primitives/index.ts +1 -0
  158. package/src/primitives/shared.ts +102 -3
  159. package/src/render/index.ts +23 -35
  160. package/build/angular/modules/animated/animated-leaf-binder/index.d.ts +0 -14
  161. package/build/angular/modules/animated/animated-leaf-binder/index.js +0 -91
  162. package/build/angular/modules/animated/animated-leaf-binder/index.js.map +0 -1
  163. package/src/__tests__/responder-change-detection.test.ts +0 -102
  164. package/src/__tests__/responder-nested-cd.test.ts +0 -113
  165. package/src/angular-gaps.test.ts +0 -142
  166. package/src/angular-imports.test.ts +0 -100
  167. package/src/components/activity-indicator/activity-indicator-class-style.test.ts +0 -44
  168. package/src/components/activity-indicator/activity-indicator.test.ts +0 -131
  169. package/src/components/flat-list/column-wrapper-style-class.test.ts +0 -116
  170. package/src/components/flat-list/flat-list-array-style.test.ts +0 -131
  171. package/src/components/flat-list/flat-list-class-style.test.ts +0 -74
  172. package/src/components/flat-list/flat-list-scroll-containment.test.ts +0 -107
  173. package/src/components/flat-list/flat-list.test.ts +0 -99
  174. package/src/components/image/image-class-style.test.ts +0 -46
  175. package/src/components/image-background-class-style.test.ts +0 -48
  176. package/src/components/image-background-style-class.test.ts +0 -79
  177. package/src/components/input-accessory-view/input-accessory-view.test.ts +0 -43
  178. package/src/components/keyboard-avoiding-view/keyboard-avoiding-view.test.ts +0 -54
  179. package/src/components/modal/modal.test.ts +0 -43
  180. package/src/components/pressable/pressable.test.ts +0 -85
  181. package/src/components/refresh-control/refresh-control.test.ts +0 -41
  182. package/src/components/safe-area-view/safe-area-view.test.ts +0 -43
  183. package/src/components/scroll-view/android-scroll-view-axis-projection.test.ts +0 -123
  184. package/src/components/scroll-view/content-container-style-class.test.ts +0 -75
  185. package/src/components/scroll-view/scroll-view-class-style.test.ts +0 -134
  186. package/src/components/scroll-view/scroll-view-projection.test.ts +0 -194
  187. package/src/components/switch/android-switch-class.test.ts +0 -42
  188. package/src/components/switch/switch.test.ts +0 -92
  189. package/src/components/text-input-class-style.test.ts +0 -54
  190. package/src/components/touchable/touchable.test.ts +0 -102
  191. package/src/components/touchable-native-feedback/touchable-native-feedback.test.ts +0 -49
  192. package/src/components/virtualized-list/virtualized-list-class-style.test.ts +0 -76
  193. package/src/components/virtualized-section-list/virtualized-section-list-class-style.test.ts +0 -60
  194. package/src/create-portal/create-portal.test.ts +0 -90
  195. package/src/create-tunnel/create-tunnel.test.ts +0 -120
  196. package/src/descriptor-to-angular/descriptor-outlet.test.ts +0 -94
  197. package/src/host-instance/host-instance.test.ts +0 -49
  198. package/src/modules/animated/animated-leaf-binder/animated-leaf-binder.test.ts +0 -116
  199. package/src/modules/animated/animated-leaf-binder/index.ts +0 -101
  200. package/src/modules/animated/animated-leaf-binder.test.ts +0 -116
  201. package/src/modules/animated/animated-scroll-view.test.ts +0 -102
  202. package/src/modules/app-registry/app-registry.test.ts +0 -106
  203. package/src/modules/status-bar/status-bar.test.ts +0 -50
  204. package/src/render/render.test.ts +0 -147
  205. package/src/renderer/renderer.test.ts +0 -203
  206. package/src/services/services.test.ts +0 -163
package/README.md CHANGED
@@ -78,7 +78,7 @@ export class AppComponent {
78
78
  ```
79
79
 
80
80
  The full canary is [`examples/angular`](../../examples/angular) — a stock RN 0.86 app whose
81
- [`App.ts`](../../examples/angular/App.ts) exercises the same surface as the React and Vue
81
+ [`App.ts`](../../examples/angular/src/App.ts) exercises the same surface as the React and Vue
82
82
  reference canaries, standalone components, zoneless change detection.
83
83
 
84
84
  ---
@@ -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
- // the FOREGROUND process — it reads raw keypresses
5
- // (r/j/d/...) straight off stdin, and any wrapper that pipes stdin through itself
6
- // (concurrently, npm-run-all, ...) breaks that raw-mode read. So ngc runs as a plain background
7
- // child process, never a stdin-owning process manager. `shell: true` resolves `ngc`/
8
- // `react-native` off PATH exactly like the bash script did npm/pnpm/yarn already prepend
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
- // by a hardcoded node_modules/.dotfiles/.js/.map/.metadata.json regex — never ios/android/build),
21
- // so an app's tsconfig.angular.json narrows basePath to its own src/ to keep the native platform
22
- // trees out of the watch (see that file's own comment for the EMFILE story this fixes). That
23
- // value is written relative (portable, checked in) but @angular/compiler-cli's INCREMENTAL
24
- // recompile path (oldProgram reuse, only reachable once `ngc --watch` is already running) calls
25
- // absoluteFrom() on basePath directly and throws "TS500: ... path is not absolute" if it isn't
26
- // already absolute, even though the initial cold compile tolerates a relative one fine. Resolve
27
- // it here, at spawn time, into a throwaway override config — the checked-in tsconfig itself never
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'], { stdio: 'inherit', shell: true });
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', (code) => {
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` `renderer/index.ts` the orphaned `build/angular/
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, symbiote-dev-examples §5e.
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,4FAA4F;AAC5F,iGAAiG;AACjG,6FAA6F;AAC7F,4FAA4F;AAC5F,mDAAmD;AAEnD,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
+ {"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, never>;
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.5", ngImport: i0, type: ActivityIndicator, deps: null, target: i0.ɵɵFactoryTarget.Component });
9
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: ActivityIndicator, isStandalone: true, selector: "ActivityIndicator", usesInheritance: true, 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
+ 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.5", ngImport: i0, type: ActivityIndicator, decorators: [{
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;;AAUjD,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,oGAFlB,oDAAoD,4DAFpD,gBAAgB;;2FAIf,iBAAiB;kBAP7B,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,gBAAgB,CAAC;oBAC3B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,QAAQ,EAAE,oDAAoD;iBAC/D"}
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, never>;
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.5", ngImport: i0, type: ActivityIndicator, deps: null, target: i0.ɵɵFactoryTarget.Component });
9
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", type: ActivityIndicator, isStandalone: true, selector: "ActivityIndicator", usesInheritance: true, 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
+ 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.5", ngImport: i0, type: ActivityIndicator, decorators: [{
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;;AAGjD,MAAM,iBAAiB,GAAG,SAAS,CAAC;AASpC,MAAM,OAAO,iBAAkB,SAAQ,qBAAqB;IACvC,YAAY,GAAG,iBAAiB,CAAC;uGADzC,iBAAiB;2FAAjB,iBAAiB,oGAFlB,oDAAoD,4DAFpD,gBAAgB;;2FAIf,iBAAiB;kBAP7B,SAAS;mBAAC;oBACT,QAAQ,EAAE,mBAAmB;oBAC7B,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,gBAAgB,CAAC;oBAC3B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,QAAQ,EAAE,oDAAoD;iBAC/D"}
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.5", ngImport: i0, type: ActivityIndicatorBase, deps: [], target: i0.ɵɵFactoryTarget.Directive });
151
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.5", 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 });
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.5", ngImport: i0, type: ActivityIndicatorBase, decorators: [{
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; here Angular only composes its TouchableOpacity + a
4
- // symbiote-text child and re-maps the few Button-owned props. The Angular twin of the React/Vue
5
- // adapter's Button. No JS-side platform branch, so this stays a flat single file.
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 `disabled`
8
- // into the accessibility state; those three win over any caller value. `title` becomes the Text
9
- // child; disabled forwards straight; touchSoundDisabled maps to the pressable's android_disableSound.
10
- // Every OTHER field of the shared IButtonProps (title, color, disabled, touchSoundDisabled, testID,
11
- // TV-focus, accessibility state) is agnostic and stays RE-EXPORTED from @symbiote-native/components
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 SAME onPress
15
- // field the same way (`Omit<ICoreButtonProps, 'onPress'>` + a `press` emit) — not a new precedent, the
16
- // existing one extended to accessibility.
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 anchorStyleProp(this.elementRef);
105
+ return this.anchorStyleValue();
95
106
  }
96
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.5", ngImport: i0, type: Button, deps: [], target: i0.ɵɵFactoryTarget.Component });
97
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.5", 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: `
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.5", ngImport: i0, type: Button, decorators: [{
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":"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"}
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, never>;
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). All windowing /
4
- // viewability / batching / imperative scrolling are inherited from VirtualizedList; the data
5
- // shaping (chunkIntoRows / rowKeyExtractor / expandRowViewability / row-separator unwrap) is shared
6
- // verbatim from @symbiote-native/components, exactly as the React and Vue FlatLists reuse it. This is the
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 (it only sees what was projected directly onto the querying component's own tag) — a bare
12
- // `<VirtualizedList ...><ng-content></ng-content></VirtualizedList>` here left VirtualizedList's own
13
- // itemDir/headerDir/etc. undefined, so every cell rendered empty (a real, confirmed device bug see
14
- // flat-list.test.ts). Fixed for both column modes the same way:
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>`, each forwarding the captured templateRef + context through
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): the same re-stamp, but the app's vListItem is typed for ItemT
21
- // while the virtualized stream is rows (IRow<ItemT>), so a plain passthrough couldn't work even if
22
- // the projection issue didn't exist. The row vListItem lays out the N columns side by side (each
23
- // cell stamps the app's item template via VListOutletDirective with the per-item context {item,
24
- // index: row.startIndex + column, separators}), the row vListSeparator unwraps the flanking rows
25
- // to their last/first item, and onViewableItemsChanged is wrapped with expandRowViewability so the
26
- // caller still sees per-item visibility. This mirrors exactly how Vue's FlatList intercepts
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; FlatList re-exposes it by delegating to the inner VirtualizedList (@ViewChild). The
32
- // element-returning props (renderItem / ItemSeparatorComponent / List{Header,Footer,Empty}Component)
33
- // are templates in Angular, so they are absent from IFlatListProps, per the per-adapter
34
- // children/render prop split; everything agnostic mirrors IVirtualizedListProps.
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(changes) {
142
- // Recomputed on EVERY ngOnChanges call, not gated on `changes['style']`: a class= on the
143
- // FlatList use site (no matching [style] binding at all) never appears in `changes`, so a
144
- // guard here would permanently skip picking up anchorHostStyle for that (the actual bug-report
145
- // shape) ngOnChanges still fires at least once at mount via the required `data` @Input(), and
146
- // by then the anchor's class-derived style is already resolved synchronously (routeProp runs
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.5", ngImport: i0, type: FlatList, deps: [], target: i0.ɵɵFactoryTarget.Component });
259
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.5", 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, ngImport: i0, template: `
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.5", ngImport: i0, type: FlatList, decorators: [{
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,