@symbiote-native/blur 0.0.0 → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +187 -21
- package/build/angular/blur-target-view/index.android.js +4 -1
- package/build/angular/blur-view.js +3 -1
- package/build/solid/blur.js +1 -1
- package/build-ngc/angular/blur-target-view/index.android.js +8 -2
- package/build-ngc/angular/blur-target-view/index.android.js.map +1 -1
- package/build-ngc/angular/blur-target-view/shared.js.map +1 -1
- package/build-ngc/angular/blur-view.js +6 -2
- package/build-ngc/angular/blur-view.js.map +1 -1
- package/build-ngc/core/blur.js.map +1 -1
- package/package.json +15 -15
- package/src/angular/blur-target-view/index.android.ts +9 -2
- package/src/angular/blur-target-view/shared.ts +2 -1
- package/src/angular/blur-view.ts +3 -1
- package/src/core/blur.ts +8 -4
- package/src/react/blur.ts +4 -1
- package/src/solid/blur.ts +7 -1
package/README.md
CHANGED
|
@@ -4,17 +4,72 @@
|
|
|
4
4
|
[SymbioteNative](../../README.md) adapter: React, Vue, Svelte, Solid and Angular. `BlurView` blurs
|
|
5
5
|
what is behind it, `BlurTargetView` marks the content Android blurs.
|
|
6
6
|
|
|
7
|
+
Built the same way as [`@symbiote-native/clipboard`](../clipboard)'s `ClipboardPasteButton`, an
|
|
8
|
+
`expo-modules-core` native view reached through `requireNativeViewManager` (see the
|
|
9
|
+
`symbiote-expo-native-module` project skill: why `expo-modules-core` is depended on directly and never
|
|
10
|
+
the `expo` meta-package, why the upstream JS is hand-ported into `core/`, and how autolinking finds the
|
|
11
|
+
native module). One render function in `core/` returns a descriptor and every adapter only turns it into
|
|
12
|
+
its own element.
|
|
13
|
+
|
|
7
14
|
## Install
|
|
8
15
|
|
|
16
|
+
**New app:**
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
npx @symbiote-native/cli new my-app --blur
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
**Existing SymbioteNative app:**
|
|
23
|
+
|
|
9
24
|
```bash
|
|
10
|
-
npx @symbiote-native/cli
|
|
11
|
-
|
|
25
|
+
npx @symbiote-native/cli add --blur
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Either way: installs `@symbiote-native/blur` and wires the native autolinking automatically,
|
|
29
|
+
see [`@symbiote-native/cli`](../cli).
|
|
30
|
+
|
|
31
|
+
<details>
|
|
32
|
+
<summary>Manual install (no CLI - installing and wiring native autolinking by hand)</summary>
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install @symbiote-native/blur
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Depends on `expo-blur` and `expo-modules-core` directly (regular dependencies, pinned to exact
|
|
39
|
+
versions, since this package's `core/` is hand-ported against one specific native API shape).
|
|
40
|
+
Never install `expo-blur` yourself, and never add the `expo` package to this project: it bundles
|
|
41
|
+
its own Metro/Babel pipeline that conflicts with this project's own.
|
|
42
|
+
|
|
43
|
+
### Required one-time step: native autolinking wiring
|
|
44
|
+
|
|
45
|
+
`expo-blur`'s native code is discovered by `expo-modules-autolinking`, not by RN's own
|
|
46
|
+
`react-native.config.cjs` mechanism. Wire it into the native host app **once**, it covers this package
|
|
47
|
+
and every other `expo-modules-core` package with zero further changes. The steps and the
|
|
48
|
+
mechanics behind them are in the `symbiote-expo-native-module` skill and in
|
|
49
|
+
[`@symbiote-native/network`](../network)'s README; the reference app is `examples/expo-react`.
|
|
50
|
+
|
|
51
|
+
</details>
|
|
52
|
+
|
|
53
|
+
## Shape
|
|
54
|
+
|
|
12
55
|
```
|
|
56
|
+
src/core/ blur.ts - props, the blurMethod warning, watchBlurTarget, renderBlurView
|
|
57
|
+
(a View carrying style over an absolute-fill native blur, both platforms) and
|
|
58
|
+
renderBlurTargetView (native on Android, a plain View on iOS).
|
|
59
|
+
src/react/ @symbiote-native/blur/react - BlurView, BlurTargetView
|
|
60
|
+
src/vue/ @symbiote-native/blur/vue - BlurView, BlurTargetView
|
|
61
|
+
src/svelte/ @symbiote-native/blur/svelte - BlurView, BlurTargetView (.svelte)
|
|
62
|
+
src/solid/ @symbiote-native/blur/solid - BlurView, BlurTargetView
|
|
63
|
+
src/angular/ @symbiote-native/blur/angular - BlurView, BlurTargetView
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
`blurTarget` is each adapter's own reference to a `BlurTargetView`. The package resolves it to a node
|
|
67
|
+
and waits for the commit (`watchBlurTarget`) before telling native, so a Vue or Svelte render order cannot
|
|
68
|
+
hand native a tag that does not exist yet.
|
|
13
69
|
|
|
14
|
-
|
|
15
|
-
Never install `expo-blur` or the `expo` meta-package yourself.
|
|
70
|
+
## Use it
|
|
16
71
|
|
|
17
|
-
|
|
72
|
+
### React
|
|
18
73
|
|
|
19
74
|
```tsx
|
|
20
75
|
import { BlurTargetView, BlurView } from '@symbiote-native/blur/react';
|
|
@@ -29,24 +84,135 @@ const target = useRef<IHostInstance>(null);
|
|
|
29
84
|
</BlurView>;
|
|
30
85
|
```
|
|
31
86
|
|
|
32
|
-
|
|
33
|
-
|
|
87
|
+
### Vue
|
|
88
|
+
|
|
89
|
+
```vue
|
|
90
|
+
<script setup lang="ts">
|
|
91
|
+
import { ref } from '@vue/runtime-core';
|
|
92
|
+
import { BlurTargetView, BlurView } from '@symbiote-native/blur/vue';
|
|
93
|
+
|
|
94
|
+
const target = ref(null);
|
|
95
|
+
</script>
|
|
96
|
+
|
|
97
|
+
<template>
|
|
98
|
+
<BlurTargetView ref="target"><image :source="photo" /></BlurTargetView>
|
|
99
|
+
<BlurView :blur-target="target" blur-method="dimezisBlurView" tint="light" :intensity="60">
|
|
100
|
+
<text>Over the blur</text>
|
|
101
|
+
</BlurView>
|
|
102
|
+
</template>
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
### Angular
|
|
106
|
+
|
|
107
|
+
```ts
|
|
108
|
+
import { BlurTargetView, BlurView } from '@symbiote-native/blur/angular';
|
|
109
|
+
|
|
110
|
+
@Component({
|
|
111
|
+
imports: [BlurTargetView, BlurView],
|
|
112
|
+
template: `
|
|
113
|
+
<BlurTargetView #target><image [source]="photo" /></BlurTargetView>
|
|
114
|
+
<BlurView [blurTarget]="target" blurMethod="dimezisBlurView" tint="light" [intensity]="60">
|
|
115
|
+
<text>Over the blur</text>
|
|
116
|
+
</BlurView>
|
|
117
|
+
`,
|
|
118
|
+
})
|
|
119
|
+
export class Card {}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Svelte
|
|
123
|
+
|
|
124
|
+
```svelte
|
|
125
|
+
<script lang="ts">
|
|
126
|
+
import { BlurTargetView, BlurView } from '@symbiote-native/blur/svelte';
|
|
127
|
+
|
|
128
|
+
let target = $state<unknown>();
|
|
129
|
+
</script>
|
|
130
|
+
|
|
131
|
+
<BlurTargetView bind:ref={target}><image source={photo} /></BlurTargetView>
|
|
132
|
+
<BlurView blurTarget={target} blurMethod="dimezisBlurView" tint="light" intensity={60}>
|
|
133
|
+
<text>Over the blur</text>
|
|
134
|
+
</BlurView>
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Solid
|
|
138
|
+
|
|
139
|
+
```tsx
|
|
140
|
+
import { createSignal } from 'solid-js';
|
|
141
|
+
import { BlurTargetView, BlurView } from '@symbiote-native/blur/solid';
|
|
142
|
+
|
|
143
|
+
const [target, setTarget] = createSignal<IHostInstance>();
|
|
144
|
+
|
|
145
|
+
<BlurTargetView ref={setTarget}><image source={photo} /></BlurTargetView>;
|
|
146
|
+
<BlurView blurTarget={target()} blurMethod="dimezisBlurView" tint="light" intensity={60}>
|
|
147
|
+
<text>Over the blur</text>
|
|
148
|
+
</BlurView>;
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## API
|
|
152
|
+
|
|
153
|
+
```ts
|
|
154
|
+
<BlurView
|
|
155
|
+
tint?={'default' | 'light' | 'dark' | 'extraLight' | 'regular' | system materials}
|
|
156
|
+
intensity?={number} // 1..100, default 50
|
|
157
|
+
blurMethod?={'none' | 'dimezisBlurView' | 'dimezisBlurViewSdk31Plus'} // Android, default 'none'
|
|
158
|
+
blurReductionFactor?={number} // Android, divides the intensity, default 4
|
|
159
|
+
blurTarget?={BlurTargetView ref} // Android, needed by the dimezis methods
|
|
160
|
+
style? testID? nativeID? onLayout? ...View accessibility and responder props
|
|
161
|
+
/>
|
|
162
|
+
<BlurTargetView ref> // native on Android, a plain View on iOS
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Ported from upstream's `BlurView.tsx` and `BlurTargetView.tsx`.
|
|
166
|
+
|
|
167
|
+
## Notes
|
|
168
|
+
|
|
169
|
+
- **Android blurs nothing until you ask for it.** `blurMethod` defaults to `none`, which is only a
|
|
170
|
+
translucent view. Pick `dimezisBlurView` (or `dimezisBlurViewSdk31Plus`) and pass a `blurTarget`.
|
|
171
|
+
Without a target the package warns and falls back to `none`.
|
|
172
|
+
- **One `BlurTargetView` can serve many `BlurView`s**, as long as they all sit inside its bounds.
|
|
173
|
+
That is cheaper than one target per blur.
|
|
174
|
+
- **The blur view must be above what it blurs.** Place it after the content in the tree (or give it
|
|
175
|
+
a higher `zIndex`), not beside or under it.
|
|
176
|
+
- **Every iOS tint adds a translucent layer.** Each `tint` is a system material that sits over the
|
|
177
|
+
blur, and iOS exposes no plain blur radius. Android and the fallback can go without a tint.
|
|
178
|
+
- **`blurReductionFactor` is Android only.** It divides the intensity to bring the Android blur
|
|
179
|
+
closer to iOS.
|
|
180
|
+
- **Without the native view you get a plain `View`.** The package logs
|
|
181
|
+
`BlurView is not available on this platform` and renders your children without a blur.
|
|
182
|
+
- **Not ported.** The web variant (`BlurView.web.tsx`, `getBackgroundColor`) and the Reanimated `getAnimatableRef` hook. Angular templates spell the Android target tag statically, so an `__expo_app_identifier__` suffix makes it warn instead of render.
|
|
34
183
|
|
|
35
|
-
|
|
36
|
-
| ------- | -------------------------------------- |
|
|
37
|
-
| React | `ref` object on `BlurTargetView` |
|
|
38
|
-
| Vue | template ref on `BlurTargetView` |
|
|
39
|
-
| Svelte | `bind:ref` on `BlurTargetView` |
|
|
40
|
-
| Solid | `ref={setTarget}` signal value |
|
|
41
|
-
| Angular | template reference variable `#target` |
|
|
184
|
+
## Common questions
|
|
42
185
|
|
|
43
|
-
|
|
186
|
+
- **Nothing is blurred on Android.** `blurMethod` defaults to `none`. Wrap the content in a
|
|
187
|
+
`BlurTargetView`, pass its ref as `blurTarget` and set `blurMethod="dimezisBlurView"`.
|
|
188
|
+
- **The blur does not follow a scrolling list.** Render the blur view after the content, or give it
|
|
189
|
+
a higher `zIndex`. Beside or below the list it shows nothing.
|
|
190
|
+
- **Inside a `Modal` on Android.** Put the `Modal` inside the `BlurTargetView` and point the
|
|
191
|
+
`BlurView` in the `Modal` at that target. Not demoed in the canary apps.
|
|
192
|
+
- **Corners are not rounded.** Put `overflow: 'hidden'` next to the `borderRadius`.
|
|
193
|
+
- **Missing on some iPhones.** Settings > Accessibility > Display & Text Size > Reduce Transparency
|
|
194
|
+
turns blur off. Render a solid fallback.
|
|
195
|
+
- **No tint.** Not possible on iOS, every system blur style adds a tint layer.
|
|
196
|
+
- **Animating `intensity`.** It is a plain prop, drive it from state, a signal or a rune.
|
|
197
|
+
- **Android build cannot find `BlurView`.** The library comes from JitPack, which React Native's
|
|
198
|
+
Gradle plugin adds by default. It fails if `react.includeJitpackRepository=false`.
|
|
44
199
|
|
|
45
|
-
|
|
46
|
-
|
|
200
|
+
Sources: [Expo docs: BlurView](https://docs.expo.dev/versions/latest/sdk/blur-view/),
|
|
201
|
+
[expo/expo#6613](https://github.com/expo/expo/issues/6613),
|
|
202
|
+
[expo/expo#44165](https://github.com/expo/expo/issues/44165),
|
|
203
|
+
[expo/expo#18615](https://github.com/expo/expo/issues/18615),
|
|
204
|
+
[expo/expo#34737](https://github.com/expo/expo/issues/34737),
|
|
205
|
+
[expo/expo#49240](https://github.com/expo/expo/issues/49240),
|
|
206
|
+
[expo/expo#32781](https://github.com/expo/expo/issues/32781),
|
|
207
|
+
[expo/expo#34141](https://github.com/expo/expo/issues/34141).
|
|
47
208
|
|
|
48
|
-
##
|
|
209
|
+
## Test it
|
|
49
210
|
|
|
50
|
-
The
|
|
51
|
-
|
|
52
|
-
|
|
211
|
+
No device is needed for the logic. The core tests (`src/core/*.test.ts`) replace `expo-modules-core`
|
|
212
|
+
(`requireNativeViewManager`, `Platform`) and assert the descriptor a render function returns. The
|
|
213
|
+
adapter tests (`src/{react,vue,solid,angular}/**/*.test.*`, `vitest`) render the real component over the
|
|
214
|
+
recording Fabric with an injected view config and assert the committed payload, and Svelte's
|
|
215
|
+
`*.smoke.test.ts` compile the `.svelte` files and mount them. Painting itself is verified on a device in
|
|
216
|
+
the six `examples/expo-*` canary apps (`examples/expo-react`, `examples/expo-vue-sfc`,
|
|
217
|
+
`examples/expo-vue-tsx`, `examples/expo-svelte`, `examples/expo-solid`, `examples/expo-angular`), see the
|
|
218
|
+
parent [README](../../README.md).
|
|
@@ -47,7 +47,10 @@ let BlurTargetView = (() => {
|
|
|
47
47
|
schemas: [NO_ERRORS_SCHEMA],
|
|
48
48
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
49
49
|
// Имя тега это нативное имя view, его нельзя собрать динамически
|
|
50
|
-
template: `<ViewManagerAdapter_ExpoBlur_ExpoBlurTargetView
|
|
50
|
+
template: `<ViewManagerAdapter_ExpoBlur_ExpoBlurTargetView
|
|
51
|
+
#host
|
|
52
|
+
[symbioteHostProps]="hostProps"
|
|
53
|
+
>
|
|
51
54
|
<ng-content />
|
|
52
55
|
</ViewManagerAdapter_ExpoBlur_ExpoBlurTargetView>`,
|
|
53
56
|
})];
|
|
@@ -43,7 +43,9 @@ let BlurView = (() => {
|
|
|
43
43
|
imports: [DescriptorHost],
|
|
44
44
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
45
45
|
template: `@if (descriptor; as node) {
|
|
46
|
-
<symbiote-descriptor-host [node]="node"
|
|
46
|
+
<symbiote-descriptor-host [node]="node"
|
|
47
|
+
><ng-content
|
|
48
|
+
/></symbiote-descriptor-host>
|
|
47
49
|
}`,
|
|
48
50
|
})];
|
|
49
51
|
let _classDescriptor;
|
package/build/solid/blur.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { createEffect, createSignal, onCleanup, onMount, splitProps } from 'solid-js';
|
|
1
|
+
import { createEffect, createSignal, onCleanup, onMount, splitProps, } from 'solid-js';
|
|
2
2
|
import { defineDescriptorComponent, descriptorToSolid, } from '@symbiote-native/solid';
|
|
3
3
|
import { renderBlurTargetView, renderBlurView, warnBlurProps, watchBlurTarget, } from '../core/index.js';
|
|
4
4
|
/** Solid twin of `expo-blur`'s `BlurView`, children paint over the blur */
|
|
@@ -16,7 +16,10 @@ export class BlurTargetView extends BlurTargetViewBase {
|
|
|
16
16
|
return this.hostRef.nativeElement;
|
|
17
17
|
}
|
|
18
18
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: BlurTargetView, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
19
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: BlurTargetView, isStandalone: true, selector: "BlurTargetView", viewQueries: [{ propertyName: "hostRef", first: true, predicate: ["host"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: `<ViewManagerAdapter_ExpoBlur_ExpoBlurTargetView
|
|
19
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.0.8", type: BlurTargetView, isStandalone: true, selector: "BlurTargetView", viewQueries: [{ propertyName: "hostRef", first: true, predicate: ["host"], descendants: true, read: ElementRef, static: true }], usesInheritance: true, ngImport: i0, template: `<ViewManagerAdapter_ExpoBlur_ExpoBlurTargetView
|
|
20
|
+
#host
|
|
21
|
+
[symbioteHostProps]="hostProps"
|
|
22
|
+
>
|
|
20
23
|
<ng-content />
|
|
21
24
|
</ViewManagerAdapter_ExpoBlur_ExpoBlurTargetView>`, isInline: true, dependencies: [{ kind: "directive", type: SymbioteHostPropsDirective, selector: "[symbioteHostProps]", inputs: ["symbioteHostProps"], exportAs: ["symbioteHost"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
22
25
|
}
|
|
@@ -29,7 +32,10 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
29
32
|
schemas: [NO_ERRORS_SCHEMA],
|
|
30
33
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
31
34
|
// Имя тега это нативное имя view, его нельзя собрать динамически
|
|
32
|
-
template: `<ViewManagerAdapter_ExpoBlur_ExpoBlurTargetView
|
|
35
|
+
template: `<ViewManagerAdapter_ExpoBlur_ExpoBlurTargetView
|
|
36
|
+
#host
|
|
37
|
+
[symbioteHostProps]="hostProps"
|
|
38
|
+
>
|
|
33
39
|
<ng-content />
|
|
34
40
|
</ViewManagerAdapter_ExpoBlur_ExpoBlurTargetView>`,
|
|
35
41
|
}]
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.android.js","sourceRoot":"","sources":["../../../src/angular/blur-target-view/index.android.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;;AAE9C,MAAM,YAAY,GAAG,gDAAgD,CAAC;AAEtE,wFAAwF;
|
|
1
|
+
{"version":3,"file":"index.android.js","sourceRoot":"","sources":["../../../src/angular/blur-target-view/index.android.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,UAAU,EACV,gBAAgB,EAChB,SAAS,GACV,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC;AACtE,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;;AAE9C,MAAM,YAAY,GAAG,gDAAgD,CAAC;AAEtE,wFAAwF;AAexF,MAAM,OAAO,cAAe,SAAQ,kBAAkB;IAEnC,OAAO,CAAuB;IAE/C;QACE,KAAK,EAAE,CAAC;QACR,uBAAuB,CACrB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,CACrB,CAAC;IACJ,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;IACpC,CAAC;uGAfU,cAAc;2FAAd,cAAc,sJACE,UAAU,kEAR3B;;;;;oDAKwC,4DATxC,0BAA0B;;2FAWzB,cAAc;kBAd1B,SAAS;mBAAC;oBACT,QAAQ,EAAE,gBAAgB;oBAC1B,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,0BAA0B,CAAC;oBACrC,OAAO,EAAE,CAAC,gBAAgB,CAAC;oBAC3B,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,iEAAiE;oBACjE,QAAQ,EAAE;;;;;oDAKwC;iBACnD;;sBAEE,SAAS;uBAAC,MAAM,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/angular/blur-target-view/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;;AAElD,gEAAgE;AAEhE,MAAM,OAAgB,kBAAmB,SAAQ,cAAc;IAI1C,SAAS,
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/angular/blur-target-view/shared.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;;AAElD,gEAAgE;AAEhE,MAAM,OAAgB,kBAAmB,SAAQ,cAAc;IAI1C,SAAS,GAC1B,EAA2D,CAAC;IAE3C,UAAU,CAAC,KAAa;QACzC,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC;IACtC,CAAC;uGAbmB,kBAAkB;2FAAlB,kBAAkB;;2FAAlB,kBAAkB;kBADvC,SAAS"}
|
|
@@ -47,7 +47,9 @@ export class BlurView extends NativeViewBase {
|
|
|
47
47
|
}
|
|
48
48
|
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: BlurView, deps: null, target: i0.ɵɵFactoryTarget.Component });
|
|
49
49
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.8", type: BlurView, isStandalone: true, selector: "BlurView", inputs: { tint: "tint", intensity: "intensity", blurReductionFactor: "blurReductionFactor", experimentalBlurMethod: "experimentalBlurMethod", blurMethod: "blurMethod", blurTarget: "blurTarget" }, usesInheritance: true, usesOnChanges: true, ngImport: i0, template: `@if (descriptor; as node) {
|
|
50
|
-
<symbiote-descriptor-host [node]="node"
|
|
50
|
+
<symbiote-descriptor-host [node]="node"
|
|
51
|
+
><ng-content
|
|
52
|
+
/></symbiote-descriptor-host>
|
|
51
53
|
}`, isInline: true, dependencies: [{ kind: "component", type: DescriptorHost, selector: "symbiote-descriptor-host", inputs: ["node"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
52
54
|
}
|
|
53
55
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: BlurView, decorators: [{
|
|
@@ -58,7 +60,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImpor
|
|
|
58
60
|
imports: [DescriptorHost],
|
|
59
61
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
60
62
|
template: `@if (descriptor; as node) {
|
|
61
|
-
<symbiote-descriptor-host [node]="node"
|
|
63
|
+
<symbiote-descriptor-host [node]="node"
|
|
64
|
+
><ng-content
|
|
65
|
+
/></symbiote-descriptor-host>
|
|
62
66
|
}`,
|
|
63
67
|
}]
|
|
64
68
|
}], propDecorators: { tint: [{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blur-view.js","sourceRoot":"","sources":["../../src/angular/blur-view.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,KAAK,GAKN,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,cAAc,EACd,UAAU,GACX,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;;AAGzE,2FAA2F;
|
|
1
|
+
{"version":3,"file":"blur-view.js","sourceRoot":"","sources":["../../src/angular/blur-view.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,SAAS,EACT,KAAK,GAKN,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,cAAc,EACd,UAAU,GACX,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;;AAGzE,2FAA2F;AAY3F,MAAM,OAAO,QACX,SAAQ,cAAc;IAGb,IAAI,CAA0B;IAC9B,SAAS,CAA+B;IACxC,mBAAmB,CAAyC;IAC5D,sBAAsB,CAA4C;IAClE,UAAU,CAAgC;IACnD,4EAA4E;IACnE,UAAU,CAAW;IAEF,SAAS,GAAG;QACtC,MAAM;QACN,WAAW;QACX,qBAAqB;QACrB,wBAAwB;QACxB,YAAY;KACkC,CAAC;IAEzC,YAAY,CAAqB;IACjC,WAAW,GAAG,GAAS,EAAE,GAAE,CAAC,CAAC;IAC7B,WAAW,GAAG,KAAK,CAAC;IAET,UAAU,CAAC,KAAa;QACzC,OAAO,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAClD,CAAC;IAED,kFAAkF;IAClF,eAAe;QACb,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,aAAa,CACX,MAAM,CAAC,WAAW,CAChB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAC5D,EACD,IAAI,CAAC,UAAU,KAAK,SAAS,CAC9B,CAAC;IACJ,CAAC;IAEQ,WAAW,CAAC,OAAsB;QACzC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC3B,IAAI,IAAI,CAAC,WAAW,IAAI,YAAY,IAAI,OAAO;YAAE,IAAI,CAAC,WAAW,EAAE,CAAC;IACtE,CAAC;IAEkB,WAAW;QAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAEO,WAAW;QACjB,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,EAAE;YACnE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC;uGAvDU,QAAQ;2FAAR,QAAQ,oTANT;;;;IAIR,4DANQ,cAAc;;2FAQb,QAAQ;kBAXpB,SAAS;mBAAC;oBACT,QAAQ,EAAE,UAAU;oBACpB,UAAU,EAAE,IAAI;oBAChB,OAAO,EAAE,CAAC,cAAc,CAAC;oBACzB,eAAe,EAAE,uBAAuB,CAAC,MAAM;oBAC/C,QAAQ,EAAE;;;;IAIR;iBACH;;sBAKE,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBACL,KAAK;;sBAEL,KAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blur.js","sourceRoot":"","sources":["../../src/core/blur.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,OAAO,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAOjD,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,aAAa,GACd,MAAM,yBAAyB,CAAC;AAOjC,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAC3C,MAAM,cAAc,GAAG,cAAc,CAAC;AACtC,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEnD,MAAM,YAAY,GAAG;IACnB,MAAM;IACN,iBAAiB;IACjB,0BAA0B;CAClB,CAAC;AAKX,MAAM,mBAAmB,GAAgB,YAAY,CAAC,CAAC,CAAC,CAAC;AA+DzD,iEAAiE;AACjE,MAAM,SAAS,GAAwB,IAAI,GAAG,CAAuB;IACnE,MAAM;IACN,WAAW;IACX,qBAAqB;IACrB,wBAAwB;IACxB,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG;IACpB,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,GAAG,EAAE,CAAC;IACN,MAAM,EAAE,CAAC;CACV,CAAC;AAEF,MAAM,eAAe,GAAG,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC;AAE3D,MAAM,yBAAyB,GAC7B,kGAAkG,CAAC;AAErG,2EAA2E;AAC3E,MAAM,KAAK,GAAG,qBAAqB,
|
|
1
|
+
{"version":3,"file":"blur.js","sourceRoot":"","sources":["../../src/core/blur.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,OAAO,EAAE,QAAQ,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,6BAA6B,CAAC;AAOjD,OAAO,EACL,qBAAqB,EACrB,YAAY,EACZ,cAAc,EACd,aAAa,GACd,MAAM,yBAAyB,CAAC;AAOjC,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAC3C,MAAM,cAAc,GAAG,cAAc,CAAC;AACtC,MAAM,qBAAqB,GAAG,oBAAoB,CAAC;AAEnD,MAAM,YAAY,GAAG;IACnB,MAAM;IACN,iBAAiB;IACjB,0BAA0B;CAClB,CAAC;AAKX,MAAM,mBAAmB,GAAgB,YAAY,CAAC,CAAC,CAAC,CAAC;AA+DzD,iEAAiE;AACjE,MAAM,SAAS,GAAwB,IAAI,GAAG,CAAuB;IACnE,MAAM;IACN,WAAW;IACX,qBAAqB;IACrB,wBAAwB;IACxB,YAAY;CACb,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG;IACpB,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,CAAC;IACP,KAAK,EAAE,CAAC;IACR,GAAG,EAAE,CAAC;IACN,MAAM,EAAE,CAAC;CACV,CAAC;AAEF,MAAM,eAAe,GAAG,EAAE,eAAe,EAAE,aAAa,EAAE,CAAC;AAE3D,MAAM,yBAAyB,GAC7B,kGAAkG,CAAC;AAErG,2EAA2E;AAC3E,MAAM,KAAK,GAAG,qBAAqB,CACjC,wBAAwB,EACxB,gBAAgB,EAChB;IACE,IAAI,EAAE,cAAc;IACpB,MAAM,EAAE,qBAAqB;CAC9B,CACF,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;AAC5C,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;AACpD,MAAM,CAAC,MAAM,oBAAoB,GAAG,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC;AAChE,MAAM,CAAC,MAAM,0BAA0B,GAAG,KAAK,CAAC,MAAM,CAAC,gBAAgB,CAAC;AAExE,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,MAAM,QAAQ,GAAY,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAC3D,MAAM,UAAU,GAAY,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;IACzE,IAAI,YAAY,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5C,OAAO,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC;AACrE,CAAC;AAED,wFAAwF;AACxF,MAAM,UAAU,aAAa,CAAC,KAAa,EAAE,aAAsB;IACjE,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3E,IAAI,eAAe,IAAI,MAAM,KAAK,mBAAmB,IAAI,CAAC,aAAa,EAAE,CAAC;QACxE,OAAO,CAAC,IAAI,CACV,0BAA0B,MAAM,+OAA+O,CAChR,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,wBAAwB,CAAC,IAAI,IAAI,EAAE,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAe,EACf,IAAsC;IAEtC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC,SAAS,CAAC,CAAC;QAChB,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,aAAa,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;AACjE,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,cAAc,CAC5B,KAAa,EACb,YAAuC;IAEvC,MAAM,SAAS,GAAG,MAAM,CAAC,WAAW,CAClC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAC7D,CAAC;IACF,MAAM,KAAK,GAAG,CAAC,eAAe,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,IAAI,CAAC,oBAAoB,EAAE,EAAE,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QAC3D,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,IAAI,GAAY,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACjD,MAAM,SAAS,GAAY,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAY,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,qBAAqB,CAAC,CAAC;IACrE,MAAM,MAAM,GAAG,EAAE,CAAC,YAAY,EAAE,EAAE;QAChC,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,IAAI,EAAE,IAAI,IAAI,SAAS;QACvB,SAAS,EAAE,SAAS,IAAI,EAAE;QAC1B,mBAAmB,EAAE,SAAS,IAAI,CAAC;QACnC,UAAU,EAAE,YAAY,CAAC,KAAK,CAAC;QAC/B,KAAK,EAAE,aAAa;KACrB,CAAC,CAAC;IACH,OAAO,EAAE,CAAC,MAAM,EAAE,EAAE,GAAG,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;AACvD,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,oBAAoB,CAAC,KAAa;IAChD,MAAM,SAAS,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC;IAC/B,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACxD,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IACD,IAAI,CAAC,0BAA0B,EAAE,EAAE,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;QACjE,OAAO,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,EAAE,CAAC,kBAAkB,EAAE,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@symbiote-native/blur",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.1.0",
|
|
4
4
|
"description": "expo-blur wrapped for SymbioteNative — one framework-agnostic core, built once and reachable from the React, Vue, Svelte, Solid, and Angular adapters. A native view that blurs the content behind it, plus the Android blur target.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"repository": {
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"dependencies": {
|
|
69
69
|
"expo-blur": "57.0.3",
|
|
70
70
|
"expo-modules-core": "57.0.20",
|
|
71
|
-
"@symbiote-native/components": "3.
|
|
71
|
+
"@symbiote-native/components": "3.2.0"
|
|
72
72
|
},
|
|
73
73
|
"peerDependencies": {
|
|
74
74
|
"@angular/core": ">=20",
|
|
@@ -78,12 +78,12 @@
|
|
|
78
78
|
"solid-js": ">=1.9.0",
|
|
79
79
|
"svelte": ">=5.56.0",
|
|
80
80
|
"vue": ">=3.5.0",
|
|
81
|
-
"@symbiote-native/angular": "^3.
|
|
82
|
-
"@symbiote-native/engine": "^1.
|
|
83
|
-
"@symbiote-native/
|
|
84
|
-
"@symbiote-native/
|
|
85
|
-
"@symbiote-native/
|
|
86
|
-
"@symbiote-native/vue": "^3.
|
|
81
|
+
"@symbiote-native/angular": "^3.3.0",
|
|
82
|
+
"@symbiote-native/engine": "^1.6.0",
|
|
83
|
+
"@symbiote-native/react": "^3.3.0",
|
|
84
|
+
"@symbiote-native/solid": "^3.2.0",
|
|
85
|
+
"@symbiote-native/svelte": "^3.2.0",
|
|
86
|
+
"@symbiote-native/vue": "^3.3.0"
|
|
87
87
|
},
|
|
88
88
|
"peerDependenciesMeta": {
|
|
89
89
|
"@symbiote-native/angular": {
|
|
@@ -131,13 +131,13 @@
|
|
|
131
131
|
"solid-js": "^1.9.14",
|
|
132
132
|
"svelte": "^5.56.0",
|
|
133
133
|
"typescript": "~6.0.0",
|
|
134
|
-
"@symbiote-native/angular": "3.
|
|
135
|
-
"@symbiote-native/engine": "1.
|
|
136
|
-
"@symbiote-native/
|
|
137
|
-
"@symbiote-native/
|
|
138
|
-
"@symbiote-native/
|
|
139
|
-
"@symbiote-native/
|
|
140
|
-
"@symbiote-native/
|
|
134
|
+
"@symbiote-native/angular": "3.3.0",
|
|
135
|
+
"@symbiote-native/engine": "1.6.0",
|
|
136
|
+
"@symbiote-native/react": "3.3.0",
|
|
137
|
+
"@symbiote-native/solid": "3.2.0",
|
|
138
|
+
"@symbiote-native/svelte": "3.2.0",
|
|
139
|
+
"@symbiote-native/test-utils": "0.4.7",
|
|
140
|
+
"@symbiote-native/vue": "3.3.0"
|
|
141
141
|
},
|
|
142
142
|
"scripts": {
|
|
143
143
|
"typecheck": "tsc --build",
|
|
@@ -20,7 +20,10 @@ const TEMPLATE_TAG = 'ViewManagerAdapter_ExpoBlur_ExpoBlurTargetView';
|
|
|
20
20
|
schemas: [NO_ERRORS_SCHEMA],
|
|
21
21
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
22
22
|
// Имя тега это нативное имя view, его нельзя собрать динамически
|
|
23
|
-
template: `<ViewManagerAdapter_ExpoBlur_ExpoBlurTargetView
|
|
23
|
+
template: `<ViewManagerAdapter_ExpoBlur_ExpoBlurTargetView
|
|
24
|
+
#host
|
|
25
|
+
[symbioteHostProps]="hostProps"
|
|
26
|
+
>
|
|
24
27
|
<ng-content />
|
|
25
28
|
</ViewManagerAdapter_ExpoBlur_ExpoBlurTargetView>`,
|
|
26
29
|
})
|
|
@@ -30,7 +33,11 @@ export class BlurTargetView extends BlurTargetViewBase {
|
|
|
30
33
|
|
|
31
34
|
constructor() {
|
|
32
35
|
super();
|
|
33
|
-
warnIfViewNameIsDynamic(
|
|
36
|
+
warnIfViewNameIsDynamic(
|
|
37
|
+
TEMPLATE_TAG,
|
|
38
|
+
BLUR_MODULE_NAME,
|
|
39
|
+
'ExpoBlurTargetView',
|
|
40
|
+
);
|
|
34
41
|
}
|
|
35
42
|
|
|
36
43
|
get nativeElement(): unknown {
|
|
@@ -9,7 +9,8 @@ export abstract class BlurTargetViewBase extends NativeViewBase {
|
|
|
9
9
|
/** Нужен свойству `blurTarget` у `BlurView`, чтобы найти host-узел */
|
|
10
10
|
abstract readonly nativeElement: unknown;
|
|
11
11
|
|
|
12
|
-
protected readonly propNames =
|
|
12
|
+
protected readonly propNames =
|
|
13
|
+
[] as const satisfies readonly (keyof BlurTargetViewBase)[];
|
|
13
14
|
|
|
14
15
|
protected override renderView(props: object): IDescriptor {
|
|
15
16
|
return renderBlurTargetView(props);
|
package/src/angular/blur-view.ts
CHANGED
|
@@ -23,7 +23,9 @@ import type { IBlurViewProps } from '../core';
|
|
|
23
23
|
imports: [DescriptorHost],
|
|
24
24
|
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
25
25
|
template: `@if (descriptor; as node) {
|
|
26
|
-
<symbiote-descriptor-host [node]="node"
|
|
26
|
+
<symbiote-descriptor-host [node]="node"
|
|
27
|
+
><ng-content
|
|
28
|
+
/></symbiote-descriptor-host>
|
|
27
29
|
}`,
|
|
28
30
|
})
|
|
29
31
|
export class BlurView
|
package/src/core/blur.ts
CHANGED
|
@@ -118,10 +118,14 @@ const DEPRECATED_METHOD_WARNING =
|
|
|
118
118
|
'The `experimentalBlurMethod` prop has been depracated. Please use the `blurMethod` prop instead.';
|
|
119
119
|
|
|
120
120
|
// Регистрация идёт при рендере: побочный эффект барреля теряется в release
|
|
121
|
-
const views = defineExpoNativeViews(
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
121
|
+
const views = defineExpoNativeViews(
|
|
122
|
+
requireNativeViewManager,
|
|
123
|
+
BLUR_MODULE_NAME,
|
|
124
|
+
{
|
|
125
|
+
blur: BLUR_VIEW_NAME,
|
|
126
|
+
target: BLUR_TARGET_VIEW_NAME,
|
|
127
|
+
},
|
|
128
|
+
);
|
|
125
129
|
|
|
126
130
|
export const blurViewName = views.blur.name;
|
|
127
131
|
export const blurTargetViewName = views.target.name;
|
package/src/react/blur.ts
CHANGED
|
@@ -35,7 +35,10 @@ export function BlurView(props: IBlurViewReactProps): ReactElement {
|
|
|
35
35
|
useLayoutEffect(() => watchBlurTarget(blurTarget?.current, setBlurTargetId));
|
|
36
36
|
useEffect(() => warnBlurProps(rest, blurTarget !== undefined), []);
|
|
37
37
|
|
|
38
|
-
return descriptorToReactWithChildren(
|
|
38
|
+
return descriptorToReactWithChildren(
|
|
39
|
+
renderBlurView(rest, blurTargetId),
|
|
40
|
+
children,
|
|
41
|
+
);
|
|
39
42
|
}
|
|
40
43
|
|
|
41
44
|
/** React twin of `expo-blur`'s `BlurTargetView`, native on Android and a plain View on iOS */
|
package/src/solid/blur.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
createEffect,
|
|
3
|
+
createSignal,
|
|
4
|
+
onCleanup,
|
|
5
|
+
onMount,
|
|
6
|
+
splitProps,
|
|
7
|
+
} from 'solid-js';
|
|
2
8
|
import type { JSX } from 'solid-js';
|
|
3
9
|
import {
|
|
4
10
|
defineDescriptorComponent,
|