@symbiote-native/blur 0.0.0-stage → 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/LICENSE +21 -0
- package/README.md +217 -2
- package/build/angular/blur-target-view/index.android.d.ts +7 -0
- package/build/angular/blur-target-view/index.android.js +87 -0
- package/build/angular/blur-target-view/index.d.ts +1 -0
- package/build/angular/blur-target-view/index.ios.d.ts +6 -0
- package/build/angular/blur-target-view/index.ios.js +76 -0
- package/build/angular/blur-target-view/index.js +2 -0
- package/build/angular/blur-target-view/shared.d.ts +9 -0
- package/build/angular/blur-target-view/shared.js +64 -0
- package/build/angular/blur-view.d.ts +23 -0
- package/build/angular/blur-view.js +138 -0
- package/build/angular/index.d.ts +3 -0
- package/build/angular/index.js +4 -0
- package/build/core/blur.d.ts +53 -0
- package/build/core/blur.js +104 -0
- package/build/core/index.d.ts +1 -0
- package/build/core/index.js +1 -0
- package/build/react/blur.d.ts +18 -0
- package/build/react/blur.js +18 -0
- package/build/react/index.d.ts +3 -0
- package/build/react/index.js +3 -0
- package/build/solid/blur.d.ts +19 -0
- package/build/solid/blur.js +17 -0
- package/build/solid/index.d.ts +3 -0
- package/build/solid/index.js +3 -0
- package/build/svelte/blur-props.d.ts +13 -0
- package/build/svelte/blur-props.js +1 -0
- package/build/svelte/blur-target-view.svelte +14 -0
- package/build/svelte/blur-target-view.svelte.d.ts +4 -0
- package/build/svelte/blur-view.svelte +21 -0
- package/build/svelte/blur-view.svelte.d.ts +4 -0
- package/build/svelte/index.d.ts +4 -0
- package/build/svelte/index.js +4 -0
- package/build/vue/blur.d.ts +12 -0
- package/build/vue/blur.js +50 -0
- package/build/vue/index.d.ts +3 -0
- package/build/vue/index.js +3 -0
- package/build-ngc/angular/blur-target-view/index.android.d.ts +10 -0
- package/build-ngc/angular/blur-target-view/index.android.js +46 -0
- package/build-ngc/angular/blur-target-view/index.android.js.map +1 -0
- package/build-ngc/angular/blur-target-view/index.d.ts +1 -0
- package/build-ngc/angular/blur-target-view/index.ios.d.ts +9 -0
- package/build-ngc/angular/blur-target-view/index.ios.js +27 -0
- package/build-ngc/angular/blur-target-view/index.ios.js.map +1 -0
- package/build-ngc/angular/blur-target-view/index.js +3 -0
- package/build-ngc/angular/blur-target-view/index.js.map +1 -0
- package/build-ngc/angular/blur-target-view/shared.d.ts +12 -0
- package/build-ngc/angular/blur-target-view/shared.js +20 -0
- package/build-ngc/angular/blur-target-view/shared.js.map +1 -0
- package/build-ngc/angular/blur-view.d.ts +26 -0
- package/build-ngc/angular/blur-view.js +81 -0
- package/build-ngc/angular/blur-view.js.map +1 -0
- package/build-ngc/angular/index.d.ts +3 -0
- package/build-ngc/angular/index.js +5 -0
- package/build-ngc/angular/index.js.map +1 -0
- package/build-ngc/core/blur.d.ts +53 -0
- package/build-ngc/core/blur.js +105 -0
- package/build-ngc/core/blur.js.map +1 -0
- package/build-ngc/core/index.d.ts +1 -0
- package/build-ngc/core/index.js +2 -0
- package/build-ngc/core/index.js.map +1 -0
- package/native-link.json +12 -0
- package/package.json +145 -3
- package/src/angular/blur-target-view/index.android.ts +46 -0
- package/src/angular/blur-target-view/index.ios.ts +25 -0
- package/src/angular/blur-target-view/index.ts +2 -0
- package/src/angular/blur-target-view/shared.ts +22 -0
- package/src/angular/blur-view.ts +87 -0
- package/src/angular/index.ts +13 -0
- package/src/core/blur.ts +214 -0
- package/src/core/index.ts +15 -0
- package/src/react/blur.ts +49 -0
- package/src/react/index.ts +14 -0
- package/src/solid/blur.ts +60 -0
- package/src/solid/index.ts +14 -0
- package/src/svelte/blur-props.ts +18 -0
- package/src/svelte/blur-target-view.svelte +14 -0
- package/src/svelte/blur-view.svelte +21 -0
- package/src/svelte/index.ts +15 -0
- package/src/svelte/svelte-ambient.d.ts +6 -0
- package/src/svelte/svelte-compile.test-helper.ts +6 -0
- package/src/vue/blur.ts +82 -0
- package/src/vue/index.ts +14 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
+
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
+
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
+
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
+
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
+
var _, done = false;
|
|
7
|
+
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
+
var context = {};
|
|
9
|
+
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
+
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
+
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
+
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
+
if (kind === "accessor") {
|
|
14
|
+
if (result === void 0) continue;
|
|
15
|
+
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
+
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
+
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
+
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
+
}
|
|
20
|
+
else if (_ = accept(result)) {
|
|
21
|
+
if (kind === "field") initializers.unshift(_);
|
|
22
|
+
else descriptor[key] = _;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
+
done = true;
|
|
27
|
+
};
|
|
28
|
+
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
+
var useValue = arguments.length > 2;
|
|
30
|
+
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
+
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
+
}
|
|
33
|
+
return useValue ? value : void 0;
|
|
34
|
+
};
|
|
35
|
+
import { ChangeDetectionStrategy, Component, Input, } from '@angular/core';
|
|
36
|
+
import { DescriptorHost, NativeViewBase, hostNodeOf, } from '@symbiote-native/angular';
|
|
37
|
+
import { renderBlurView, warnBlurProps, watchBlurTarget } from '../core/index.js';
|
|
38
|
+
/** Angular twin of `expo-blur`'s `BlurView`, the projected content paints over the blur */
|
|
39
|
+
let BlurView = (() => {
|
|
40
|
+
let _classDecorators = [Component({
|
|
41
|
+
selector: 'BlurView',
|
|
42
|
+
standalone: true,
|
|
43
|
+
imports: [DescriptorHost],
|
|
44
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
45
|
+
template: `@if (descriptor; as node) {
|
|
46
|
+
<symbiote-descriptor-host [node]="node"
|
|
47
|
+
><ng-content
|
|
48
|
+
/></symbiote-descriptor-host>
|
|
49
|
+
}`,
|
|
50
|
+
})];
|
|
51
|
+
let _classDescriptor;
|
|
52
|
+
let _classExtraInitializers = [];
|
|
53
|
+
let _classThis;
|
|
54
|
+
let _classSuper = NativeViewBase;
|
|
55
|
+
let _tint_decorators;
|
|
56
|
+
let _tint_initializers = [];
|
|
57
|
+
let _tint_extraInitializers = [];
|
|
58
|
+
let _intensity_decorators;
|
|
59
|
+
let _intensity_initializers = [];
|
|
60
|
+
let _intensity_extraInitializers = [];
|
|
61
|
+
let _blurReductionFactor_decorators;
|
|
62
|
+
let _blurReductionFactor_initializers = [];
|
|
63
|
+
let _blurReductionFactor_extraInitializers = [];
|
|
64
|
+
let _experimentalBlurMethod_decorators;
|
|
65
|
+
let _experimentalBlurMethod_initializers = [];
|
|
66
|
+
let _experimentalBlurMethod_extraInitializers = [];
|
|
67
|
+
let _blurMethod_decorators;
|
|
68
|
+
let _blurMethod_initializers = [];
|
|
69
|
+
let _blurMethod_extraInitializers = [];
|
|
70
|
+
let _blurTarget_decorators;
|
|
71
|
+
let _blurTarget_initializers = [];
|
|
72
|
+
let _blurTarget_extraInitializers = [];
|
|
73
|
+
var BlurView = class extends _classSuper {
|
|
74
|
+
static { _classThis = this; }
|
|
75
|
+
static {
|
|
76
|
+
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
77
|
+
_tint_decorators = [Input()];
|
|
78
|
+
_intensity_decorators = [Input()];
|
|
79
|
+
_blurReductionFactor_decorators = [Input()];
|
|
80
|
+
_experimentalBlurMethod_decorators = [Input()];
|
|
81
|
+
_blurMethod_decorators = [Input()];
|
|
82
|
+
_blurTarget_decorators = [Input()];
|
|
83
|
+
__esDecorate(null, null, _tint_decorators, { kind: "field", name: "tint", static: false, private: false, access: { has: obj => "tint" in obj, get: obj => obj.tint, set: (obj, value) => { obj.tint = value; } }, metadata: _metadata }, _tint_initializers, _tint_extraInitializers);
|
|
84
|
+
__esDecorate(null, null, _intensity_decorators, { kind: "field", name: "intensity", static: false, private: false, access: { has: obj => "intensity" in obj, get: obj => obj.intensity, set: (obj, value) => { obj.intensity = value; } }, metadata: _metadata }, _intensity_initializers, _intensity_extraInitializers);
|
|
85
|
+
__esDecorate(null, null, _blurReductionFactor_decorators, { kind: "field", name: "blurReductionFactor", static: false, private: false, access: { has: obj => "blurReductionFactor" in obj, get: obj => obj.blurReductionFactor, set: (obj, value) => { obj.blurReductionFactor = value; } }, metadata: _metadata }, _blurReductionFactor_initializers, _blurReductionFactor_extraInitializers);
|
|
86
|
+
__esDecorate(null, null, _experimentalBlurMethod_decorators, { kind: "field", name: "experimentalBlurMethod", static: false, private: false, access: { has: obj => "experimentalBlurMethod" in obj, get: obj => obj.experimentalBlurMethod, set: (obj, value) => { obj.experimentalBlurMethod = value; } }, metadata: _metadata }, _experimentalBlurMethod_initializers, _experimentalBlurMethod_extraInitializers);
|
|
87
|
+
__esDecorate(null, null, _blurMethod_decorators, { kind: "field", name: "blurMethod", static: false, private: false, access: { has: obj => "blurMethod" in obj, get: obj => obj.blurMethod, set: (obj, value) => { obj.blurMethod = value; } }, metadata: _metadata }, _blurMethod_initializers, _blurMethod_extraInitializers);
|
|
88
|
+
__esDecorate(null, null, _blurTarget_decorators, { kind: "field", name: "blurTarget", static: false, private: false, access: { has: obj => "blurTarget" in obj, get: obj => obj.blurTarget, set: (obj, value) => { obj.blurTarget = value; } }, metadata: _metadata }, _blurTarget_initializers, _blurTarget_extraInitializers);
|
|
89
|
+
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
90
|
+
BlurView = _classThis = _classDescriptor.value;
|
|
91
|
+
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
92
|
+
__runInitializers(_classThis, _classExtraInitializers);
|
|
93
|
+
}
|
|
94
|
+
tint = __runInitializers(this, _tint_initializers, void 0);
|
|
95
|
+
intensity = (__runInitializers(this, _tint_extraInitializers), __runInitializers(this, _intensity_initializers, void 0));
|
|
96
|
+
blurReductionFactor = (__runInitializers(this, _intensity_extraInitializers), __runInitializers(this, _blurReductionFactor_initializers, void 0));
|
|
97
|
+
experimentalBlurMethod = (__runInitializers(this, _blurReductionFactor_extraInitializers), __runInitializers(this, _experimentalBlurMethod_initializers, void 0));
|
|
98
|
+
blurMethod = (__runInitializers(this, _experimentalBlurMethod_extraInitializers), __runInitializers(this, _blurMethod_initializers, void 0));
|
|
99
|
+
/** Template ref на `BlurTargetView`, его содержимое это фон для размытия */
|
|
100
|
+
blurTarget = (__runInitializers(this, _blurMethod_extraInitializers), __runInitializers(this, _blurTarget_initializers, void 0));
|
|
101
|
+
propNames = (__runInitializers(this, _blurTarget_extraInitializers), [
|
|
102
|
+
'tint',
|
|
103
|
+
'intensity',
|
|
104
|
+
'blurReductionFactor',
|
|
105
|
+
'experimentalBlurMethod',
|
|
106
|
+
'blurMethod',
|
|
107
|
+
]);
|
|
108
|
+
blurTargetId;
|
|
109
|
+
cancelWatch = () => { };
|
|
110
|
+
isViewReady = false;
|
|
111
|
+
renderView(props) {
|
|
112
|
+
return renderBlurView(props, this.blurTargetId);
|
|
113
|
+
}
|
|
114
|
+
// Цель ставится при создании представления соседа, поэтому ждём `ngAfterViewInit`
|
|
115
|
+
ngAfterViewInit() {
|
|
116
|
+
this.isViewReady = true;
|
|
117
|
+
this.watchTarget();
|
|
118
|
+
warnBlurProps(Object.fromEntries(this.propNames.map(name => [name, Reflect.get(this, name)])), this.blurTarget !== undefined);
|
|
119
|
+
}
|
|
120
|
+
ngOnChanges(changes) {
|
|
121
|
+
super.ngOnChanges(changes);
|
|
122
|
+
if (this.isViewReady && 'blurTarget' in changes)
|
|
123
|
+
this.watchTarget();
|
|
124
|
+
}
|
|
125
|
+
disposeView() {
|
|
126
|
+
this.cancelWatch();
|
|
127
|
+
}
|
|
128
|
+
watchTarget() {
|
|
129
|
+
this.cancelWatch();
|
|
130
|
+
this.cancelWatch = watchBlurTarget(hostNodeOf(this.blurTarget), id => {
|
|
131
|
+
this.blurTargetId = id;
|
|
132
|
+
this.changeDetector.markForCheck();
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
return BlurView = _classThis;
|
|
137
|
+
})();
|
|
138
|
+
export { BlurView };
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// @symbiote-native/blur/angular: компоненты `BlurView` и `BlurTargetView` поверх общего ядра
|
|
2
|
+
export { BlurView } from './blur-view.js';
|
|
3
|
+
export { BlurTargetView } from './blur-target-view';
|
|
4
|
+
export { BLUR_MODULE_NAME, blurTargetViewName, blurViewName, } from '../core/index.js';
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { IAccessibilityProps, IAriaProps, IDescriptor, IResponderProps } from '@symbiote-native/components';
|
|
2
|
+
import type { IStyleProp, ISymbioteEvent, IViewStyle } from '@symbiote-native/engine';
|
|
3
|
+
export declare const BLUR_MODULE_NAME = "ExpoBlur";
|
|
4
|
+
declare const BLUR_METHODS: readonly ["none", "dimezisBlurView", "dimezisBlurViewSdk31Plus"];
|
|
5
|
+
/** Метод размытия на Android: `none` это полупрозрачный view, остальные нативный BlurView */
|
|
6
|
+
export type IBlurMethod = (typeof BLUR_METHODS)[number];
|
|
7
|
+
export type IBlurTint = 'light' | 'dark' | 'default' | 'extraLight' | 'regular' | 'prominent' | 'systemUltraThinMaterial' | 'systemThinMaterial' | 'systemMaterial' | 'systemThickMaterial' | 'systemChromeMaterial' | 'systemUltraThinMaterialLight' | 'systemThinMaterialLight' | 'systemMaterialLight' | 'systemThickMaterialLight' | 'systemChromeMaterialLight' | 'systemUltraThinMaterialDark' | 'systemThinMaterialDark' | 'systemMaterialDark' | 'systemThickMaterialDark' | 'systemChromeMaterialDark';
|
|
8
|
+
type IViewSurface = IAccessibilityProps & IAriaProps & IResponderProps & {
|
|
9
|
+
style?: IStyleProp<IViewStyle>;
|
|
10
|
+
testID?: string;
|
|
11
|
+
nativeID?: string;
|
|
12
|
+
onLayout?: (event: ISymbioteEvent) => void;
|
|
13
|
+
};
|
|
14
|
+
export type IBlurViewProps = IViewSurface & {
|
|
15
|
+
/** @default 'default' */
|
|
16
|
+
tint?: IBlurTint;
|
|
17
|
+
/**
|
|
18
|
+
* Сила размытия от 1 до 100
|
|
19
|
+
* @default 50
|
|
20
|
+
*/
|
|
21
|
+
intensity?: number;
|
|
22
|
+
/**
|
|
23
|
+
* Делитель силы размытия на Android
|
|
24
|
+
* @default 4
|
|
25
|
+
* @platform android
|
|
26
|
+
*/
|
|
27
|
+
blurReductionFactor?: number;
|
|
28
|
+
/**
|
|
29
|
+
* @deprecated Use `blurMethod` instead
|
|
30
|
+
* @platform android
|
|
31
|
+
*/
|
|
32
|
+
experimentalBlurMethod?: IBlurMethod;
|
|
33
|
+
/**
|
|
34
|
+
* @default 'none'
|
|
35
|
+
* @platform android
|
|
36
|
+
*/
|
|
37
|
+
blurMethod?: IBlurMethod;
|
|
38
|
+
};
|
|
39
|
+
export type IBlurTargetViewProps = IViewSurface;
|
|
40
|
+
export declare const blurViewName: () => string;
|
|
41
|
+
export declare const blurTargetViewName: () => string;
|
|
42
|
+
export declare const ensureBlurRegistered: () => boolean;
|
|
43
|
+
export declare const ensureBlurTargetRegistered: () => boolean;
|
|
44
|
+
/** Предупреждения из `componentDidMount` upstream, зовутся один раз при монтировании */
|
|
45
|
+
export declare function warnBlurProps(props: object, hasBlurTarget: boolean): void;
|
|
46
|
+
/**
|
|
47
|
+
* Отдаёт нативный тег цели размытия после её коммита, у не-узла отдаёт `undefined`
|
|
48
|
+
* Адаптер сам приводит свой ref к host-узлу, возвращённая функция отменяет ожидание
|
|
49
|
+
*/
|
|
50
|
+
export declare function watchBlurTarget(target: unknown, onId: (id: number | undefined) => void): () => void;
|
|
51
|
+
export declare function renderBlurView(props: object, blurTargetId: number | null | undefined): IDescriptor;
|
|
52
|
+
export declare function renderBlurTargetView(props: object): IDescriptor;
|
|
53
|
+
export {};
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// Ядро `BlurView` и `BlurTargetView`, порт `BlurView.tsx` из expo-blur
|
|
2
|
+
import { Platform, requireNativeViewManager } from 'expo-modules-core';
|
|
3
|
+
import { el } from '@symbiote-native/components';
|
|
4
|
+
import { defineExpoNativeViews, getNativeTag, isSymbioteNode, whenCommitted, } from '@symbiote-native/engine';
|
|
5
|
+
export const BLUR_MODULE_NAME = 'ExpoBlur';
|
|
6
|
+
const BLUR_VIEW_NAME = 'ExpoBlurView';
|
|
7
|
+
const BLUR_TARGET_VIEW_NAME = 'ExpoBlurTargetView';
|
|
8
|
+
const BLUR_METHODS = [
|
|
9
|
+
'none',
|
|
10
|
+
'dimezisBlurView',
|
|
11
|
+
'dimezisBlurViewSdk31Plus',
|
|
12
|
+
];
|
|
13
|
+
const DEFAULT_BLUR_METHOD = BLUR_METHODS[0];
|
|
14
|
+
// Эти ключи разбираются здесь, остальное уходит на View как есть
|
|
15
|
+
const BLUR_KEYS = new Set([
|
|
16
|
+
'tint',
|
|
17
|
+
'intensity',
|
|
18
|
+
'blurReductionFactor',
|
|
19
|
+
'experimentalBlurMethod',
|
|
20
|
+
'blurMethod',
|
|
21
|
+
]);
|
|
22
|
+
const ABSOLUTE_FILL = {
|
|
23
|
+
position: 'absolute',
|
|
24
|
+
left: 0,
|
|
25
|
+
right: 0,
|
|
26
|
+
top: 0,
|
|
27
|
+
bottom: 0,
|
|
28
|
+
};
|
|
29
|
+
const CONTAINER_STYLE = { backgroundColor: 'transparent' };
|
|
30
|
+
const DEPRECATED_METHOD_WARNING = 'The `experimentalBlurMethod` prop has been depracated. Please use the `blurMethod` prop instead.';
|
|
31
|
+
// Регистрация идёт при рендере: побочный эффект барреля теряется в release
|
|
32
|
+
const views = defineExpoNativeViews(requireNativeViewManager, BLUR_MODULE_NAME, {
|
|
33
|
+
blur: BLUR_VIEW_NAME,
|
|
34
|
+
target: BLUR_TARGET_VIEW_NAME,
|
|
35
|
+
});
|
|
36
|
+
export const blurViewName = views.blur.name;
|
|
37
|
+
export const blurTargetViewName = views.target.name;
|
|
38
|
+
export const ensureBlurRegistered = views.blur.ensureRegistered;
|
|
39
|
+
export const ensureBlurTargetRegistered = views.target.ensureRegistered;
|
|
40
|
+
function isBlurMethod(value) {
|
|
41
|
+
return BLUR_METHODS.some(method => method === value);
|
|
42
|
+
}
|
|
43
|
+
function blurMethodOf(props) {
|
|
44
|
+
const provided = Reflect.get(props, 'blurMethod');
|
|
45
|
+
const deprecated = Reflect.get(props, 'experimentalBlurMethod');
|
|
46
|
+
if (isBlurMethod(provided))
|
|
47
|
+
return provided;
|
|
48
|
+
return isBlurMethod(deprecated) ? deprecated : DEFAULT_BLUR_METHOD;
|
|
49
|
+
}
|
|
50
|
+
/** Предупреждения из `componentDidMount` upstream, зовутся один раз при монтировании */
|
|
51
|
+
export function warnBlurProps(props, hasBlurTarget) {
|
|
52
|
+
const method = blurMethodOf(props);
|
|
53
|
+
const isAndroidTarget = Platform.select({ android: true, default: false });
|
|
54
|
+
if (isAndroidTarget && method !== DEFAULT_BLUR_METHOD && !hasBlurTarget) {
|
|
55
|
+
console.warn(`You have selected the "${method}" blur method, but the \`blurTarget\` prop has not been configured. The blur view will fallback to "none" blur method to avoid errors. You can learn more about the new BlurView API at: https://docs.expo.dev/versions/latest/sdk/blur-view/`);
|
|
56
|
+
}
|
|
57
|
+
if (Reflect.get(props, 'experimentalBlurMethod') != null) {
|
|
58
|
+
console.warn(DEPRECATED_METHOD_WARNING);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Отдаёт нативный тег цели размытия после её коммита, у не-узла отдаёт `undefined`
|
|
63
|
+
* Адаптер сам приводит свой ref к host-узлу, возвращённая функция отменяет ожидание
|
|
64
|
+
*/
|
|
65
|
+
export function watchBlurTarget(target, onId) {
|
|
66
|
+
if (!isSymbioteNode(target)) {
|
|
67
|
+
onId(undefined);
|
|
68
|
+
return () => { };
|
|
69
|
+
}
|
|
70
|
+
return whenCommitted(target, () => onId(getNativeTag(target)));
|
|
71
|
+
}
|
|
72
|
+
// `object`, а не тип пропсов: Vue и Angular отдают нетипизированный набор атрибутов
|
|
73
|
+
export function renderBlurView(props, blurTargetId) {
|
|
74
|
+
const hostProps = Object.fromEntries(Object.entries(props).filter(([key]) => !BLUR_KEYS.has(key)));
|
|
75
|
+
const style = [CONTAINER_STYLE, Reflect.get(props, 'style')];
|
|
76
|
+
if (!ensureBlurRegistered()) {
|
|
77
|
+
console.warn('BlurView is not available on this platform');
|
|
78
|
+
return el('view', { ...hostProps, style });
|
|
79
|
+
}
|
|
80
|
+
const tint = Reflect.get(props, 'tint');
|
|
81
|
+
const intensity = Reflect.get(props, 'intensity');
|
|
82
|
+
const reduction = Reflect.get(props, 'blurReductionFactor');
|
|
83
|
+
const native = el(blurViewName(), {
|
|
84
|
+
...(blurTargetId === undefined ? {} : { blurTargetId }),
|
|
85
|
+
tint: tint ?? 'default',
|
|
86
|
+
intensity: intensity ?? 50,
|
|
87
|
+
blurReductionFactor: reduction ?? 4,
|
|
88
|
+
blurMethod: blurMethodOf(props),
|
|
89
|
+
style: ABSOLUTE_FILL,
|
|
90
|
+
});
|
|
91
|
+
return el('view', { ...hostProps, style }, [native]);
|
|
92
|
+
}
|
|
93
|
+
// Нативная цель размытия есть только на Android, на iOS это обычный View
|
|
94
|
+
export function renderBlurTargetView(props) {
|
|
95
|
+
const hostProps = { ...props };
|
|
96
|
+
if (!Platform.select({ android: true, default: false })) {
|
|
97
|
+
return el('view', hostProps);
|
|
98
|
+
}
|
|
99
|
+
if (!ensureBlurTargetRegistered()) {
|
|
100
|
+
console.warn('BlurTargetView is not available on this platform');
|
|
101
|
+
return el('view', hostProps);
|
|
102
|
+
}
|
|
103
|
+
return el(blurTargetViewName(), hostProps);
|
|
104
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { BLUR_MODULE_NAME, blurTargetViewName, blurViewName, ensureBlurRegistered, ensureBlurTargetRegistered, renderBlurTargetView, renderBlurView, warnBlurProps, watchBlurTarget, type IBlurMethod, type IBlurTargetViewProps, type IBlurTint, type IBlurViewProps, } from './blur';
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { BLUR_MODULE_NAME, blurTargetViewName, blurViewName, ensureBlurRegistered, ensureBlurTargetRegistered, renderBlurTargetView, renderBlurView, warnBlurProps, watchBlurTarget, } from './blur.js';
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { ReactElement, ReactNode, RefObject } from 'react';
|
|
2
|
+
import type { IHostInstance, IViewProps } from '@symbiote-native/react';
|
|
3
|
+
import type { IBlurTargetViewProps, IBlurViewProps } from '../core';
|
|
4
|
+
export type IBlurViewReactProps = IBlurViewProps & Omit<IViewProps, keyof IBlurViewProps | 'children'> & {
|
|
5
|
+
/** Ref на `BlurTargetView`, его содержимое это фон для размытия */
|
|
6
|
+
blurTarget?: RefObject<IHostInstance | null>;
|
|
7
|
+
children?: ReactNode;
|
|
8
|
+
className?: string;
|
|
9
|
+
};
|
|
10
|
+
export type IBlurTargetViewReactProps = IBlurTargetViewProps & Omit<IViewProps, keyof IBlurTargetViewProps | 'children' | 'ref'> & {
|
|
11
|
+
ref?: RefObject<IHostInstance | null>;
|
|
12
|
+
children?: ReactNode;
|
|
13
|
+
className?: string;
|
|
14
|
+
};
|
|
15
|
+
/** React twin of `expo-blur`'s `BlurView`, children paint over the blur */
|
|
16
|
+
export declare function BlurView(props: IBlurViewReactProps): ReactElement;
|
|
17
|
+
/** React twin of `expo-blur`'s `BlurTargetView`, native on Android and a plain View on iOS */
|
|
18
|
+
export declare function BlurTargetView(props: IBlurTargetViewReactProps): ReactElement;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { createElement, useEffect, useLayoutEffect, useState } from 'react';
|
|
2
|
+
import { descriptorToReactWithChildren } from '@symbiote-native/react';
|
|
3
|
+
import { renderBlurTargetView, renderBlurView, warnBlurProps, watchBlurTarget, } from '../core/index.js';
|
|
4
|
+
/** React twin of `expo-blur`'s `BlurView`, children paint over the blur */
|
|
5
|
+
export function BlurView(props) {
|
|
6
|
+
const { blurTarget, children, ...rest } = props;
|
|
7
|
+
const [blurTargetId, setBlurTargetId] = useState();
|
|
8
|
+
// Без списка зависимостей, как `componentDidUpdate` upstream: ref цели ставится в коммите
|
|
9
|
+
useLayoutEffect(() => watchBlurTarget(blurTarget?.current, setBlurTargetId));
|
|
10
|
+
useEffect(() => warnBlurProps(rest, blurTarget !== undefined), []);
|
|
11
|
+
return descriptorToReactWithChildren(renderBlurView(rest, blurTargetId), children);
|
|
12
|
+
}
|
|
13
|
+
/** React twin of `expo-blur`'s `BlurTargetView`, native on Android and a plain View on iOS */
|
|
14
|
+
export function BlurTargetView(props) {
|
|
15
|
+
const { children, ...rest } = props;
|
|
16
|
+
const descriptor = renderBlurTargetView(rest);
|
|
17
|
+
return createElement(descriptor.type, descriptor.props, children);
|
|
18
|
+
}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { BlurTargetView, BlurView } from './blur';
|
|
2
|
+
export type { IBlurTargetViewReactProps as IBlurTargetViewProps, IBlurViewReactProps as IBlurViewProps, } from './blur';
|
|
3
|
+
export { BLUR_MODULE_NAME, blurTargetViewName, blurViewName, type IBlurMethod, type IBlurTint, } from '../core';
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { JSX } from 'solid-js';
|
|
2
|
+
import { descriptorToSolid } from '@symbiote-native/solid';
|
|
3
|
+
import type { IHostInstance, IViewProps } from '@symbiote-native/solid';
|
|
4
|
+
import type { IClassNameValue } from '@symbiote-native/engine';
|
|
5
|
+
import type { IBlurTargetViewProps, IBlurViewProps } from '../core';
|
|
6
|
+
export type IBlurViewSolidProps = IBlurViewProps & Omit<IViewProps, keyof IBlurViewProps | 'children' | 'ref'> & {
|
|
7
|
+
/** Host-узел `BlurTargetView`, его содержимое это фон для размытия */
|
|
8
|
+
blurTarget?: IHostInstance;
|
|
9
|
+
children?: JSX.Element;
|
|
10
|
+
class?: IClassNameValue;
|
|
11
|
+
};
|
|
12
|
+
export type IBlurTargetViewSolidProps = IBlurTargetViewProps & Omit<IViewProps, keyof IBlurTargetViewProps | 'children'> & {
|
|
13
|
+
children?: JSX.Element;
|
|
14
|
+
class?: IClassNameValue;
|
|
15
|
+
};
|
|
16
|
+
/** Solid twin of `expo-blur`'s `BlurView`, children paint over the blur */
|
|
17
|
+
export declare function BlurView(props: IBlurViewSolidProps): ReturnType<typeof descriptorToSolid>;
|
|
18
|
+
/** Solid twin of `expo-blur`'s `BlurTargetView`, native on Android and a plain View on iOS */
|
|
19
|
+
export declare const BlurTargetView: (props: IBlurTargetViewSolidProps) => import("@symbiote-native/engine").ISymbioteNode;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createEffect, createSignal, onCleanup, onMount, splitProps, } from 'solid-js';
|
|
2
|
+
import { defineDescriptorComponent, descriptorToSolid, } from '@symbiote-native/solid';
|
|
3
|
+
import { renderBlurTargetView, renderBlurView, warnBlurProps, watchBlurTarget, } from '../core/index.js';
|
|
4
|
+
/** Solid twin of `expo-blur`'s `BlurView`, children paint over the blur */
|
|
5
|
+
export function BlurView(props) {
|
|
6
|
+
const [local, rest] = splitProps(props, ['children', 'blurTarget']);
|
|
7
|
+
const [blurTargetId, setBlurTargetId] = createSignal();
|
|
8
|
+
// Цель приходит сигналом после коммита, поэтому следим за ней, а не читаем один раз
|
|
9
|
+
createEffect(() => {
|
|
10
|
+
const cancel = watchBlurTarget(local.blurTarget, setBlurTargetId);
|
|
11
|
+
onCleanup(cancel);
|
|
12
|
+
});
|
|
13
|
+
onMount(() => warnBlurProps({ ...rest }, local.blurTarget !== undefined));
|
|
14
|
+
return descriptorToSolid(() => renderBlurView({ ...rest }, blurTargetId()), () => local.children);
|
|
15
|
+
}
|
|
16
|
+
/** Solid twin of `expo-blur`'s `BlurTargetView`, native on Android and a plain View on iOS */
|
|
17
|
+
export const BlurTargetView = defineDescriptorComponent(renderBlurTargetView);
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { BlurTargetView, BlurView } from './blur';
|
|
2
|
+
export type { IBlurTargetViewSolidProps as IBlurTargetViewProps, IBlurViewSolidProps as IBlurViewProps, } from './blur';
|
|
3
|
+
export { BLUR_MODULE_NAME, blurTargetViewName, blurViewName, type IBlurMethod, type IBlurTint, } from '../core';
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Snippet } from 'svelte';
|
|
2
|
+
import type { IViewProps } from '@symbiote-native/svelte';
|
|
3
|
+
import type { IBlurTargetViewProps, IBlurViewProps } from '../core';
|
|
4
|
+
export type IBlurViewSvelteProps = IBlurViewProps & Omit<IViewProps, keyof IBlurViewProps | 'children'> & {
|
|
5
|
+
/** Значение `bind:ref` от `BlurTargetView`, его содержимое это фон для размытия */
|
|
6
|
+
blurTarget?: unknown;
|
|
7
|
+
children?: Snippet;
|
|
8
|
+
};
|
|
9
|
+
export type IBlurTargetViewSvelteProps = IBlurTargetViewProps & Omit<IViewProps, keyof IBlurTargetViewProps | 'children'> & {
|
|
10
|
+
/** Host-ref, отдаётся через `bind:ref` и передаётся в `blurTarget` у `BlurView` */
|
|
11
|
+
ref?: unknown;
|
|
12
|
+
children?: Snippet;
|
|
13
|
+
};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import DescriptorHost from '@symbiote-native/svelte/descriptor-host';
|
|
3
|
+
import { renderBlurTargetView } from '../core';
|
|
4
|
+
import type { IBlurTargetViewSvelteProps } from './blur-props';
|
|
5
|
+
|
|
6
|
+
let {
|
|
7
|
+
children,
|
|
8
|
+
ref = $bindable(),
|
|
9
|
+
...rest
|
|
10
|
+
}: IBlurTargetViewSvelteProps = $props();
|
|
11
|
+
const descriptor = $derived(renderBlurTargetView({ ...rest }));
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<DescriptorHost {descriptor} bind:ref {children} />
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import DescriptorHost from '@symbiote-native/svelte/descriptor-host';
|
|
3
|
+
import { hostInstance } from '@symbiote-native/svelte/native-view-bridge';
|
|
4
|
+
import { renderBlurView, warnBlurProps, watchBlurTarget } from '../core';
|
|
5
|
+
import type { IBlurViewSvelteProps } from './blur-props';
|
|
6
|
+
|
|
7
|
+
const { children, blurTarget, ...rest }: IBlurViewSvelteProps = $props();
|
|
8
|
+
let blurTargetId = $state<number | undefined>();
|
|
9
|
+
|
|
10
|
+
// Цель приходит после монтирования и мутирует, поэтому эффект следит за ней
|
|
11
|
+
$effect(() =>
|
|
12
|
+
watchBlurTarget(hostInstance(blurTarget), id => {
|
|
13
|
+
blurTargetId = id;
|
|
14
|
+
}),
|
|
15
|
+
);
|
|
16
|
+
$effect(() => warnBlurProps({ ...rest }, blurTarget !== undefined));
|
|
17
|
+
|
|
18
|
+
const descriptor = $derived(renderBlurView({ ...rest }, blurTargetId));
|
|
19
|
+
</script>
|
|
20
|
+
|
|
21
|
+
<DescriptorHost {descriptor} {children} />
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { default as BlurTargetView } from './blur-target-view.svelte';
|
|
2
|
+
export { default as BlurView } from './blur-view.svelte';
|
|
3
|
+
export type { IBlurTargetViewSvelteProps as IBlurTargetViewProps, IBlurViewSvelteProps as IBlurViewProps, } from './blur-props';
|
|
4
|
+
export { BLUR_MODULE_NAME, blurTargetViewName, blurViewName, type IBlurMethod, type IBlurTint, } from '../core';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// @symbiote-native/blur/svelte: компоненты `BlurView` и `BlurTargetView` поверх общего ядра
|
|
2
|
+
export { default as BlurTargetView } from './blur-target-view.svelte';
|
|
3
|
+
export { default as BlurView } from './blur-view.svelte';
|
|
4
|
+
export { BLUR_MODULE_NAME, blurTargetViewName, blurViewName, } from '../core/index.js';
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type VNode } from '@vue/runtime-core';
|
|
2
|
+
import type { IViewProps } from '@symbiote-native/vue';
|
|
3
|
+
import type { IBlurTargetViewProps, IBlurViewProps } from '../core';
|
|
4
|
+
export type IBlurViewVueProps = IBlurViewProps & Omit<IViewProps, keyof IBlurViewProps> & {
|
|
5
|
+
/** Template ref на `BlurTargetView`, его содержимое это фон для размытия */
|
|
6
|
+
blurTarget?: unknown;
|
|
7
|
+
};
|
|
8
|
+
export type IBlurTargetViewVueProps = IBlurTargetViewProps & Omit<IViewProps, keyof IBlurTargetViewProps>;
|
|
9
|
+
/** Vue twin of `expo-blur`'s `BlurView`, the default slot paints over the blur */
|
|
10
|
+
export declare const BlurView: import("vue").DefineComponent<{}, () => VNode, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
11
|
+
/** Vue twin of `expo-blur`'s `BlurTargetView`, native on Android and a plain View on iOS */
|
|
12
|
+
export declare const BlurTargetView: import("vue").DefineComponent<{}, () => VNode, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { defineComponent, h, isRef, onBeforeUnmount, onMounted, onUpdated, ref, toRaw, } from '@vue/runtime-core';
|
|
2
|
+
import { descriptorToVue, normalizeVueAttrs } from '@symbiote-native/vue';
|
|
3
|
+
import { renderBlurTargetView, renderBlurView, warnBlurProps, watchBlurTarget, } from '../core/index.js';
|
|
4
|
+
// Template ref на компонент отдаёт его публичный экземпляр, корневой host-узел лежит в `$el`
|
|
5
|
+
function hostOf(target) {
|
|
6
|
+
const value = isRef(target) ? target.value : target;
|
|
7
|
+
const host = value !== null && typeof value === 'object' && '$el' in value
|
|
8
|
+
? value.$el
|
|
9
|
+
: value;
|
|
10
|
+
return toRaw(host);
|
|
11
|
+
}
|
|
12
|
+
/** Vue twin of `expo-blur`'s `BlurView`, the default slot paints over the blur */
|
|
13
|
+
export const BlurView = defineComponent({
|
|
14
|
+
name: 'BlurView',
|
|
15
|
+
// Все атрибуты это пропсы нативного view, на обёртку ничего не должно просочиться
|
|
16
|
+
inheritAttrs: false,
|
|
17
|
+
setup(_props, { attrs, slots }) {
|
|
18
|
+
const blurTargetId = ref();
|
|
19
|
+
let cancelWatch = () => { };
|
|
20
|
+
const syncTarget = () => {
|
|
21
|
+
cancelWatch();
|
|
22
|
+
cancelWatch = watchBlurTarget(hostOf(attrs.blurTarget), id => {
|
|
23
|
+
blurTargetId.value = id;
|
|
24
|
+
});
|
|
25
|
+
};
|
|
26
|
+
// Ref цели ставится при патче, поэтому читаем его после монтирования и каждого обновления
|
|
27
|
+
onMounted(() => {
|
|
28
|
+
syncTarget();
|
|
29
|
+
warnBlurProps(normalizeVueAttrs(attrs), attrs.blurTarget !== undefined);
|
|
30
|
+
});
|
|
31
|
+
onUpdated(syncTarget);
|
|
32
|
+
onBeforeUnmount(() => cancelWatch());
|
|
33
|
+
return () => {
|
|
34
|
+
const { blurTarget: _blurTarget, ...rest } = normalizeVueAttrs(attrs);
|
|
35
|
+
const descriptor = renderBlurView(rest, blurTargetId.value);
|
|
36
|
+
return descriptorToVue(descriptor, slots.default?.() ?? []);
|
|
37
|
+
};
|
|
38
|
+
},
|
|
39
|
+
});
|
|
40
|
+
/** Vue twin of `expo-blur`'s `BlurTargetView`, native on Android and a plain View on iOS */
|
|
41
|
+
export const BlurTargetView = defineComponent({
|
|
42
|
+
name: 'BlurTargetView',
|
|
43
|
+
inheritAttrs: false,
|
|
44
|
+
setup(_props, { attrs, slots }) {
|
|
45
|
+
return () => {
|
|
46
|
+
const descriptor = renderBlurTargetView(normalizeVueAttrs(attrs));
|
|
47
|
+
return h(descriptor.type, descriptor.props, slots.default?.() ?? []);
|
|
48
|
+
};
|
|
49
|
+
},
|
|
50
|
+
});
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { BlurTargetView, BlurView } from './blur';
|
|
2
|
+
export type { IBlurTargetViewVueProps as IBlurTargetViewProps, IBlurViewVueProps as IBlurViewProps, } from './blur';
|
|
3
|
+
export { BLUR_MODULE_NAME, blurTargetViewName, blurViewName, type IBlurMethod, type IBlurTint, } from '../core';
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BlurTargetViewBase } from './shared';
|
|
2
|
+
import * as i0 from "@angular/core";
|
|
3
|
+
/** Angular twin of `expo-blur`'s `BlurTargetView`, the native target view on Android */
|
|
4
|
+
export declare class BlurTargetView extends BlurTargetViewBase {
|
|
5
|
+
private readonly hostRef;
|
|
6
|
+
constructor();
|
|
7
|
+
get nativeElement(): unknown;
|
|
8
|
+
static ɵfac: i0.ɵɵFactoryDeclaration<BlurTargetView, never>;
|
|
9
|
+
static ɵcmp: i0.ɵɵComponentDeclaration<BlurTargetView, "BlurTargetView", never, {}, {}, never, ["*"], true, never>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { ChangeDetectionStrategy, Component, ElementRef, NO_ERRORS_SCHEMA, ViewChild, } from '@angular/core';
|
|
2
|
+
import { warnIfViewNameIsDynamic } from '@symbiote-native/engine';
|
|
3
|
+
import { SymbioteHostPropsDirective } from '@symbiote-native/angular';
|
|
4
|
+
import { BLUR_MODULE_NAME } from '../../core';
|
|
5
|
+
import { BlurTargetViewBase } from './shared';
|
|
6
|
+
import * as i0 from "@angular/core";
|
|
7
|
+
const TEMPLATE_TAG = 'ViewManagerAdapter_ExpoBlur_ExpoBlurTargetView';
|
|
8
|
+
/** Angular twin of `expo-blur`'s `BlurTargetView`, the native target view on Android */
|
|
9
|
+
export class BlurTargetView extends BlurTargetViewBase {
|
|
10
|
+
hostRef;
|
|
11
|
+
constructor() {
|
|
12
|
+
super();
|
|
13
|
+
warnIfViewNameIsDynamic(TEMPLATE_TAG, BLUR_MODULE_NAME, 'ExpoBlurTargetView');
|
|
14
|
+
}
|
|
15
|
+
get nativeElement() {
|
|
16
|
+
return this.hostRef.nativeElement;
|
|
17
|
+
}
|
|
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
|
|
20
|
+
#host
|
|
21
|
+
[symbioteHostProps]="hostProps"
|
|
22
|
+
>
|
|
23
|
+
<ng-content />
|
|
24
|
+
</ViewManagerAdapter_ExpoBlur_ExpoBlurTargetView>`, isInline: true, dependencies: [{ kind: "directive", type: SymbioteHostPropsDirective, selector: "[symbioteHostProps]", inputs: ["symbioteHostProps"], exportAs: ["symbioteHost"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush });
|
|
25
|
+
}
|
|
26
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.8", ngImport: i0, type: BlurTargetView, decorators: [{
|
|
27
|
+
type: Component,
|
|
28
|
+
args: [{
|
|
29
|
+
selector: 'BlurTargetView',
|
|
30
|
+
standalone: true,
|
|
31
|
+
imports: [SymbioteHostPropsDirective],
|
|
32
|
+
schemas: [NO_ERRORS_SCHEMA],
|
|
33
|
+
changeDetection: ChangeDetectionStrategy.OnPush,
|
|
34
|
+
// Имя тега это нативное имя view, его нельзя собрать динамически
|
|
35
|
+
template: `<ViewManagerAdapter_ExpoBlur_ExpoBlurTargetView
|
|
36
|
+
#host
|
|
37
|
+
[symbioteHostProps]="hostProps"
|
|
38
|
+
>
|
|
39
|
+
<ng-content />
|
|
40
|
+
</ViewManagerAdapter_ExpoBlur_ExpoBlurTargetView>`,
|
|
41
|
+
}]
|
|
42
|
+
}], ctorParameters: () => [], propDecorators: { hostRef: [{
|
|
43
|
+
type: ViewChild,
|
|
44
|
+
args: ['host', { read: ElementRef, static: true }]
|
|
45
|
+
}] } });
|
|
46
|
+
//# sourceMappingURL=index.android.js.map
|