@symbiote-native/svelte 1.0.0 → 3.0.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 (117) hide show
  1. package/README.md +11 -13
  2. package/build/components/{activity-indicator/activity-indicator-props.d.ts → activity-indicator-props.d.ts} +1 -1
  3. package/build/components/flat-list/index.svelte +9 -5
  4. package/build/components/{image-background/image-background-props.d.ts → image-background-props.d.ts} +1 -1
  5. package/build/components/index.d.ts +6 -24
  6. package/build/components/index.js +0 -18
  7. package/build/components/keyboard-avoiding-view/index.svelte +16 -7
  8. package/build/components/modal/index.svelte +7 -7
  9. package/build/components/pressable/pressable-props.d.ts +3 -0
  10. package/build/components/refresh-control-props.d.ts +1 -0
  11. package/build/components/text-props.d.ts +1 -0
  12. package/build/components/touchable-highlight/touchable-highlight-props.d.ts +2 -0
  13. package/build/components/touchable-native-feedback/touchable-native-feedback-props.d.ts +1 -0
  14. package/build/components/touchable-without-feedback/touchable-without-feedback-props.d.ts +3 -1
  15. package/build/components/virtualized-list/index.svelte +79 -257
  16. package/build/components/virtualized-list/virtualized-list-props.d.ts +2 -2
  17. package/build/components/virtualized-list/virtualized-list-props.js +24 -4
  18. package/build/create-portal/index.js +2 -2
  19. package/build/dom-shim/canonical-prop-names.d.ts +2 -0
  20. package/build/dom-shim/canonical-prop-names.js +323 -0
  21. package/build/dom-shim/document.js +1 -1
  22. package/build/dom-shim/element.d.ts +10 -3
  23. package/build/dom-shim/element.js +233 -31
  24. package/build/dom-shim/patch-globals.js +31 -5
  25. package/build/dom-shim/shim-node.d.ts +6 -0
  26. package/build/dom-shim/shim-node.js +48 -1
  27. package/build/dom-shim/style-cache.d.ts +1 -0
  28. package/build/dom-shim/style-cache.js +27 -0
  29. package/build/dom-shim/text.js +5 -4
  30. package/build/host-instance.d.ts +2 -3
  31. package/build/host-instance.js +9 -3
  32. package/build/index.d.ts +7 -4
  33. package/build/index.js +17 -5
  34. package/build/intrinsic-elements.d.ts +63 -0
  35. package/build/modules/animated/index.d.ts +30 -46
  36. package/build/modules/animated/index.js +24 -34
  37. package/build/modules/image/index.d.ts +3 -0
  38. package/build/modules/image/index.js +15 -0
  39. package/build/preprocessor/scoped-styles.js +1 -1
  40. package/build/register.d.ts +1 -1
  41. package/build/register.js +13 -31
  42. package/build/root-element.js +1 -1
  43. package/metro-css-parser.cjs +2 -1
  44. package/metro-svelte-transformer.cjs +1 -17
  45. package/package.json +8 -16
  46. package/build/components/RefreshControl.svelte +0 -40
  47. package/build/components/RefreshControl.svelte.d.ts +0 -5
  48. package/build/components/SafeAreaView.svelte +0 -34
  49. package/build/components/SafeAreaView.svelte.d.ts +0 -5
  50. package/build/components/Text.svelte +0 -34
  51. package/build/components/Text.svelte.d.ts +0 -5
  52. package/build/components/View.svelte +0 -43
  53. package/build/components/View.svelte.d.ts +0 -5
  54. package/build/components/activity-indicator/activity-indicator-platform.android.d.ts +0 -3
  55. package/build/components/activity-indicator/activity-indicator-platform.android.js +0 -5
  56. package/build/components/activity-indicator/activity-indicator-platform.d.ts +0 -1
  57. package/build/components/activity-indicator/activity-indicator-platform.ios.d.ts +0 -3
  58. package/build/components/activity-indicator/activity-indicator-platform.ios.js +0 -6
  59. package/build/components/activity-indicator/activity-indicator-platform.js +0 -5
  60. package/build/components/activity-indicator/index.svelte +0 -63
  61. package/build/components/activity-indicator/index.svelte.d.ts +0 -5
  62. package/build/components/button.svelte +0 -76
  63. package/build/components/button.svelte.d.ts +0 -5
  64. package/build/components/image/image-logic.d.ts +0 -2
  65. package/build/components/image/image-logic.js +0 -135
  66. package/build/components/image/index.d.ts +0 -3
  67. package/build/components/image/index.js +0 -10
  68. package/build/components/image/index.svelte +0 -66
  69. package/build/components/image/index.svelte.d.ts +0 -5
  70. package/build/components/image-background/index.svelte +0 -87
  71. package/build/components/image-background/index.svelte.d.ts +0 -5
  72. package/build/components/input-accessory-view/index.svelte +0 -51
  73. package/build/components/input-accessory-view/index.svelte.d.ts +0 -5
  74. package/build/components/pressable/index.svelte +0 -185
  75. package/build/components/pressable/index.svelte.d.ts +0 -9
  76. package/build/components/scroll-view/index.svelte +0 -331
  77. package/build/components/scroll-view/index.svelte.d.ts +0 -18
  78. package/build/components/scroll-view/scroll-view-platform-types.d.ts +0 -3
  79. package/build/components/scroll-view/scroll-view-platform.android.d.ts +0 -3
  80. package/build/components/scroll-view/scroll-view-platform.android.js +0 -3
  81. package/build/components/scroll-view/scroll-view-platform.d.ts +0 -1
  82. package/build/components/scroll-view/scroll-view-platform.ios.d.ts +0 -3
  83. package/build/components/scroll-view/scroll-view-platform.ios.js +0 -3
  84. package/build/components/scroll-view/scroll-view-platform.js +0 -4
  85. package/build/components/scroll-view/scroll-view-sticky-context.d.ts +0 -7
  86. package/build/components/scroll-view/scroll-view-sticky-context.js +0 -1
  87. package/build/components/scroll-view/sticky-header-props.d.ts +0 -10
  88. package/build/components/scroll-view/sticky-header-props.js +0 -1
  89. package/build/components/scroll-view/sticky-header.svelte +0 -287
  90. package/build/components/scroll-view/sticky-header.svelte.d.ts +0 -5
  91. package/build/components/switch/index.svelte +0 -134
  92. package/build/components/switch/index.svelte.d.ts +0 -5
  93. package/build/components/text-input/index.svelte +0 -372
  94. package/build/components/text-input/index.svelte.d.ts +0 -17
  95. package/build/components/touchable-highlight/index.svelte +0 -139
  96. package/build/components/touchable-highlight/index.svelte.d.ts +0 -5
  97. package/build/components/touchable-native-feedback/index.d.ts +0 -9
  98. package/build/components/touchable-native-feedback/index.js +0 -14
  99. package/build/components/touchable-native-feedback/touchable-native-feedback.svelte +0 -49
  100. package/build/components/touchable-native-feedback/touchable-native-feedback.svelte.d.ts +0 -5
  101. package/build/components/touchable-opacity/index.svelte +0 -181
  102. package/build/components/touchable-opacity/index.svelte.d.ts +0 -5
  103. package/build/components/touchable-without-feedback/index.svelte +0 -75
  104. package/build/components/touchable-without-feedback/index.svelte.d.ts +0 -5
  105. package/build/dom-shim/fold-host-bag.d.ts +0 -1
  106. package/build/dom-shim/fold-host-bag.js +0 -7
  107. package/build/modules/animated/animated-component-props.d.ts +0 -7
  108. package/build/modules/animated/animated-component-props.js +0 -1
  109. package/build/modules/animated/create-animated-component.d.ts +0 -5
  110. package/build/modules/animated/create-animated-component.js +0 -131
  111. package/build/preprocessor/lower-host-primitives.d.ts +0 -10
  112. package/build/preprocessor/lower-host-primitives.js +0 -455
  113. package/build/state-style.d.ts +0 -1
  114. package/build/state-style.js +0 -8
  115. /package/build/components/{activity-indicator/activity-indicator-props.js → activity-indicator-props.js} +0 -0
  116. /package/build/components/{image-background/image-background-props.js → image-background-props.js} +0 -0
  117. /package/build/{components/scroll-view/scroll-view-platform-types.js → intrinsic-elements.js} +0 -0
package/build/index.d.ts CHANGED
@@ -2,13 +2,16 @@ import './register';
2
2
  export { mount, unmount } from './render';
3
3
  export { AppRegistry, setHostRegistrar } from './modules/app-registry';
4
4
  export type { IComponentProvider, IWrapperComponentProvider, IAppParameters, IRunnable, IHostRegistrar, IRegistry, IHeadlessTask, ITaskProvider, ITaskCanceller, ITaskCancelProvider, } from './modules/app-registry';
5
- export { View, Text, ActivityIndicator, Image, ImageBackground, InputAccessoryView, KeyboardAvoidingView, Switch, TextInput, Modal, SafeAreaView, RefreshControl, Pressable, TouchableOpacity, TouchableHighlight, TouchableWithoutFeedback, TouchableNativeFeedback, Button, ScrollView, ScrollViewStickyHeader, VirtualizedList, FlatList, VirtualizedSectionList, SectionList, } from './components';
6
- export type { IViewProps, ITextProps, IActivityIndicatorProps, IImageProps, IImageStatics, IImageBackgroundProps, IInputAccessoryViewProps, IKeyboardAvoidingViewProps, IKeyboardAvoidingBehavior, ISwitchProps, ITextInputProps, ITextInputHandle, IModalProps, ISafeAreaViewProps, IRefreshControlProps, IPressableProps, ITouchableOpacityProps, ITouchableHighlightProps, ITouchableWithoutFeedbackProps, ITouchableNativeFeedbackProps, IButtonProps, IScrollViewProps, IScrollViewHandle, IStickyHeaderComponentProps, IVirtualizedListProps, IVirtualizedListHandle, IFlatListProps, IFlatListHandle, IVirtualizedSectionListProps, ISectionListProps, ISection, } from './components';
5
+ export { KeyboardAvoidingView, Modal, VirtualizedList, FlatList, VirtualizedSectionList, SectionList, } from './components';
6
+ export type { IViewProps, ITextProps, IActivityIndicatorProps, IImageProps, IImageBackgroundProps, IInputAccessoryViewProps, IKeyboardAvoidingViewProps, IKeyboardAvoidingBehavior, ISwitchProps, ISwitchChangeEvent, ITextInputProps, ITextInputHandle, ITextInputChangeEvent, IModalProps, ISafeAreaViewProps, IRefreshControlProps, IPressableProps, ITouchableOpacityProps, ITouchableHighlightProps, ITouchableWithoutFeedbackProps, ITouchableNativeFeedbackProps, IButtonProps, IScrollViewProps, IScrollViewHandle, IVirtualizedListProps, IVirtualizedListHandle, IFlatListProps, IFlatListHandle, IVirtualizedSectionListProps, ISectionListProps, ISection, } from './components';
7
7
  export type { IAccessibilityProps, IAriaProps, IAccessibilityRole, IRole, IAccessibilityStateValue, IAccessibilityValue, IAccessibilityActionInfo, IResponderProps, } from '@symbiote-native/components';
8
8
  export { setImageSourceResolver } from '@symbiote-native/components';
9
9
  export type { IImageSource, IImageSourceProp, IResizeMode, IImageSize, IImageCacheStatus, IModalAnimationType, IModalPresentationStyle, IModalOrientation, IViewToken, IViewableItemsChangedInfo, IViewabilityConfig, IViewabilityConfigCallbackPair, IPressState, ISwitchTrackColor, INativeFeedbackBackground, IThemeAttrBackground, IRippleBackground, IVirtualizedSectionListHandle, IVirtualizedSectionListHandle as ISectionListHandle, ICellLayout, ISeparatorProps, ISeparators, IModalOrientationChangeEvent, IPressableAndroidRippleConfig, IEnterKeyHint, IInputMode, ISubmitBehavior, ITextInputSelection, } from '@symbiote-native/components';
10
10
  export { Platform, StyleSheet, PlatformColor, DynamicColorIOS, processColor, setNativeViewConfigSource, setColorProcessor, setDeviceEventSource, PixelRatio, PanResponder, dlog, isDebug, } from '@symbiote-native/engine';
11
11
  export type { INativeViewConfig, INativeViewConfigSource, IPixelRatioStatic, ISymbioteEvent, ISymbioteNode, IRootTag, IPanResponderGestureState, IPanResponderCallbacks, IGestureResponderHandlers, IPanResponderInstance, IViewStyle, ITextStyle, IFlexAlign, IFlexJustify, IPlatformStatic, IPlatformOSType, IPlatformConstantsIOS, IPlatformConstantsAndroid, IPlatformSelectSpec, IColorValue, IOpaqueColorValue, IDynamicColorIOSTuple, } from '@symbiote-native/engine';
12
+ export { Image } from './modules/image';
13
+ export type { IImageStatics } from './modules/image';
14
+ export { TouchableNativeFeedback } from '@symbiote-native/components';
12
15
  export { Alert, Share, ActionSheetIOS, Linking, Vibration, ToastAndroid, Settings, I18nManager, Dimensions, Appearance, AppState, Keyboard, KEYBOARD_EVENT, BackHandler, PermissionsAndroid, PERMISSIONS, RESULTS, LayoutAnimation, InteractionManager, } from '@symbiote-native/engine';
13
16
  export type { IAlertType, IAlertButtonStyle, IAlertButton, IAlertButtons, IAlertOptions, IShareContent, IShareOptions, IShareAction, IActionSheetIOSOptions, IShareActionSheetIOSOptions, IShareActionSheetError, IUrlEvent, II18nManagerConstants, IDisplayMetrics, IDisplayMetricsAndroid, IDimensionsPayload, IDimensionsSet, IDimensionsKey, IDimensionsChangeListener, IDimensionsStatic, IColorSchemeName, IColorSchemePreference, IAppStateStatus, IAppStateEvent, IKeyboardEventName, IKeyboardEvent, IKeyboardMetrics, IBackPressEventName, IBackPressHandler, IPermission, IPermissionStatus, IRationale, ILayoutAnimationType, ILayoutAnimationProperty, ILayoutAnimationConfig, ILayoutAnimationAnim, IInteractionEvent, ISimpleTask, IPromiseTask, ITask, IHandle, } from '@symbiote-native/engine';
14
17
  export { StatusBar } from './modules/status-bar';
@@ -18,6 +21,7 @@ export type { IAccessibilityChangeEvent, IAccessibilityChangeEventName, IAccessi
18
21
  export { findNodeHandle, hostInstance } from './host-instance';
19
22
  export type { IHostInstance } from './host-instance';
20
23
  export type { ShimElement } from './dom-shim';
24
+ export type { ISymbioteIntrinsicTag, ISymbioteHostAttributes, } from './intrinsic-elements';
21
25
  export { createTunnel, TunnelIn, TunnelOut, type ITunnel, } from './create-tunnel';
22
26
  export { Portal, type IPortalProps, type IPortalTarget } from './create-portal';
23
27
  export { useWindowDimensions } from './runes/use-window-dimensions.svelte';
@@ -27,5 +31,4 @@ export { orientation, createWidthQuery } from './runes/media-query';
27
31
  export type { IOrientation, IWidthQueryBounds } from './runes/media-query';
28
32
  export type { IReactiveValue } from './runes/dimensions-value';
29
33
  export { normalizeSvelteClass, resolveSvelteClass, type ISvelteClassValue, type IClassMap, type IClassEntry, } from './class-value';
30
- export { Animated, createAnimatedComponent } from './modules/animated';
31
- export type { IAnimatedComponentProps } from './modules/animated';
34
+ export { Animated } from './modules/animated';
package/build/index.js CHANGED
@@ -15,7 +15,12 @@
15
15
  import './register.js';
16
16
  export { mount, unmount } from './render.js';
17
17
  export { AppRegistry, setHostRegistrar } from './modules/app-registry/index.js';
18
- export { View, Text, ActivityIndicator, Image, ImageBackground, InputAccessoryView, KeyboardAvoidingView, Switch, TextInput, Modal, SafeAreaView, RefreshControl, Pressable, TouchableOpacity, TouchableHighlight, TouchableWithoutFeedback, TouchableNativeFeedback, Button, ScrollView, ScrollViewStickyHeader, VirtualizedList, FlatList, VirtualizedSectionList, SectionList, } from './components/index.js';
18
+ // Nine names are deliberately absent and there is nothing to import in their place: `view`, `text`,
19
+ // `safe-area-view`, `pressable`, `text-input`, `switch`, `image`, `input-accessory-view` and
20
+ // `activity-indicator` are INTRINSIC TAGS an app writes directly. What survives of `Image` and
21
+ // `TouchableNativeFeedback` is a STATICS namespace each, exported with the other imperative
22
+ // namespaces below. See ./components/index.ts for where each deleted wrapper's body went.
23
+ export { KeyboardAvoidingView, Modal, VirtualizedList, FlatList, VirtualizedSectionList, SectionList, } from './components/index.js';
19
24
  // Component-scoped agnostic types that live in @symbiote-native/components but weren't yet
20
25
  // threaded through this barrel (parity fix, see React's index.ts lines 55-58, 89, 245-250).
21
26
  export { setImageSourceResolver } from '@symbiote-native/components';
@@ -24,6 +29,13 @@ export { setImageSourceResolver } from '@symbiote-native/components';
24
29
  // React/Vue's own barrels) until 2026-08-12 — a pure engine re-export, no framework glue, so
25
30
  // adding it is a one-line parity fix, not new adapter work.
26
31
  export { Platform, StyleSheet, PlatformColor, DynamicColorIOS, processColor, setNativeViewConfigSource, setColorProcessor, setDeviceEventSource, PixelRatio, PanResponder, dlog, isDebug, } from '@symbiote-native/engine';
32
+ // The two namespaces left behind by primitives that became tags, here rather than in the component
33
+ // block above for one reason: they carry no view. `Image` gets an adapter file only because it
34
+ // renames the shared `imageStatics`; TNF's four are pure dict producers and come straight from the
35
+ // shared package. RN points NEW code at `<pressable p={{ android_ripple: {…} }}>`, but they are not
36
+ // redundant — the `touchable-native-feedback` tag folds `background`, and nothing else builds it.
37
+ export { Image } from './modules/image/index.js';
38
+ export { TouchableNativeFeedback } from '@symbiote-native/components';
27
39
  // Imperative runtime modules: the SAME module every adapter shares, re-exported straight from
28
40
  // @symbiote-native/engine so app code names only @symbiote-native/svelte (RN's single import
29
41
  // root). Nothing here has a visual or a lifecycle, so there is no Svelte half to write.
@@ -80,7 +92,7 @@ export { orientation, createWidthQuery } from './runes/media-query.js';
80
92
  // IClassNameValue — plus the normalizer, for a consumer building a class value in its own
81
93
  // helper. See class-value.ts's header for the object-is-a-style vs object-is-a-clsx-map rule.
82
94
  export { normalizeSvelteClass, resolveSvelteClass, } from './class-value.js';
83
- // Animated: the Svelte twin of adapters/vue/src/modules/animated. All six RN animated components
84
- // ship (View/Text/Image/ScrollView/FlatList/SectionList), all of them from the same generic
85
- // createAnimatedComponent() wrap React, Vue and Solid also export.
86
- export { Animated, createAnimatedComponent } from './modules/animated/index.js';
95
+ // Animated: the drivers, plus FlatList/SectionList as ALIASES of the plain components. There is no
96
+ // `createAnimatedComponent` — the engine resolves an AnimatedNode in any prop of any host node, so
97
+ // nothing needs wrapping (modules/animated/index.ts).
98
+ export { Animated } from './modules/animated/index.js';
@@ -0,0 +1,63 @@
1
+ import type { ISymbioteIntrinsic, ICrossTypedIntrinsics } from '@symbiote-native/components';
2
+ import type { IShimPropBag } from './dom-shim/element';
3
+ import type { IViewProps } from './components/view-props';
4
+ import type { ITextProps } from './components/text-props';
5
+ import type { IImageProps } from './components/image/image-props';
6
+ import type { IImageBackgroundProps } from './components/image-background-props';
7
+ import type { IPressableProps } from './components/pressable/pressable-props';
8
+ import type { IButtonProps } from './components/button-props';
9
+ import type { IActivityIndicatorProps } from './components/activity-indicator-props';
10
+ import type { ISafeAreaViewProps } from './components/safe-area-view-props';
11
+ import type { IRefreshControlProps } from './components/refresh-control-props';
12
+ import type { ITouchableOpacityProps } from './components/touchable-opacity/touchable-opacity-props';
13
+ import type { ITouchableWithoutFeedbackProps } from './components/touchable-without-feedback/touchable-without-feedback-props';
14
+ import type { ITouchableHighlightProps } from './components/touchable-highlight/touchable-highlight-props';
15
+ import type { ITouchableNativeFeedbackProps } from './components/touchable-native-feedback/touchable-native-feedback-props';
16
+ import type { IScrollViewProps } from './components/scroll-view/scroll-view-props';
17
+ import type { ISwitchProps } from './components/switch/switch-props';
18
+ import type { ITextInputProps } from './components/text-input/text-input-props';
19
+ import type { IModalProps } from './components/modal/modal-props';
20
+ import type { IInputAccessoryViewProps } from './components/input-accessory-view/input-accessory-view-props';
21
+ export interface ISymbioteHostAttributes {
22
+ p?: IShimPropBag;
23
+ [attribute: string]: unknown;
24
+ }
25
+ export interface ICrossedPrimitiveProps {
26
+ view: IViewProps;
27
+ text: ITextProps;
28
+ pressable: IPressableProps;
29
+ button: IButtonProps;
30
+ image: IImageProps;
31
+ 'image-background': IImageBackgroundProps;
32
+ 'input-accessory-view': IInputAccessoryViewProps;
33
+ 'refresh-control': IRefreshControlProps;
34
+ 'safe-area-view': ISafeAreaViewProps;
35
+ 'touchable-native-feedback': ITouchableNativeFeedbackProps;
36
+ 'touchable-opacity': ITouchableOpacityProps;
37
+ 'touchable-highlight': ITouchableHighlightProps;
38
+ 'touchable-without-feedback': ITouchableWithoutFeedbackProps;
39
+ 'scroll-view': IScrollViewProps;
40
+ switch: ISwitchProps;
41
+ 'text-input': ITextInputProps;
42
+ modal: IModalProps;
43
+ 'activity-indicator': IActivityIndicatorProps;
44
+ }
45
+ type IWithSvelteAttributeRealities<Props> = Partial<Props> & {
46
+ p?: IShimPropBag;
47
+ } & {
48
+ [K in keyof Props as K extends string ? Lowercase<K> : never]?: Props[K];
49
+ };
50
+ declare global {
51
+ namespace svelteHTML {
52
+ interface IntrinsicElements extends ICrossTypedIntrinsics<ISymbioteHostAttributes, {
53
+ [K in keyof ICrossedPrimitiveProps]: IWithSvelteAttributeRealities<ICrossedPrimitiveProps[K]>;
54
+ }> {
55
+ }
56
+ interface SVGAttributes extends ISymbioteHostAttributes {
57
+ }
58
+ interface HTMLAttributes extends ISymbioteHostAttributes {
59
+ }
60
+ }
61
+ }
62
+ export type ISymbioteIntrinsicTag = ISymbioteIntrinsic;
63
+ export {};
@@ -1,29 +1,9 @@
1
1
  import { AnimatedValue, AnimatedValueXY, AnimatedColor, timing, spring, decay, parallel, sequence, stagger, loop, delay, add, subtract, multiply, divide, modulo, diffClamp, event, forkEvent, unforkEvent } from '@symbiote-native/engine';
2
- export { createAnimatedComponent } from './create-animated-component';
3
- export type { IAnimatedComponentProps } from './animated-component-props';
4
- export declare const Animated: {
2
+ declare const drivers: {
5
3
  Value: typeof AnimatedValue;
6
4
  ValueXY: typeof AnimatedValueXY;
7
5
  Color: typeof AnimatedColor;
8
- Easing: {
9
- step0(n: number): number;
10
- step1(n: number): number;
11
- linear(t: number): number;
12
- ease(t: number): number;
13
- quad(t: number): number;
14
- cubic(t: number): number;
15
- poly(n: number): import("@symbiote-native/engine").IEasingFunction;
16
- sin(t: number): number;
17
- circle(t: number): number;
18
- exp(t: number): number;
19
- elastic(bounciness?: number): import("@symbiote-native/engine").IEasingFunction;
20
- back(s?: number): import("@symbiote-native/engine").IEasingFunction;
21
- bounce(t: number): number;
22
- bezier(x1: number, y1: number, x2: number, y2: number): import("@symbiote-native/engine").IEasingFunction;
23
- in(easing: import("@symbiote-native/engine").IEasingFunction): import("@symbiote-native/engine").IEasingFunction;
24
- out(easing: import("@symbiote-native/engine").IEasingFunction): import("@symbiote-native/engine").IEasingFunction;
25
- inOut(easing: import("@symbiote-native/engine").IEasingFunction): import("@symbiote-native/engine").IEasingFunction;
26
- };
6
+ Easing: import("@symbiote-native/engine").IEasing;
27
7
  timing: typeof timing;
28
8
  spring: typeof spring;
29
9
  decay: typeof decay;
@@ -41,28 +21,32 @@ export declare const Animated: {
41
21
  event: typeof event;
42
22
  forkEvent: typeof forkEvent;
43
23
  unforkEvent: typeof unforkEvent;
44
- View: import("svelte").Component<import("./animated-component-props").IAnimatedComponentProps, {
45
- $on?(type: string, callback: (e: any) => void): () => void;
46
- $set?(props: Partial<Record<string, any>>): void;
47
- } & Record<string, any>, string>;
48
- Text: import("svelte").Component<import("./animated-component-props").IAnimatedComponentProps, {
49
- $on?(type: string, callback: (e: any) => void): () => void;
50
- $set?(props: Partial<Record<string, any>>): void;
51
- } & Record<string, any>, string>;
52
- Image: import("svelte").Component<import("./animated-component-props").IAnimatedComponentProps, {
53
- $on?(type: string, callback: (e: any) => void): () => void;
54
- $set?(props: Partial<Record<string, any>>): void;
55
- } & Record<string, any>, string>;
56
- ScrollView: import("svelte").Component<import("./animated-component-props").IAnimatedComponentProps, {
57
- $on?(type: string, callback: (e: any) => void): () => void;
58
- $set?(props: Partial<Record<string, any>>): void;
59
- } & Record<string, any>, string>;
60
- FlatList: import("svelte").Component<import("./animated-component-props").IAnimatedComponentProps, {
61
- $on?(type: string, callback: (e: any) => void): () => void;
62
- $set?(props: Partial<Record<string, any>>): void;
63
- } & Record<string, any>, string>;
64
- SectionList: import("svelte").Component<import("./animated-component-props").IAnimatedComponentProps, {
65
- $on?(type: string, callback: (e: any) => void): () => void;
66
- $set?(props: Partial<Record<string, any>>): void;
67
- } & Record<string, any>, string>;
24
+ } | {
25
+ Value: typeof AnimatedValue;
26
+ ValueXY: typeof AnimatedValueXY;
27
+ Color: typeof AnimatedColor;
28
+ Easing: import("@symbiote-native/engine").IEasing;
29
+ timing: (value: AnimatedValue, config: import("@symbiote-native/engine").ITimingConfig) => import("@symbiote-native/engine").ICompositeAnimation;
30
+ spring: (value: AnimatedValue, config: import("@symbiote-native/engine").ISpringConfig) => import("@symbiote-native/engine").ICompositeAnimation;
31
+ decay: (_value: AnimatedValue, _config: import("@symbiote-native/engine").IDecayConfig) => import("@symbiote-native/engine").ICompositeAnimation;
32
+ parallel: (animations: import("@symbiote-native/engine").ICompositeAnimation[], _config?: import("@symbiote-native/engine").IParallelConfig) => import("@symbiote-native/engine").ICompositeAnimation;
33
+ sequence: (animations: import("@symbiote-native/engine").ICompositeAnimation[]) => import("@symbiote-native/engine").ICompositeAnimation;
34
+ stagger: (_time: number, animations: import("@symbiote-native/engine").ICompositeAnimation[]) => import("@symbiote-native/engine").ICompositeAnimation;
35
+ loop: (_animation: import("@symbiote-native/engine").ICompositeAnimation) => import("@symbiote-native/engine").ICompositeAnimation;
36
+ delay: (_time: number) => import("@symbiote-native/engine").ICompositeAnimation;
37
+ add: typeof add;
38
+ subtract: typeof subtract;
39
+ multiply: typeof multiply;
40
+ divide: typeof divide;
41
+ modulo: typeof modulo;
42
+ diffClamp: typeof diffClamp;
43
+ event: typeof event;
44
+ forkEvent: typeof forkEvent;
45
+ unforkEvent: typeof unforkEvent;
68
46
  };
47
+ interface IAnimatedNamespace {
48
+ FlatList: typeof import('../../components/flat-list/index.svelte').default;
49
+ SectionList: typeof import('../../components/section-list/index.svelte').default;
50
+ }
51
+ export declare const Animated: IAnimatedNamespace & typeof drivers;
52
+ export {};
@@ -1,29 +1,27 @@
1
- // The Animated namespace for @symbiote-native/svelte: the Svelte twin of
2
- // adapters/vue/src/modules/animated/index.ts (the primary reference — Svelte 5's runes are much
3
- // closer to Vue's reactivity model than to React's hooks). The value graph, easing,
4
- // interpolation and drivers come from @symbiote-native/engine (framework-agnostic, JS-driven),
5
- // spread in verbatim.
1
+ // The Animated namespace for @symbiote-native/svelte. The value graph, easing, interpolation and
2
+ // drivers come from @symbiote-native/engine (framework-agnostic, JS-driven), spread in verbatim.
6
3
  //
7
- // All six components come from ONE generic `createAnimatedComponent(Base)` — the same shape
8
- // React, Vue and Solid have — applied to the ordinary components. There is no hand-authored
9
- // `.svelte` file per animated component any more: an earlier revision of this header claimed a
10
- // generic wrap was impossible on Svelte, and that was simply wrong. See
11
- // create-animated-component.ts for how the wrap reaches the host node behind a base that exports
12
- // an imperative handle (ScrollView/FlatList/SectionList) versus one that exports nothing
13
- // (View/Text/Image), and for why it is plain TS rather than a parametrized `.svelte` file.
4
+ // There is no `Animated.View` / `Animated.Text` / `Animated.Image` any more, and nothing replaced
5
+ // them: `<view style={{ opacity: someAnimatedValue }}>` is the whole API. The engine resolves an
6
+ // AnimatedNode written into any prop of any host node (`core/engine/src/animated/host-binding.ts`):
7
+ // it publishes the current value, subscribes the leaf, writes each frame through its own targeted
8
+ // setNativeProps commit, and releases at the commit sweep. `createAnimatedComponent` brokered
9
+ // between the value graph and the node's Fabric tag, and both of those were already engine-side.
14
10
  //
15
- // A consumer animating their OWN component wraps it the same way: `createAnimatedComponent(Mine)`
16
- // works as long as Mine either exports `getScrollNode()` or forwards `{@attach}` onto its host
17
- // tag, which every component in this adapter does.
11
+ // Those three were aliases of the wrappers, and the wrappers are gone — a primitive is a tag now,
12
+ // which is not a value `<Animated.X>` can call. `Animated.ScrollView` left the same way on
13
+ // 2026-09-10: `bindAnimatedEvent` (node.ts, from `setEventListener`) attaches a native-driven event
14
+ // on ANY host node, which was the one job a scroll wrapper still looked like it had. The whole API
15
+ // is `<scroll-view style={{ opacity: v }} p={{ onScroll: Animated.event(…) }}>`.
16
+ //
17
+ // The two below REMAIN because the LIST family is tier 3: a render prop decides their output shape
18
+ // in JS, so there is no tag for `<Animated.X>` to be an alias of.
19
+ //
20
+ // A consumer animating their OWN component wraps nothing either: any component that forwards
21
+ // `style` down to a Symbiote primitive accepts an AnimatedNode by construction.
18
22
  import { AnimatedValue, AnimatedValueXY, AnimatedColor, AnimatedMock, Easing, Platform, timing, spring, decay, parallel, sequence, stagger, loop, delay, add, subtract, multiply, divide, modulo, diffClamp, event, forkEvent, unforkEvent, } from '@symbiote-native/engine';
19
- import View from '../../components/View.svelte';
20
- import Text from '../../components/Text.svelte';
21
- import Image from '../../components/image/index.svelte';
22
- import ScrollView from '../../components/scroll-view/index.svelte';
23
23
  import FlatList from '../../components/flat-list/index.svelte';
24
24
  import SectionList from '../../components/section-list/index.svelte';
25
- import { createAnimatedComponent } from './create-animated-component.js';
26
- export { createAnimatedComponent } from './create-animated-component.js';
27
25
  // The live, JS-driven driver namespace (real frames). RN's AnimatedImplementation.
28
26
  const liveDrivers = {
29
27
  Value: AnimatedValue,
@@ -50,20 +48,12 @@ const liveDrivers = {
50
48
  };
51
49
  // RN swaps the WHOLE driver namespace for the mock when the host reports isDisableAnimations
52
50
  // (reduced motion / test env): the mock keeps the same surface but jumps each animation to its
53
- // final value synchronously, no frames. The animated COMPONENTS (View/Text/Image/ScrollView/
54
- // FlatList/SectionList) are live in both branches; only the drivers/value/operators/events half
55
- // is swapped, exactly like
56
- // RN spreading `...Animated` (impl or mock) over the same component references.
51
+ // final value synchronously, no frames. Only this half is swapped — the component names below are
52
+ // the same references either way, exactly like RN spreading `...Animated` (impl or mock) over one
53
+ // set of components.
57
54
  const drivers = Platform.isDisableAnimations ? AnimatedMock : liveDrivers;
58
- // Wrapped eagerly, unlike Vue's lazy getters: nothing in the scroll/list chain imports THIS
59
- // module back (sticky-header builds its own Animated.View straight from the wrap), so there is
60
- // no half-evaluated cycle to dodge.
61
55
  export const Animated = {
62
- View: createAnimatedComponent(View),
63
- Text: createAnimatedComponent(Text),
64
- Image: createAnimatedComponent(Image),
65
- ScrollView: createAnimatedComponent(ScrollView),
66
- FlatList: createAnimatedComponent(FlatList),
67
- SectionList: createAnimatedComponent(SectionList),
56
+ FlatList,
57
+ SectionList,
68
58
  ...drivers,
69
59
  };
@@ -0,0 +1,3 @@
1
+ import { type IImageStatics } from '@symbiote-native/components';
2
+ export type { IImageStatics };
3
+ export declare const Image: IImageStatics;
@@ -0,0 +1,15 @@
1
+ // RN's Image STATICS — `getSize`, `prefetch`, `queryCache`, `abortPrefetch`, `resolveAssetSource`.
2
+ //
3
+ // IN `modules/`, NOT `components/`. The primitive is the `<image>` tag and its fold runs in the
4
+ // engine (`behaviors/image.ts`); what is left under the name `Image` is an imperative API with no
5
+ // view, which is what this bucket is for — `<adapter_src_follows_framework_idioms>` names it.
6
+ // Sitting in `components/` was what made a statics object read as a component.
7
+ //
8
+ // A NAMESPACE OBJECT rather than five bare functions, deliberately. `Alert`, `Share`, `Linking`,
9
+ // `Vibration` and `AppState` are all `export const X = {…}`, an app porting from RN writes
10
+ // `Image.getSize(...)` verbatim (P0, `<adapters_reach_full_feature_parity>`), and the bundle-size
11
+ // argument for splitting them is void: Metro does no tree shaking (facebook/metro#227).
12
+ //
13
+ // Shared verbatim via `imageStatics`, the same source React's and Vue's Image use.
14
+ import { imageStatics } from '@symbiote-native/components';
15
+ export const Image = imageStatics;
@@ -5,7 +5,7 @@
5
5
  // (`generate:'client', fragments:'tree', css:'external'`), a `<style>` block behaves one of two
6
6
  // ways:
7
7
  //
8
- // <symbiote-view class="card"> -> result.css: `.card.svelte-4psua6 { … }`
8
+ // <view class="card"> -> result.css: `.card.svelte-4psua6 { … }`
9
9
  // result.js: `$.set_class(node, 1, 'card svelte-4psua6')`
10
10
  // <View class="card"> -> warning: css_unused_selector
11
11
  // result.css: `/* (unused) .card { … }*/`
@@ -1 +1 @@
1
- export {};
1
+ import '@symbiote-native/components/register';
package/build/register.js CHANGED
@@ -1,33 +1,15 @@
1
- // Side-effect ONLY — this module exports nothing, and that is the whole design.
1
+ // Side-effect ONLY. Exports nothing, and must never be re-exported from the barrel.
2
2
  //
3
- // The host-behavior registry has to know that `symbiote-pressable` carries a press machine before
4
- // any node of that tag is created, and a registration is exactly the shape Metro's
5
- // `inlineRequires` silently drops in RELEASE builds: it moves a `require` down to the first place
6
- // its binding is used as a VALUE, and a barrel's `export { X } from './x'` compiles to a lazy
7
- // getter. A module nobody names as a value therefore never evaluates — dev is perfect, release has
8
- // no behavior at all.
3
+ // The fourteen calls live once, in `@symbiote-native/components/register` — they were identical in
4
+ // all five adapters, and each copy carried a migration ledger justifying a call against a wrapper
5
+ // that no longer exists. What is per-adapter is only the SPELLING of the import below: every
6
+ // `*-tag.test.*` here reaches the registry through `import './register';`, and this adapter's own
7
+ // barrel guard pins that line.
9
8
  //
10
- // Two shapes survive that, and only two. Deleting the indirection is unavailable here: the engine
11
- // cannot import from `@symbiote-native/components` because the dependency runs the other way, so
12
- // the registry is forced rather than chosen. That leaves a BARE side-effect import that is never
13
- // re-exported, the pattern `packages/slider/src/{react,vue,svelte,angular}/index.ts` already uses.
14
- // `index.ts` carries `import './register';` and must never carry `export * from './register'`, nor
15
- // sit beside a re-export of this same specifier — Babel merges two imports of one specifier into a
16
- // single dependency and the merged one stays lazy.
17
- import { registerImageBehavior, registerInputAccessoryViewBehavior, registerPressableBehavior, registerSwitchBehavior, registerTextInputBehavior, } from '@symbiote-native/components';
18
- registerPressableBehavior();
19
- // Only the LOWERED tags carry this — the wrapper renders `symbiote-text-input-managed` and
20
- // keeps running its own lifecycle. One owner per node; see `component-names/shared.ts`.
21
- registerTextInputBehavior();
22
- // Same reason as TextInput: the wrapper renders `symbiote-switch-managed` and runs its own
23
- // lastNativeReport/snap-back lifecycle, so the engine's copy attaches only to the bare tag.
24
- registerSwitchBehavior();
25
- // Image owns no runtime — its behavior is a prop FOLD and nothing else, and it is registered on the
26
- // same `symbiote-image` the wrapper already emits rather than on a `-managed` twin. That is safe
27
- // only because the mapping is idempotent, which `core/components/src/behaviors/image.test.ts`
28
- // asserts rather than assumes; a wrapper-built node simply folds a second time and nothing moves.
29
- registerImageBehavior();
30
- // Fold-only, and it shares the wrapper's tag for the same reason Image does: the mapping has no
31
- // aliasing at all, so a wrapper-built node folding a second time moves nothing.
32
- // `core/components/src/behaviors/input-accessory-view.test.ts` asserts that rather than assuming it.
33
- registerInputAccessoryViewBehavior();
9
+ // WHY A SIDE-EFFECT SUBPATH AND NOT A BARREL EXPORT. Metro turns on `inlineRequires` for PRODUCTION
10
+ // only: it moves a `require` down to the first place its binding is used as a VALUE, and
11
+ // `export { X } from './x'` compiles to a lazy getter. A registration reached that way never
12
+ // evaluates in a Release build — invisible to tsc, to vitest, and to grepping the bundle. A bare
13
+ // `import` placed NEXT TO a re-export of the same specifier does not help either: Babel merges the
14
+ // two into one dependency and the merged dependency stays lazy.
15
+ import '@symbiote-native/components/register';
@@ -9,7 +9,7 @@
9
9
  // normally an ancestor's `insertOne` does that. For the root there is no ancestor shim node;
10
10
  // the surface plays that role, so this file makes the one `surface.appendChild` call directly.
11
11
  import { ShimElement } from './dom-shim/index.js';
12
- const ROOT_INTRINSIC = 'symbiote-view';
12
+ const ROOT_INTRINSIC = 'view';
13
13
  // Unlike Vue/React, whose app root mounts directly onto the surface (its own flex:1
14
14
  // class/style reaches the engine's synthetic flex:1 AppContainer with nothing in between),
15
15
  // Svelte's compiled output needs a real DOM-like `target` to call appendChild on — this
@@ -6,4 +6,5 @@
6
6
  // already handles standalone style files itself (its isStyleFile branch), so this subpath exists
7
7
  // only for parity with the other adapters and for a future consumer that wants CSS-only handling
8
8
  // without the .svelte transform (e.g. importing a plain .css from non-.svelte source).
9
- module.exports = require('@symbiote-native/css-parser').createCssMetroTransformer();
9
+ module.exports =
10
+ require('@symbiote-native/css-parser').createCssMetroTransformer();
@@ -86,17 +86,6 @@ function collapseTextWhitespacePreprocessor() {
86
86
  return collapseTextWhitespacePromise;
87
87
  }
88
88
 
89
- // Lowers <View>/<Text> to their intrinsic tags so a primitive stops costing a Svelte component
90
- // boundary — which in Svelte is paid in ANCHOR NODES, 12 per benchmark row (see the file header).
91
- // Loaded lazily for the same reason as the three above.
92
- let lowerHostPrimitivesPromise;
93
- function lowerHostPrimitivesPreprocessor() {
94
- lowerHostPrimitivesPromise ??=
95
- import('@symbiote-native/svelte/lower-host-primitives').then(mod =>
96
- mod.lowerHostPrimitives(),
97
- );
98
- return lowerHostPrimitivesPromise;
99
- }
100
89
  //
101
90
  // Svelte 5's compiler strips <script lang="ts"> types structurally, with no external type
102
91
  // resolution needed (unlike @vue/compiler-sfc's compileScript, which needs registerTS + a real
@@ -160,12 +149,7 @@ module.exports.transform = async function transform(params) {
160
149
  const preprocessed = await (
161
150
  await collapseTextWhitespacePreprocessor()
162
151
  ).markup({ content: stylePreprocessed.code, filename: params.filename });
163
- // LAST, and after scopedStyles specifically — see svelte.config.js for why the order is
164
- // load-bearing rather than stylistic.
165
- const lowered = await (
166
- await lowerHostPrimitivesPreprocessor()
167
- ).markup({ content: preprocessed.code, filename: params.filename });
168
- const code = compileSvelteFile(lowered.code, params.filename);
152
+ const code = compileSvelteFile(preprocessed.code, params.filename);
169
153
  // Re-label as .tsx so RN's transformer processes the module exactly like app source; Metro
170
154
  // tracks the real path separately. Matches metro-vue-transformer.cjs's identical trick.
171
155
  return upstreamTransformer.transform({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@symbiote-native/svelte",
3
- "version": "1.0.0",
3
+ "version": "3.0.0",
4
4
  "description": "SymbioteNative's Svelte adapter — a DOM shim over stock compiled Svelte output driving real native iOS/Android views through the same engine as every other adapter.",
5
5
  "keywords": [
6
6
  "react-native",
@@ -52,10 +52,6 @@
52
52
  "types": "./build/preprocessor/collapse-text-whitespace.d.ts",
53
53
  "default": "./build/preprocessor/collapse-text-whitespace.js"
54
54
  },
55
- "./lower-host-primitives": {
56
- "types": "./build/preprocessor/lower-host-primitives.d.ts",
57
- "default": "./build/preprocessor/lower-host-primitives.js"
58
- },
59
55
  "./style-scope": {
60
56
  "types": "./build/style-scope.d.ts",
61
57
  "default": "./build/style-scope.js"
@@ -65,11 +61,7 @@
65
61
  "default": "./build/scope-token.js"
66
62
  },
67
63
  "./metro-svelte-transformer": "./metro-svelte-transformer.cjs",
68
- "./metro-css-parser": "./metro-css-parser.cjs",
69
- "./state-style": {
70
- "types": "./build/state-style.d.ts",
71
- "default": "./build/state-style.js"
72
- }
64
+ "./metro-css-parser": "./metro-css-parser.cjs"
73
65
  },
74
66
  "files": [
75
67
  "build",
@@ -81,22 +73,22 @@
81
73
  },
82
74
  "dependencies": {
83
75
  "typescript": "~6.0.0",
84
- "@symbiote-native/components": "1.0.0",
76
+ "@symbiote-native/components": "3.0.0",
85
77
  "@symbiote-native/css-parser": "0.5.0"
86
78
  },
87
79
  "peerDependencies": {
88
80
  "svelte": ">=5.56.0",
89
81
  "react-native": ">=0.86",
90
- "@symbiote-native/engine": "^0.4.0"
82
+ "@symbiote-native/engine": "^1.0.0"
91
83
  },
92
84
  "devDependencies": {
93
85
  "@vue/runtime-core": "^3.5.13",
94
86
  "react": "19.2.3",
95
87
  "svelte": "^5.56.0",
96
- "@symbiote-native/engine": "0.4.0",
97
- "@symbiote-native/react": "1.0.0",
98
- "@symbiote-native/test-utils": "0.3.0",
99
- "@symbiote-native/vue": "1.0.0"
88
+ "@symbiote-native/engine": "1.0.0",
89
+ "@symbiote-native/react": "3.0.0",
90
+ "@symbiote-native/test-utils": "0.3.1",
91
+ "@symbiote-native/vue": "3.0.0"
100
92
  },
101
93
  "scripts": {
102
94
  "typecheck": "tsc --build",
@@ -1,40 +0,0 @@
1
- <script lang="ts" module>
2
- // RefreshControl primitive. On iOS this is the PullToRefreshView Fabric node that lives INSIDE
3
- // a ScrollView (a sibling of the content container), giving the pull-to-refresh gesture. On
4
- // Android it is AndroidSwipeRefreshLayout and WRAPS the scroll view (a childless-on-iOS,
5
- // wraps-on-Android shape — see refresh-control-props.ts). `refreshing` is a controlled prop:
6
- // the parent owns it and pushes it down each commit; native reports the gesture via the direct
7
- // `topRefresh` event, which the engine routes to the host's `onRefresh` bag entry.
8
- import type { IRefreshControlProps } from './refresh-control-props';
9
-
10
- export type { IRefreshControlProps };
11
- </script>
12
-
13
- <script lang="ts">
14
- import { dlog } from '@symbiote-native/engine';
15
- import { resolveAccessibilityProps } from '@symbiote-native/components';
16
- import { createAttachmentsSync } from '../runes/attachments';
17
- import type { ShimElement } from '../dom-shim';
18
-
19
- let { children, ...rest }: IRefreshControlProps = $props();
20
-
21
- dlog('RefreshControl -> PullToRefreshView');
22
- dlog(`RefreshControl refreshing=${String(rest.refreshing)}`);
23
- if (rest.enabled !== undefined)
24
- dlog(`RefreshControl enabled=${String(rest.enabled)} (Android-only)`);
25
- if (rest.onRefresh !== undefined)
26
- dlog('RefreshControl onRefresh listener wired');
27
-
28
- const bag = $derived(resolveAccessibilityProps(rest));
29
-
30
- // See View.svelte's note on `{@attach}`.
31
- let hostShim = $state.raw<ShimElement | null>(null);
32
- const syncAttachments = createAttachmentsSync();
33
- $effect(() => {
34
- syncAttachments(hostShim, rest);
35
- });
36
- </script>
37
-
38
- <symbiote-refresh-control p={bag} bind:this={hostShim}>
39
- {@render children?.()}
40
- </symbiote-refresh-control>
@@ -1,5 +0,0 @@
1
- import type { IRefreshControlProps } from './refresh-control-props';
2
- export type { IRefreshControlProps };
3
- declare const RefreshControl: import("svelte").Component<IRefreshControlProps, {}, "">;
4
- type RefreshControl = ReturnType<typeof RefreshControl>;
5
- export default RefreshControl;
@@ -1,34 +0,0 @@
1
- <script lang="ts" module>
2
- // SafeAreaView primitive. A plain view whose native side insets its children to the safe area
3
- // (notch, rounded corners, system bars). There is no JS-side translation; RN just renders the
4
- // native RCTSafeAreaView and lets the host do the inset math, so this maps style + children
5
- // straight onto the intrinsic — same object-bag pattern as View.svelte.
6
- import type { ISafeAreaViewProps } from './safe-area-view-props';
7
-
8
- export type { ISafeAreaViewProps };
9
- </script>
10
-
11
- <script lang="ts">
12
- import { dlog } from '@symbiote-native/engine';
13
- import { resolveAccessibilityProps } from '@symbiote-native/components';
14
-
15
- import { createAttachmentsSync } from '../runes/attachments';
16
- import type { ShimElement } from '../dom-shim';
17
-
18
- let { children, ...rest }: ISafeAreaViewProps = $props();
19
-
20
- dlog('SafeAreaView -> SafeAreaView');
21
-
22
- const bag = $derived(resolveAccessibilityProps(rest));
23
-
24
- // See View.svelte's note on `{@attach}`.
25
- let hostShim = $state.raw<ShimElement | null>(null);
26
- const syncAttachments = createAttachmentsSync();
27
- $effect(() => {
28
- syncAttachments(hostShim, rest);
29
- });
30
- </script>
31
-
32
- <symbiote-safe-area-view p={bag} bind:this={hostShim}>
33
- {@render children?.()}
34
- </symbiote-safe-area-view>
@@ -1,5 +0,0 @@
1
- import type { ISafeAreaViewProps } from './safe-area-view-props';
2
- export type { ISafeAreaViewProps };
3
- declare const SafeAreaView: import("svelte").Component<ISafeAreaViewProps, {}, "">;
4
- type SafeAreaView = ReturnType<typeof SafeAreaView>;
5
- export default SafeAreaView;