react-native-platform-components 1.3.0 → 1.4.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 +24 -30
- package/android/src/main/java/com/platformcomponents/PCButtonGroupView.kt +498 -0
- package/android/src/main/java/com/platformcomponents/PCButtonGroupViewManager.kt +191 -0
- package/android/src/main/java/com/platformcomponents/PCButtonSupport.kt +127 -0
- package/android/src/main/java/com/platformcomponents/PCButtonView.kt +345 -0
- package/android/src/main/java/com/platformcomponents/PCButtonViewManager.kt +126 -0
- package/android/src/main/java/com/platformcomponents/PCExpressive.kt +107 -0
- package/android/src/main/java/com/platformcomponents/PCFloatingToolbarView.kt +115 -0
- package/android/src/main/java/com/platformcomponents/PCFloatingToolbarViewManager.kt +65 -0
- package/android/src/main/java/com/platformcomponents/PCSegmentedControlView.kt +11 -3
- package/android/src/main/java/com/platformcomponents/PCSegmentedControlViewManager.kt +6 -1
- package/android/src/main/java/com/platformcomponents/PCTextFieldView.kt +1018 -0
- package/android/src/main/java/com/platformcomponents/PCTextFieldViewManager.kt +248 -0
- package/android/src/main/java/com/platformcomponents/PlatformComponentsPackage.kt +4 -0
- package/android/src/main/res/values/attrs.xml +13 -0
- package/android/src/main/res/values/styles.xml +183 -0
- package/ios/PCButton.h +10 -0
- package/ios/PCButton.mm +196 -0
- package/ios/PCButtonGroup.h +10 -0
- package/ios/PCButtonGroup.mm +256 -0
- package/ios/PCButtonGroupView.swift +254 -0
- package/ios/PCButtonSupport.swift +141 -0
- package/ios/PCButtonView.swift +155 -0
- package/ios/PCFloatingToolbar.h +10 -0
- package/ios/PCFloatingToolbar.mm +76 -0
- package/ios/PCFloatingToolbarView.swift +95 -0
- package/ios/PCTextField.h +10 -0
- package/ios/PCTextField.mm +391 -0
- package/ios/PCTextFieldView.swift +1012 -0
- package/lib/commonjs/Button.js +77 -0
- package/lib/commonjs/Button.js.map +1 -0
- package/lib/commonjs/ButtonGroup.js +99 -0
- package/lib/commonjs/ButtonGroup.js.map +1 -0
- package/lib/commonjs/ButtonGroupNativeComponent.ts +121 -0
- package/lib/commonjs/ButtonNativeComponent.ts +76 -0
- package/lib/commonjs/FloatingToolbar.js +69 -0
- package/lib/commonjs/FloatingToolbar.js.map +1 -0
- package/lib/commonjs/FloatingToolbarNativeComponent.ts +31 -0
- package/lib/commonjs/SegmentedControl.js +11 -85
- package/lib/commonjs/SegmentedControl.js.map +1 -1
- package/lib/commonjs/SegmentedControlNativeComponent.ts +3 -0
- package/lib/commonjs/TextField.js +195 -0
- package/lib/commonjs/TextField.js.map +1 -0
- package/lib/commonjs/TextFieldNativeComponent.ts +218 -0
- package/lib/commonjs/focusRegistry.js +78 -0
- package/lib/commonjs/focusRegistry.js.map +1 -0
- package/lib/commonjs/icons.js +92 -0
- package/lib/commonjs/icons.js.map +1 -0
- package/lib/commonjs/index.js +66 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.web.js +32 -2
- package/lib/commonjs/index.web.js.map +1 -1
- package/lib/commonjs/labelStyle.js +27 -0
- package/lib/commonjs/labelStyle.js.map +1 -0
- package/lib/commonjs/reactNativeInternals.d.js +2 -0
- package/lib/commonjs/reactNativeInternals.d.js.map +1 -0
- package/lib/module/Button.js +70 -0
- package/lib/module/Button.js.map +1 -0
- package/lib/module/ButtonGroup.js +92 -0
- package/lib/module/ButtonGroup.js.map +1 -0
- package/lib/module/ButtonGroupNativeComponent.ts +121 -0
- package/lib/module/ButtonNativeComponent.ts +76 -0
- package/lib/module/FloatingToolbar.js +62 -0
- package/lib/module/FloatingToolbar.js.map +1 -0
- package/lib/module/FloatingToolbarNativeComponent.ts +31 -0
- package/lib/module/SegmentedControl.js +12 -87
- package/lib/module/SegmentedControl.js.map +1 -1
- package/lib/module/SegmentedControlNativeComponent.ts +3 -0
- package/lib/module/TextField.js +189 -0
- package/lib/module/TextField.js.map +1 -0
- package/lib/module/TextFieldNativeComponent.ts +218 -0
- package/lib/module/focusRegistry.js +74 -0
- package/lib/module/focusRegistry.js.map +1 -0
- package/lib/module/icons.js +87 -0
- package/lib/module/icons.js.map +1 -0
- package/lib/module/index.js +6 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.web.js +28 -0
- package/lib/module/index.web.js.map +1 -1
- package/lib/module/labelStyle.js +23 -0
- package/lib/module/labelStyle.js.map +1 -0
- package/lib/module/reactNativeInternals.d.js +2 -0
- package/lib/module/reactNativeInternals.d.js.map +1 -0
- package/lib/typescript/commonjs/docs/sidebars.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/Button.d.ts +76 -0
- package/lib/typescript/commonjs/src/Button.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ButtonGroup.d.ts +102 -0
- package/lib/typescript/commonjs/src/ButtonGroup.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts +93 -0
- package/lib/typescript/commonjs/src/ButtonGroupNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts +57 -0
- package/lib/typescript/commonjs/src/ButtonNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/FloatingToolbar.d.ts +45 -0
- package/lib/typescript/commonjs/src/FloatingToolbar.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts +24 -0
- package/lib/typescript/commonjs/src/FloatingToolbarNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/SegmentedControl.d.ts +17 -46
- package/lib/typescript/commonjs/src/SegmentedControl.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts +2 -0
- package/lib/typescript/commonjs/src/SegmentedControlNativeComponent.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/TextField.d.ts +174 -0
- package/lib/typescript/commonjs/src/TextField.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts +162 -0
- package/lib/typescript/commonjs/src/TextFieldNativeComponent.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/focusRegistry.d.ts +13 -0
- package/lib/typescript/commonjs/src/focusRegistry.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/icons.d.ts +52 -0
- package/lib/typescript/commonjs/src/icons.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/index.d.ts +6 -0
- package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/index.web.d.ts +121 -0
- package/lib/typescript/commonjs/src/index.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/labelStyle.d.ts +20 -0
- package/lib/typescript/commonjs/src/labelStyle.d.ts.map +1 -0
- package/lib/typescript/commonjs/src/sharedTypes.d.ts +6 -1
- package/lib/typescript/commonjs/src/sharedTypes.d.ts.map +1 -1
- package/lib/typescript/module/docs/sidebars.d.ts.map +1 -1
- package/lib/typescript/module/src/Button.d.ts +76 -0
- package/lib/typescript/module/src/Button.d.ts.map +1 -0
- package/lib/typescript/module/src/ButtonGroup.d.ts +102 -0
- package/lib/typescript/module/src/ButtonGroup.d.ts.map +1 -0
- package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts +93 -0
- package/lib/typescript/module/src/ButtonGroupNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/ButtonNativeComponent.d.ts +57 -0
- package/lib/typescript/module/src/ButtonNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/FloatingToolbar.d.ts +45 -0
- package/lib/typescript/module/src/FloatingToolbar.d.ts.map +1 -0
- package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts +24 -0
- package/lib/typescript/module/src/FloatingToolbarNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/SegmentedControl.d.ts +17 -46
- package/lib/typescript/module/src/SegmentedControl.d.ts.map +1 -1
- package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts +2 -0
- package/lib/typescript/module/src/SegmentedControlNativeComponent.d.ts.map +1 -1
- package/lib/typescript/module/src/TextField.d.ts +174 -0
- package/lib/typescript/module/src/TextField.d.ts.map +1 -0
- package/lib/typescript/module/src/TextFieldNativeComponent.d.ts +162 -0
- package/lib/typescript/module/src/TextFieldNativeComponent.d.ts.map +1 -0
- package/lib/typescript/module/src/focusRegistry.d.ts +13 -0
- package/lib/typescript/module/src/focusRegistry.d.ts.map +1 -0
- package/lib/typescript/module/src/icons.d.ts +52 -0
- package/lib/typescript/module/src/icons.d.ts.map +1 -0
- package/lib/typescript/module/src/index.d.ts +6 -0
- package/lib/typescript/module/src/index.d.ts.map +1 -1
- package/lib/typescript/module/src/index.web.d.ts +121 -0
- package/lib/typescript/module/src/index.web.d.ts.map +1 -1
- package/lib/typescript/module/src/labelStyle.d.ts +20 -0
- package/lib/typescript/module/src/labelStyle.d.ts.map +1 -0
- package/lib/typescript/module/src/sharedTypes.d.ts +6 -1
- package/lib/typescript/module/src/sharedTypes.d.ts.map +1 -1
- package/package.json +25 -4
- package/react-native.config.js +3 -0
- package/shared/PCButtonComponentDescriptors-custom.h +22 -0
- package/shared/PCButtonGroupComponentDescriptors-custom.h +22 -0
- package/shared/PCButtonGroupShadowNode-custom.cpp +48 -0
- package/shared/PCButtonGroupShadowNode-custom.h +55 -0
- package/shared/PCButtonGroupState-custom.h +61 -0
- package/shared/PCButtonShadowNode-custom.cpp +48 -0
- package/shared/PCButtonShadowNode-custom.h +55 -0
- package/shared/PCButtonState-custom.h +61 -0
- package/shared/PCTextFieldComponentDescriptors-custom.h +22 -0
- package/shared/PCTextFieldShadowNode-custom.cpp +47 -0
- package/shared/PCTextFieldShadowNode-custom.h +55 -0
- package/shared/PCTextFieldState-custom.h +61 -0
- package/shared/react/renderer/components/PlatformComponentsViewSpec/ComponentDescriptors.h +3 -0
- package/src/Button.tsx +144 -0
- package/src/ButtonGroup.tsx +233 -0
- package/src/ButtonGroupNativeComponent.ts +121 -0
- package/src/ButtonNativeComponent.ts +76 -0
- package/src/FloatingToolbar.tsx +113 -0
- package/src/FloatingToolbarNativeComponent.ts +31 -0
- package/src/SegmentedControl.tsx +26 -118
- package/src/SegmentedControlNativeComponent.ts +3 -0
- package/src/TextField.tsx +494 -0
- package/src/TextFieldNativeComponent.ts +218 -0
- package/src/focusRegistry.ts +89 -0
- package/src/icons.ts +116 -0
- package/src/index.tsx +6 -0
- package/src/index.web.tsx +194 -0
- package/src/labelStyle.ts +36 -0
- package/src/reactNativeInternals.d.ts +22 -0
- package/src/sharedTypes.ts +7 -1
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// focusRegistry.ts
|
|
4
|
+
//
|
|
5
|
+
// TextField's link to React Native's focused-input bookkeeping. The core
|
|
6
|
+
// TextInput registers its host node with `TextInputState`, and that registry is
|
|
7
|
+
// what `Keyboard.dismiss()`, a ScrollView's `keyboardShouldPersistTaps` and
|
|
8
|
+
// `keyboardDismissMode`, and `KeyboardAvoidingView` act on. Registering the
|
|
9
|
+
// same way makes a TextField behave like a TextInput for all of them.
|
|
10
|
+
//
|
|
11
|
+
// `TextInputState` is a stable internal (it has kept this shape since 0.63),
|
|
12
|
+
// but React Native's Babel preset adds a dev-time warning to every static
|
|
13
|
+
// `import` or `require` of a deep path. A dynamic `import()` is resolved by
|
|
14
|
+
// Metro the same way and carries no warning; it settles in a microtask at
|
|
15
|
+
// startup, so a node registered before then is kept and registered once the
|
|
16
|
+
// module arrives. If a future release drops the path, the registry is simply
|
|
17
|
+
// absent and the field falls back to the public `TextInput.State` calls for
|
|
18
|
+
// focus and blur, keeping `Keyboard.dismiss()` working.
|
|
19
|
+
import { TextInput } from 'react-native';
|
|
20
|
+
let registry;
|
|
21
|
+
const pendingRegistrations = new Set();
|
|
22
|
+
|
|
23
|
+
// A stable internal without a public counterpart; see reactNativeInternals.d.ts.
|
|
24
|
+
|
|
25
|
+
import('react-native/Libraries/Components/TextInput/TextInputState').then(module => {
|
|
26
|
+
registry = module.default;
|
|
27
|
+
pendingRegistrations.forEach(node => registry?.registerInput(node));
|
|
28
|
+
pendingRegistrations.clear();
|
|
29
|
+
}).catch(() => {
|
|
30
|
+
// Not available: focus and blur still go through TextInput.State below.
|
|
31
|
+
});
|
|
32
|
+
export const focusRegistry = {
|
|
33
|
+
/** Called when the field mounts. */
|
|
34
|
+
register(node) {
|
|
35
|
+
if (registry) {
|
|
36
|
+
registry.registerInput(node);
|
|
37
|
+
} else {
|
|
38
|
+
pendingRegistrations.add(node);
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
/** Called when the field unmounts; drops the focus if the field held it. */
|
|
42
|
+
unregister(node) {
|
|
43
|
+
pendingRegistrations.delete(node);
|
|
44
|
+
if (registry) {
|
|
45
|
+
registry.unregisterInput(node);
|
|
46
|
+
if (registry.currentlyFocusedInput() === node) {
|
|
47
|
+
registry.blurInput(node);
|
|
48
|
+
}
|
|
49
|
+
} else if (TextInput.State.currentlyFocusedInput() === node) {
|
|
50
|
+
TextInput.State.blurTextInput(node);
|
|
51
|
+
}
|
|
52
|
+
},
|
|
53
|
+
/** The field gained focus natively. */
|
|
54
|
+
focused(node) {
|
|
55
|
+
if (node == null) return;
|
|
56
|
+
if (registry) {
|
|
57
|
+
registry.focusInput(node);
|
|
58
|
+
} else {
|
|
59
|
+
// Also re-sends the focus command, which the focused field ignores
|
|
60
|
+
TextInput.State.focusTextInput(node);
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
/** The field lost focus natively. */
|
|
64
|
+
blurred(node) {
|
|
65
|
+
if (node == null) return;
|
|
66
|
+
if (registry) {
|
|
67
|
+
registry.blurInput(node);
|
|
68
|
+
} else {
|
|
69
|
+
// Also re-sends the blur command, which the unfocused field ignores
|
|
70
|
+
TextInput.State.blurTextInput(node);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
//# sourceMappingURL=focusRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["TextInput","registry","pendingRegistrations","Set","then","module","default","forEach","node","registerInput","clear","catch","focusRegistry","register","add","unregister","delete","unregisterInput","currentlyFocusedInput","blurInput","State","blurTextInput","focused","focusInput","focusTextInput","blurred"],"sourceRoot":"../../src","sources":["focusRegistry.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAASA,SAAS,QAAQ,cAAc;AAaxC,IAAIC,QAA8B;AAClC,MAAMC,oBAAoB,GAAG,IAAIC,GAAG,CAAW,CAAC;;AAEhD;;AAEA,MAAM,CAAC,4DAA4D,CAAC,CACjEC,IAAI,CAAEC,MAAM,IAAK;EAChBJ,QAAQ,GAAGI,MAAM,CAACC,OAAO;EACzBJ,oBAAoB,CAACK,OAAO,CAAEC,IAAI,IAAKP,QAAQ,EAAEQ,aAAa,CAACD,IAAI,CAAC,CAAC;EACrEN,oBAAoB,CAACQ,KAAK,CAAC,CAAC;AAC9B,CAAC,CAAC,CACDC,KAAK,CAAC,MAAM;EACX;AAAA,CACD,CAAC;AAEJ,OAAO,MAAMC,aAAa,GAAG;EAC3B;EACAC,QAAQA,CAACL,IAAc,EAAQ;IAC7B,IAAIP,QAAQ,EAAE;MACZA,QAAQ,CAACQ,aAAa,CAACD,IAAI,CAAC;IAC9B,CAAC,MAAM;MACLN,oBAAoB,CAACY,GAAG,CAACN,IAAI,CAAC;IAChC;EACF,CAAC;EAED;EACAO,UAAUA,CAACP,IAAc,EAAQ;IAC/BN,oBAAoB,CAACc,MAAM,CAACR,IAAI,CAAC;IACjC,IAAIP,QAAQ,EAAE;MACZA,QAAQ,CAACgB,eAAe,CAACT,IAAI,CAAC;MAC9B,IAAIP,QAAQ,CAACiB,qBAAqB,CAAC,CAAC,KAAKV,IAAI,EAAE;QAC7CP,QAAQ,CAACkB,SAAS,CAACX,IAAI,CAAC;MAC1B;IACF,CAAC,MAAM,IAAIR,SAAS,CAACoB,KAAK,CAACF,qBAAqB,CAAC,CAAC,KAAKV,IAAI,EAAE;MAC3DR,SAAS,CAACoB,KAAK,CAACC,aAAa,CAACb,IAAa,CAAC;IAC9C;EACF,CAAC;EAED;EACAc,OAAOA,CAACd,IAAqB,EAAQ;IACnC,IAAIA,IAAI,IAAI,IAAI,EAAE;IAClB,IAAIP,QAAQ,EAAE;MACZA,QAAQ,CAACsB,UAAU,CAACf,IAAI,CAAC;IAC3B,CAAC,MAAM;MACL;MACAR,SAAS,CAACoB,KAAK,CAACI,cAAc,CAAChB,IAAa,CAAC;IAC/C;EACF,CAAC;EAED;EACAiB,OAAOA,CAACjB,IAAqB,EAAQ;IACnC,IAAIA,IAAI,IAAI,IAAI,EAAE;IAClB,IAAIP,QAAQ,EAAE;MACZA,QAAQ,CAACkB,SAAS,CAACX,IAAI,CAAC;IAC1B,CAAC,MAAM;MACL;MACAR,SAAS,CAACoB,KAAK,CAACC,aAAa,CAACb,IAAa,CAAC;IAC9C;EACF;AACF,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// icons.ts
|
|
4
|
+
//
|
|
5
|
+
// Icon props shared by SegmentedControl, Button and ButtonGroup. Icons are
|
|
6
|
+
// resolved on the JS side so native only deals with flat strings.
|
|
7
|
+
import { Image, Platform } from 'react-native';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* A single icon source.
|
|
11
|
+
*
|
|
12
|
+
* - `string`: shorthand for an SF Symbol name on iOS and a drawable resource
|
|
13
|
+
* name on Android.
|
|
14
|
+
* - `{ type: 'sfSymbol' }`: an SF Symbol. iOS only; ignored on Android.
|
|
15
|
+
* - `{ type: 'drawable' }`: a drawable from the app's `res/drawable`.
|
|
16
|
+
* Android only; ignored on iOS.
|
|
17
|
+
* - `{ type: 'image' }`: an image asset (`require('./icon.png')`) or a
|
|
18
|
+
* `{ uri }` source. Works on both platforms. Images are drawn as tinted
|
|
19
|
+
* templates unless `tinted` is `false`.
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* An icon: a single source used on both platforms, or a per-platform pair so
|
|
24
|
+
* callers don't need to branch on `Platform.OS`.
|
|
25
|
+
*/
|
|
26
|
+
|
|
27
|
+
/** The flat icon fields the native specs expect. */
|
|
28
|
+
|
|
29
|
+
export const NO_ICON = {
|
|
30
|
+
iconType: '',
|
|
31
|
+
iconName: '',
|
|
32
|
+
iconUri: '',
|
|
33
|
+
iconScale: 1,
|
|
34
|
+
iconTinted: 'true'
|
|
35
|
+
};
|
|
36
|
+
function pickIconSource(icon) {
|
|
37
|
+
if (icon === undefined || typeof icon === 'string' || 'type' in icon) {
|
|
38
|
+
return icon;
|
|
39
|
+
}
|
|
40
|
+
return Platform.OS === 'ios' ? icon.ios : icon.android;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Flattens the public icon shape into the strings native expects, dropping
|
|
45
|
+
* sources that don't apply to the current platform.
|
|
46
|
+
*/
|
|
47
|
+
export function resolveIcon(icon) {
|
|
48
|
+
const source = pickIconSource(icon);
|
|
49
|
+
if (source === undefined) return NO_ICON;
|
|
50
|
+
if (typeof source === 'string') {
|
|
51
|
+
if (source.length === 0) return NO_ICON;
|
|
52
|
+
return {
|
|
53
|
+
...NO_ICON,
|
|
54
|
+
iconType: Platform.OS === 'ios' ? 'sfSymbol' : 'drawable',
|
|
55
|
+
iconName: source
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
switch (source.type) {
|
|
59
|
+
case 'sfSymbol':
|
|
60
|
+
return Platform.OS === 'ios' ? {
|
|
61
|
+
...NO_ICON,
|
|
62
|
+
iconType: 'sfSymbol',
|
|
63
|
+
iconName: source.name
|
|
64
|
+
} : NO_ICON;
|
|
65
|
+
case 'drawable':
|
|
66
|
+
return Platform.OS === 'android' ? {
|
|
67
|
+
...NO_ICON,
|
|
68
|
+
iconType: 'drawable',
|
|
69
|
+
iconName: source.name
|
|
70
|
+
} : NO_ICON;
|
|
71
|
+
case 'image':
|
|
72
|
+
{
|
|
73
|
+
const resolved = Image.resolveAssetSource(source.source);
|
|
74
|
+
if (!resolved?.uri) return NO_ICON;
|
|
75
|
+
return {
|
|
76
|
+
iconType: 'image',
|
|
77
|
+
iconName: '',
|
|
78
|
+
iconUri: resolved.uri,
|
|
79
|
+
iconScale: resolved.scale > 0 ? resolved.scale : 1,
|
|
80
|
+
iconTinted: source.tinted === false ? 'false' : 'true'
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
default:
|
|
84
|
+
return NO_ICON;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=icons.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Image","Platform","NO_ICON","iconType","iconName","iconUri","iconScale","iconTinted","pickIconSource","icon","undefined","OS","ios","android","resolveIcon","source","length","type","name","resolved","resolveAssetSource","uri","scale","tinted"],"sourceRoot":"../../src","sources":["icons.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA,SACEA,KAAK,EACLC,QAAQ,QAGH,cAAc;;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAWA;AACA;AACA;AACA;;AAQA;;AAcA,OAAO,MAAMC,OAAyB,GAAG;EACvCC,QAAQ,EAAE,EAAE;EACZC,QAAQ,EAAE,EAAE;EACZC,OAAO,EAAE,EAAE;EACXC,SAAS,EAAE,CAAC;EACZC,UAAU,EAAE;AACd,CAAC;AAED,SAASC,cAAcA,CACrBC,IAA8B,EACE;EAChC,IAAIA,IAAI,KAAKC,SAAS,IAAI,OAAOD,IAAI,KAAK,QAAQ,IAAI,MAAM,IAAIA,IAAI,EAAE;IACpE,OAAOA,IAAI;EACb;EACA,OAAOR,QAAQ,CAACU,EAAE,KAAK,KAAK,GAAGF,IAAI,CAACG,GAAG,GAAGH,IAAI,CAACI,OAAO;AACxD;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASC,WAAWA,CAACL,IAA8B,EAAoB;EAC5E,MAAMM,MAAM,GAAGP,cAAc,CAACC,IAAI,CAAC;EACnC,IAAIM,MAAM,KAAKL,SAAS,EAAE,OAAOR,OAAO;EAExC,IAAI,OAAOa,MAAM,KAAK,QAAQ,EAAE;IAC9B,IAAIA,MAAM,CAACC,MAAM,KAAK,CAAC,EAAE,OAAOd,OAAO;IACvC,OAAO;MACL,GAAGA,OAAO;MACVC,QAAQ,EAAEF,QAAQ,CAACU,EAAE,KAAK,KAAK,GAAG,UAAU,GAAG,UAAU;MACzDP,QAAQ,EAAEW;IACZ,CAAC;EACH;EAEA,QAAQA,MAAM,CAACE,IAAI;IACjB,KAAK,UAAU;MACb,OAAOhB,QAAQ,CAACU,EAAE,KAAK,KAAK,GACxB;QAAE,GAAGT,OAAO;QAAEC,QAAQ,EAAE,UAAU;QAAEC,QAAQ,EAAEW,MAAM,CAACG;MAAK,CAAC,GAC3DhB,OAAO;IACb,KAAK,UAAU;MACb,OAAOD,QAAQ,CAACU,EAAE,KAAK,SAAS,GAC5B;QAAE,GAAGT,OAAO;QAAEC,QAAQ,EAAE,UAAU;QAAEC,QAAQ,EAAEW,MAAM,CAACG;MAAK,CAAC,GAC3DhB,OAAO;IACb,KAAK,OAAO;MAAE;QACZ,MAAMiB,QAAQ,GAAGnB,KAAK,CAACoB,kBAAkB,CAACL,MAAM,CAACA,MAAM,CAAC;QACxD,IAAI,CAACI,QAAQ,EAAEE,GAAG,EAAE,OAAOnB,OAAO;QAClC,OAAO;UACLC,QAAQ,EAAE,OAAO;UACjBC,QAAQ,EAAE,EAAE;UACZC,OAAO,EAAEc,QAAQ,CAACE,GAAG;UACrBf,SAAS,EAAEa,QAAQ,CAACG,KAAK,GAAG,CAAC,GAAGH,QAAQ,CAACG,KAAK,GAAG,CAAC;UAClDf,UAAU,EAAEQ,MAAM,CAACQ,MAAM,KAAK,KAAK,GAAG,OAAO,GAAG;QAClD,CAAC;MACH;IACA;MACE,OAAOrB,OAAO;EAClB;AACF","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -4,7 +4,13 @@ export * from "./DatePicker.js";
|
|
|
4
4
|
export * from "./SelectionMenu.js";
|
|
5
5
|
export * from "./ContextMenu.js";
|
|
6
6
|
export * from "./SegmentedControl.js";
|
|
7
|
+
export * from "./Button.js";
|
|
8
|
+
export * from "./ButtonGroup.js";
|
|
9
|
+
export * from "./FloatingToolbar.js";
|
|
7
10
|
export * from "./LiquidGlass.js";
|
|
11
|
+
export * from "./TextField.js";
|
|
12
|
+
export * from "./icons.js";
|
|
13
|
+
export * from "./labelStyle.js";
|
|
8
14
|
export * from "./sharedTypes.js";
|
|
9
15
|
export * from "./NativeTheme.js";
|
|
10
16
|
//# sourceMappingURL=index.js.map
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,cAAc,iBAAc;AAC5B,cAAc,oBAAiB;AAC/B,cAAc,kBAAe;AAC7B,cAAc,uBAAoB;AAClC,cAAc,kBAAe;AAC7B,cAAc,kBAAe;AAC7B,cAAc,kBAAe","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,cAAc,iBAAc;AAC5B,cAAc,oBAAiB;AAC/B,cAAc,kBAAe;AAC7B,cAAc,uBAAoB;AAClC,cAAc,aAAU;AACxB,cAAc,kBAAe;AAC7B,cAAc,sBAAmB;AACjC,cAAc,kBAAe;AAC7B,cAAc,gBAAa;AAC3B,cAAc,YAAS;AACvB,cAAc,iBAAc;AAC5B,cAAc,kBAAe;AAC7B,cAAc,kBAAe","ignoreList":[]}
|
package/lib/module/index.web.js
CHANGED
|
@@ -41,6 +41,20 @@ export const ContextMenu = ({
|
|
|
41
41
|
|
|
42
42
|
export const SegmentedControl = _props => null;
|
|
43
43
|
|
|
44
|
+
// ============================================================================
|
|
45
|
+
// Button, ButtonGroup, FloatingToolbar
|
|
46
|
+
// ============================================================================
|
|
47
|
+
|
|
48
|
+
export const Button = _props => null;
|
|
49
|
+
export const ButtonGroup = _props => null;
|
|
50
|
+
export const FloatingToolbar = ({
|
|
51
|
+
children
|
|
52
|
+
}) => {
|
|
53
|
+
return /*#__PURE__*/_jsx(_Fragment, {
|
|
54
|
+
children: children
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
|
|
44
58
|
// ============================================================================
|
|
45
59
|
// LiquidGlass
|
|
46
60
|
// ============================================================================
|
|
@@ -54,6 +68,20 @@ export const LiquidGlass = ({
|
|
|
54
68
|
};
|
|
55
69
|
export const isLiquidGlassSupported = false;
|
|
56
70
|
|
|
71
|
+
// ============================================================================
|
|
72
|
+
// TextField
|
|
73
|
+
// ============================================================================
|
|
74
|
+
|
|
75
|
+
export const TextField = /*#__PURE__*/React.forwardRef(function TextFieldComponent(_props, ref) {
|
|
76
|
+
React.useImperativeHandle(ref, () => ({
|
|
77
|
+
focus: () => {},
|
|
78
|
+
blur: () => {},
|
|
79
|
+
clear: () => {},
|
|
80
|
+
isFocused: () => false
|
|
81
|
+
}));
|
|
82
|
+
return null;
|
|
83
|
+
});
|
|
84
|
+
|
|
57
85
|
// ============================================================================
|
|
58
86
|
// Native theme
|
|
59
87
|
// ============================================================================
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Fragment","_Fragment","jsx","_jsx","DatePicker","_props","SelectionMenu","ContextMenu","children","SegmentedControl","LiquidGlass","isLiquidGlassSupported","setNativeTheme","_theme","useNativeTheme"],"sourceRoot":"../../src","sources":["index.web.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,MAAM,OAAO;;
|
|
1
|
+
{"version":3,"names":["React","Fragment","_Fragment","jsx","_jsx","DatePicker","_props","SelectionMenu","ContextMenu","children","SegmentedControl","Button","ButtonGroup","FloatingToolbar","LiquidGlass","isLiquidGlassSupported","TextField","forwardRef","TextFieldComponent","ref","useImperativeHandle","focus","blur","clear","isFocused","setNativeTheme","_theme","useNativeTheme"],"sourceRoot":"../../src","sources":["index.web.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,MAAM,OAAO;;AAMzB;AACA;AACA;;AAMA;AACA;AACA;AAAA,SAAAC,QAAA,IAAAC,SAAA,EAAAC,GAAA,IAAAC,IAAA;AAoBA,OAAO,MAAMC,UAAU,GACrBC,MAAuB,IACO,IAAI;;AAEpC;AACA;AACA;;AAoBA,OAAO,MAAMC,aAAa,GACxBD,MAA0B,IACI,IAAI;;AAEpC;AACA;AACA;;AAgCA,OAAO,MAAME,WAAW,GAAGA,CAAC;EAC1BC;AACgB,CAAC,KAAgC;EACjD,oBAAOL,IAAA,CAAAF,SAAA;IAAAO,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB,CAAC;;AAED;AACA;AACA;;AAmDA,OAAO,MAAMC,gBAAgB,GAC3BJ,MAA6B,IACC,IAAI;;AAEpC;AACA;AACA;;AA6BA,OAAO,MAAMK,MAAM,GAAIL,MAAmB,IAAgC,IAAI;AAgC9E,OAAO,MAAMM,WAAW,GACtBN,MAAwB,IACM,IAAI;AAapC,OAAO,MAAMO,eAAe,GAAGA,CAAC;EAC9BJ;AACoB,CAAC,KAAgC;EACrD,oBAAOL,IAAA,CAAAF,SAAA;IAAAO,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB,CAAC;;AAED;AACA;AACA;;AASA,OAAO,MAAMK,WAAW,GAAGA,CAAC;EAC1BL;AACgB,CAAC,KAAgC;EACjD,oBAAOL,IAAA,CAAAF,SAAA;IAAAO,QAAA,EAAGA;EAAQ,CAAG,CAAC;AACxB,CAAC;AAED,OAAO,MAAMM,sBAAsB,GAAG,KAAK;;AAE3C;AACA;AACA;;AA8FA,OAAO,MAAMC,SAAS,gBAAGhB,KAAK,CAACiB,UAAU,CACvC,SAASC,kBAAkBA,CAACZ,MAAM,EAAEa,GAAG,EAA6B;EAClEnB,KAAK,CAACoB,mBAAmB,CAACD,GAAG,EAAE,OAAO;IACpCE,KAAK,EAAEA,CAAA,KAAM,CAAC,CAAC;IACfC,IAAI,EAAEA,CAAA,KAAM,CAAC,CAAC;IACdC,KAAK,EAAEA,CAAA,KAAM,CAAC,CAAC;IACfC,SAAS,EAAEA,CAAA,KAAM;EACnB,CAAC,CAAC,CAAC;EACH,OAAO,IAAI;AACb,CACF,CAAC;;AAED;AACA;AACA;;AAQA,OAAO,MAAMC,cAAc,GAAIC,MAA0B,IAAW,CAAC,CAAC;AAEtE,OAAO,MAAMC,cAAc,GACzBD,MAAsC,IAC7B,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// labelStyle.ts
|
|
4
|
+
//
|
|
5
|
+
// Label font props shared by SegmentedControl, Button and ButtonGroup.
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Font for a control's labels. Each field falls back to the platform default.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/** The flat font fields the native specs expect; empty / 0 = default. */
|
|
12
|
+
|
|
13
|
+
/** Normalizes a label font for native; `undefined` keeps the platform font. */
|
|
14
|
+
export function normalizeLabelStyle(labelStyle) {
|
|
15
|
+
if (!labelStyle) return undefined;
|
|
16
|
+
return {
|
|
17
|
+
fontFamily: labelStyle.fontFamily ?? '',
|
|
18
|
+
fontSize: labelStyle.fontSize ?? 0,
|
|
19
|
+
fontWeight: labelStyle.fontWeight === undefined ? '' : String(labelStyle.fontWeight),
|
|
20
|
+
fontStyle: labelStyle.fontStyle ?? ''
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=labelStyle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["normalizeLabelStyle","labelStyle","undefined","fontFamily","fontSize","fontWeight","String","fontStyle"],"sourceRoot":"../../src","sources":["labelStyle.ts"],"mappings":";;AAAA;AACA;AACA;;AAGA;AACA;AACA;;AAQA;;AAQA;AACA,OAAO,SAASA,mBAAmBA,CACjCC,UAAkC,EACJ;EAC9B,IAAI,CAACA,UAAU,EAAE,OAAOC,SAAS;EACjC,OAAO;IACLC,UAAU,EAAEF,UAAU,CAACE,UAAU,IAAI,EAAE;IACvCC,QAAQ,EAAEH,UAAU,CAACG,QAAQ,IAAI,CAAC;IAClCC,UAAU,EACRJ,UAAU,CAACI,UAAU,KAAKH,SAAS,GAAG,EAAE,GAAGI,MAAM,CAACL,UAAU,CAACI,UAAU,CAAC;IAC1EE,SAAS,EAAEN,UAAU,CAACM,SAAS,IAAI;EACrC,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":[],"sourceRoot":"../../src","sources":["reactNativeInternals.d.ts"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sidebars.d.ts","sourceRoot":"","sources":["../../../../docs/sidebars.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,QAAA,MAAM,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"sidebars.d.ts","sourceRoot":"","sources":["../../../../docs/sidebars.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAEtE,QAAA,MAAM,QAAQ,EAAE,cA4Bf,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ColorValue, ViewProps } from 'react-native';
|
|
3
|
+
import { type PlatformIcon } from './icons';
|
|
4
|
+
import { type LabelStyle } from './labelStyle';
|
|
5
|
+
import type { AndroidMaterialStyle } from './sharedTypes';
|
|
6
|
+
/**
|
|
7
|
+
* Emphasis of the button, from highest to lowest.
|
|
8
|
+
*
|
|
9
|
+
* | Variant | Android (Material 3 Expressive) | iOS (`UIButton.Configuration`) |
|
|
10
|
+
* | ---------- | ------------------------------- | ------------------------------ |
|
|
11
|
+
* | `filled` | Filled button | `.filled()` |
|
|
12
|
+
* | `tonal` | Filled tonal button | `.tinted()` |
|
|
13
|
+
* | `outlined` | Outlined button | `.bordered()` |
|
|
14
|
+
* | `text` | Text button | `.plain()` |
|
|
15
|
+
* | `elevated` | Elevated button | `.gray()` |
|
|
16
|
+
*/
|
|
17
|
+
export type ButtonVariant = 'filled' | 'tonal' | 'outlined' | 'text' | 'elevated';
|
|
18
|
+
/**
|
|
19
|
+
* Button size. Material 3 Expressive defines five sizes; iOS maps them onto
|
|
20
|
+
* `UIButton.Configuration.Size` (`xsmall` → mini, `xlarge` → large).
|
|
21
|
+
*/
|
|
22
|
+
export type ButtonSize = 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge';
|
|
23
|
+
/**
|
|
24
|
+
* Corner shape. `round` is a pill; `square` keeps rounded corners. Unset
|
|
25
|
+
* means the platform default (round on Android, dynamic on iOS).
|
|
26
|
+
*/
|
|
27
|
+
export type ButtonShape = 'round' | 'square';
|
|
28
|
+
export interface ButtonProps extends ViewProps {
|
|
29
|
+
/** Button text. Omit for an icon-only button. */
|
|
30
|
+
label?: string;
|
|
31
|
+
/** Icon shown before the label, or alone when there is no label. */
|
|
32
|
+
icon?: PlatformIcon;
|
|
33
|
+
/** Emphasis. Default: `'filled'`. See {@link ButtonVariant}. */
|
|
34
|
+
variant?: ButtonVariant;
|
|
35
|
+
/** Size. Default: `'small'`, the Material 3 default. */
|
|
36
|
+
size?: ButtonSize;
|
|
37
|
+
/** Corner shape. Default: platform default. */
|
|
38
|
+
shape?: ButtonShape;
|
|
39
|
+
/** Whether the button is disabled. */
|
|
40
|
+
disabled?: boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Container (background) color.
|
|
43
|
+
* Android: `backgroundTint`. iOS: `baseBackgroundColor`.
|
|
44
|
+
*/
|
|
45
|
+
color?: ColorValue;
|
|
46
|
+
/**
|
|
47
|
+
* Label and icon color.
|
|
48
|
+
* Android: text color and `iconTint`. iOS: `baseForegroundColor`.
|
|
49
|
+
*/
|
|
50
|
+
tintColor?: ColorValue;
|
|
51
|
+
/** Label font. */
|
|
52
|
+
labelStyle?: LabelStyle;
|
|
53
|
+
/** Screen-reader label. Defaults to `label`. */
|
|
54
|
+
accessibilityLabel?: string;
|
|
55
|
+
/** Called when the button is pressed. */
|
|
56
|
+
onPress?: () => void;
|
|
57
|
+
/**
|
|
58
|
+
* Android-specific configuration
|
|
59
|
+
*/
|
|
60
|
+
android?: {
|
|
61
|
+
/** Ripple color shown while pressing. */
|
|
62
|
+
rippleColor?: ColorValue;
|
|
63
|
+
/** Outline color (outlined variant). */
|
|
64
|
+
strokeColor?: ColorValue;
|
|
65
|
+
/**
|
|
66
|
+
* Material style: Material 3 Expressive (default), or the classic
|
|
67
|
+
* Material 3 button, which has one size and shape (`size` and `shape`
|
|
68
|
+
* are ignored).
|
|
69
|
+
*/
|
|
70
|
+
material?: AndroidMaterialStyle;
|
|
71
|
+
};
|
|
72
|
+
/** Test identifier */
|
|
73
|
+
testID?: string;
|
|
74
|
+
}
|
|
75
|
+
export declare function Button(props: ButtonProps): React.ReactElement;
|
|
76
|
+
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../../src/Button.tsx"],"names":[],"mappings":"AACA,OAAO,KAA+B,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG1D,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D;;;;;;;;;;GAUG;AACH,MAAM,MAAM,aAAa,GACvB,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;AAExD;;;GAGG;AACH,MAAM,MAAM,UAAU,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE5E;;;GAGG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE7C,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,oEAAoE;IACpE,IAAI,CAAC,EAAE,YAAY,CAAC;IAEpB,gEAAgE;IAChE,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB,wDAAwD;IACxD,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB,+CAA+C;IAC/C,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB;;;OAGG;IACH,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,UAAU,CAAC;IAEvB,kBAAkB;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,yCAAyC;IACzC,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IAErB;;OAEG;IACH,OAAO,CAAC,EAAE;QACR,yCAAyC;QACzC,WAAW,CAAC,EAAE,UAAU,CAAC;QAEzB,wCAAwC;QACxC,WAAW,CAAC,EAAE,UAAU,CAAC;QAEzB;;;;WAIG;QACH,QAAQ,CAAC,EAAE,oBAAoB,CAAC;KACjC,CAAC;IAEF,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,WAAW,GAAG,KAAK,CAAC,YAAY,CA8C7D"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import type { ColorValue, ViewProps } from 'react-native';
|
|
3
|
+
import type { ButtonShape, ButtonSize, ButtonVariant } from './Button';
|
|
4
|
+
import { type PlatformIcon } from './icons';
|
|
5
|
+
import { type LabelStyle } from './labelStyle';
|
|
6
|
+
import type { AndroidMaterialStyle } from './sharedTypes';
|
|
7
|
+
/**
|
|
8
|
+
* Selection behavior of the group.
|
|
9
|
+
*
|
|
10
|
+
* - `none` (default): the buttons are plain actions.
|
|
11
|
+
* - `single`: at most one button is selected at a time.
|
|
12
|
+
* - `multiple`: any number of buttons can be selected.
|
|
13
|
+
*/
|
|
14
|
+
export type ButtonGroupSelection = 'none' | 'single' | 'multiple';
|
|
15
|
+
/** What happens to buttons that don't fit the group's width (Android). */
|
|
16
|
+
export type ButtonGroupOverflow = 'none' | 'menu' | 'wrap';
|
|
17
|
+
export interface ButtonGroupButtonProps {
|
|
18
|
+
/** Button text. Omit for an icon-only button. */
|
|
19
|
+
label?: string;
|
|
20
|
+
/** Unique value identifier for the button */
|
|
21
|
+
value: string;
|
|
22
|
+
/** Whether this specific button is disabled */
|
|
23
|
+
disabled?: boolean;
|
|
24
|
+
/** Optional icon. See {@link PlatformIcon}. */
|
|
25
|
+
icon?: PlatformIcon;
|
|
26
|
+
/** Screen-reader label. Defaults to `label`. */
|
|
27
|
+
accessibilityLabel?: string;
|
|
28
|
+
}
|
|
29
|
+
export interface ButtonGroupProps extends ViewProps {
|
|
30
|
+
/** Buttons to display */
|
|
31
|
+
buttons: readonly ButtonGroupButtonProps[];
|
|
32
|
+
/** Emphasis of every button. Default: `'outlined'`. */
|
|
33
|
+
variant?: ButtonVariant;
|
|
34
|
+
/** Size of every button. Default: `'small'`. */
|
|
35
|
+
size?: ButtonSize;
|
|
36
|
+
/** Corner shape of every button. Default: platform default. */
|
|
37
|
+
shape?: ButtonShape;
|
|
38
|
+
/**
|
|
39
|
+
* Connected group: the buttons share one outline with small inner corners
|
|
40
|
+
* (Material 3 "connected button group"). Default: `true` when `selection`
|
|
41
|
+
* is `'single'` or `'multiple'`, `false` otherwise.
|
|
42
|
+
*/
|
|
43
|
+
connected?: boolean;
|
|
44
|
+
/** Gap between buttons in points. Default: the platform's group spacing. */
|
|
45
|
+
spacing?: number;
|
|
46
|
+
/** Selection behavior. Default: `'none'`. See {@link ButtonGroupSelection}. */
|
|
47
|
+
selection?: ButtonGroupSelection;
|
|
48
|
+
/**
|
|
49
|
+
* Values of the selected buttons (controlled). Only the first value is
|
|
50
|
+
* used with `selection: 'single'`.
|
|
51
|
+
*/
|
|
52
|
+
selectedValues?: readonly string[];
|
|
53
|
+
/**
|
|
54
|
+
* Whether at least one button must stay selected. Default: `true` for
|
|
55
|
+
* `single`, `false` for `multiple`.
|
|
56
|
+
*/
|
|
57
|
+
selectionRequired?: boolean;
|
|
58
|
+
/** Whether the entire group is disabled */
|
|
59
|
+
disabled?: boolean;
|
|
60
|
+
/** Container (background) color of the buttons. */
|
|
61
|
+
color?: ColorValue;
|
|
62
|
+
/** Label and icon color of the buttons. */
|
|
63
|
+
tintColor?: ColorValue;
|
|
64
|
+
/** Label font. */
|
|
65
|
+
labelStyle?: LabelStyle;
|
|
66
|
+
/**
|
|
67
|
+
* Called when a button is pressed, in every selection mode.
|
|
68
|
+
* @param value - The button's value
|
|
69
|
+
* @param index - The button's index
|
|
70
|
+
*/
|
|
71
|
+
onPress?: (value: string, index: number) => void;
|
|
72
|
+
/**
|
|
73
|
+
* Called when the selection changes (`single` / `multiple` selection).
|
|
74
|
+
* @param values - Values of the selected buttons, in button order
|
|
75
|
+
*/
|
|
76
|
+
onSelectionChange?: (values: string[]) => void;
|
|
77
|
+
/**
|
|
78
|
+
* Android-specific configuration
|
|
79
|
+
*/
|
|
80
|
+
android?: {
|
|
81
|
+
/**
|
|
82
|
+
* What happens to buttons that don't fit: `'none'` (clipped), `'menu'`
|
|
83
|
+
* (moved into an overflow menu) or `'wrap'` (wrapped onto more rows).
|
|
84
|
+
* Default: `'none'`.
|
|
85
|
+
*/
|
|
86
|
+
overflow?: ButtonGroupOverflow;
|
|
87
|
+
/** Ripple color shown while pressing a button. */
|
|
88
|
+
rippleColor?: ColorValue;
|
|
89
|
+
/** Outline color (outlined variant). */
|
|
90
|
+
strokeColor?: ColorValue;
|
|
91
|
+
/**
|
|
92
|
+
* Material style: Material 3 Expressive (default), or the classic
|
|
93
|
+
* Material 3 group, which has one size and shape (`size` and `shape`
|
|
94
|
+
* are ignored).
|
|
95
|
+
*/
|
|
96
|
+
material?: AndroidMaterialStyle;
|
|
97
|
+
};
|
|
98
|
+
/** Test identifier */
|
|
99
|
+
testID?: string;
|
|
100
|
+
}
|
|
101
|
+
export declare function ButtonGroup(props: ButtonGroupProps): React.ReactElement;
|
|
102
|
+
//# sourceMappingURL=ButtonGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../../../../src/ButtonGroup.tsx"],"names":[],"mappings":"AACA,OAAO,KAA+B,MAAM,OAAO,CAAC;AACpD,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAE1D,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAMvE,OAAO,EAAe,KAAK,YAAY,EAAE,MAAM,SAAS,CAAC;AACzD,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AACpE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,MAAM,GAAG,QAAQ,GAAG,UAAU,CAAC;AAElE,0EAA0E;AAC1E,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;AAE3D,MAAM,WAAW,sBAAsB;IACrC,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,6CAA6C;IAC7C,KAAK,EAAE,MAAM,CAAC;IAEd,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,+CAA+C;IAC/C,IAAI,CAAC,EAAE,YAAY,CAAC;IAEpB,gDAAgD;IAChD,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,yBAAyB;IACzB,OAAO,EAAE,SAAS,sBAAsB,EAAE,CAAC;IAE3C,uDAAuD;IACvD,OAAO,CAAC,EAAE,aAAa,CAAC;IAExB,gDAAgD;IAChD,IAAI,CAAC,EAAE,UAAU,CAAC;IAElB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,WAAW,CAAC;IAEpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,+EAA+E;IAC/E,SAAS,CAAC,EAAE,oBAAoB,CAAC;IAEjC;;;OAGG;IACH,cAAc,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAEnC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAE5B,2CAA2C;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;IAEnB,mDAAmD;IACnD,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,UAAU,CAAC;IAEvB,kBAAkB;IAClB,UAAU,CAAC,EAAE,UAAU,CAAC;IAExB;;;;OAIG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAEjD;;;OAGG;IACH,iBAAiB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAE/C;;OAEG;IACH,OAAO,CAAC,EAAE;QACR;;;;WAIG;QACH,QAAQ,CAAC,EAAE,mBAAmB,CAAC;QAE/B,kDAAkD;QAClD,WAAW,CAAC,EAAE,UAAU,CAAC;QAEzB,wCAAwC;QACxC,WAAW,CAAC,EAAE,UAAU,CAAC;QAEzB;;;;WAIG;QACH,QAAQ,CAAC,EAAE,oBAAoB,CAAC;KACjC,CAAC;IAEF,sBAAsB;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,KAAK,CAAC,YAAY,CAiGvE"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import type { ColorValue, HostComponent, ViewProps } from 'react-native';
|
|
2
|
+
import type { BubblingEventHandler, Double, Int32 } from './codegenTypes';
|
|
3
|
+
/**
|
|
4
|
+
* A single button in the group. Icons are pre-resolved on the JS side (see
|
|
5
|
+
* icons.ts) so native only deals with flat strings.
|
|
6
|
+
*/
|
|
7
|
+
export type ButtonGroupButton = Readonly<{
|
|
8
|
+
label: string;
|
|
9
|
+
value: string;
|
|
10
|
+
disabled: string;
|
|
11
|
+
iconType: string;
|
|
12
|
+
iconName: string;
|
|
13
|
+
iconUri: string;
|
|
14
|
+
iconScale: Double;
|
|
15
|
+
iconTinted: string;
|
|
16
|
+
accessibilityLabel: string;
|
|
17
|
+
}>;
|
|
18
|
+
/**
|
|
19
|
+
* Event emitted when a button is pressed.
|
|
20
|
+
*/
|
|
21
|
+
export type ButtonGroupPressEvent = Readonly<{
|
|
22
|
+
index: Int32;
|
|
23
|
+
value: string;
|
|
24
|
+
}>;
|
|
25
|
+
/**
|
|
26
|
+
* Event emitted when the selection changes (single / multiple selection).
|
|
27
|
+
*/
|
|
28
|
+
export type ButtonGroupSelectionEvent = Readonly<{
|
|
29
|
+
/** Values of the selected buttons, in button order. */
|
|
30
|
+
values: string[];
|
|
31
|
+
}>;
|
|
32
|
+
/**
|
|
33
|
+
* Label font. Empty strings / 0 mean "platform default".
|
|
34
|
+
*/
|
|
35
|
+
export type ButtonGroupLabelStyleProps = Readonly<{
|
|
36
|
+
fontFamily?: string;
|
|
37
|
+
fontSize?: Double;
|
|
38
|
+
fontWeight?: string;
|
|
39
|
+
fontStyle?: string;
|
|
40
|
+
}>;
|
|
41
|
+
/**
|
|
42
|
+
* Android-specific configuration.
|
|
43
|
+
*/
|
|
44
|
+
export type ButtonGroupAndroidProps = Readonly<{
|
|
45
|
+
/** What happens to buttons that don't fit: 'none' | 'menu' | 'wrap' */
|
|
46
|
+
overflow?: string;
|
|
47
|
+
/** Material style: 'm3' | 'expressive' */
|
|
48
|
+
material?: string;
|
|
49
|
+
}>;
|
|
50
|
+
export interface ButtonGroupNativeProps extends ViewProps {
|
|
51
|
+
/** Buttons to display. */
|
|
52
|
+
buttons: ReadonlyArray<ButtonGroupButton>;
|
|
53
|
+
/** 'filled' | 'tonal' | 'outlined' | 'text' | 'elevated' */
|
|
54
|
+
variant?: string;
|
|
55
|
+
/** 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' */
|
|
56
|
+
size?: string;
|
|
57
|
+
/** '' (platform default) | 'round' | 'square' */
|
|
58
|
+
shape?: string;
|
|
59
|
+
/** 'true' | 'false': connected group (shared outline, small inner corners) */
|
|
60
|
+
connected?: string;
|
|
61
|
+
/** Gap between buttons in points; negative means the platform default. */
|
|
62
|
+
spacing?: Double;
|
|
63
|
+
/** 'none' | 'single' | 'multiple' */
|
|
64
|
+
selection?: string;
|
|
65
|
+
/** Values of the selected buttons (single / multiple selection). */
|
|
66
|
+
selectedValues?: ReadonlyArray<string>;
|
|
67
|
+
/** 'true' | 'false': whether at least one button must stay selected */
|
|
68
|
+
selectionRequired?: string;
|
|
69
|
+
/** 'enabled' | 'disabled' */
|
|
70
|
+
interactivity?: string;
|
|
71
|
+
/** Container (background) color of the buttons. */
|
|
72
|
+
color?: ColorValue;
|
|
73
|
+
/** Label and icon color of the buttons. */
|
|
74
|
+
foregroundColor?: ColorValue;
|
|
75
|
+
/** Android: ripple color shown while pressing a button. */
|
|
76
|
+
androidRippleColor?: ColorValue;
|
|
77
|
+
/** Android: outline color (outlined variant). */
|
|
78
|
+
androidStrokeColor?: ColorValue;
|
|
79
|
+
/** Label font. */
|
|
80
|
+
labelStyle?: ButtonGroupLabelStyleProps;
|
|
81
|
+
/** Fired when a button is pressed. */
|
|
82
|
+
onButtonPress?: BubblingEventHandler<ButtonGroupPressEvent>;
|
|
83
|
+
/**
|
|
84
|
+
* Fired when the selection changes. Not `onSelectionChange`: React Native's
|
|
85
|
+
* TextInput registers `topSelectionChange` as a direct event, and an event
|
|
86
|
+
* name can't be both direct and bubbling.
|
|
87
|
+
*/
|
|
88
|
+
onGroupSelectionChange?: BubblingEventHandler<ButtonGroupSelectionEvent>;
|
|
89
|
+
android?: ButtonGroupAndroidProps;
|
|
90
|
+
}
|
|
91
|
+
declare const _default: HostComponent<ButtonGroupNativeProps>;
|
|
92
|
+
export default _default;
|
|
93
|
+
//# sourceMappingURL=ButtonGroupNativeComponent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonGroupNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/ButtonGroupNativeComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE1E;;;GAGG;AACH,MAAM,MAAM,iBAAiB,GAAG,QAAQ,CAAC;IACvC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACf,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC;IAC/C,uDAAuD;IAEvD,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,0BAA0B,GAAG,QAAQ,CAAC;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,QAAQ,CAAC;IAC7C,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,0CAA0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC,CAAC;AAEH,MAAM,WAAW,sBAAuB,SAAQ,SAAS;IACvD,0BAA0B;IAC1B,OAAO,EAAE,aAAa,CAAC,iBAAiB,CAAC,CAAC;IAE1C,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,8EAA8E;IAC9E,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,qCAAqC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB,oEAAoE;IACpE,cAAc,CAAC,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC;IAEvC,uEAAuE;IACvE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAE3B,6BAA6B;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,mDAAmD;IACnD,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB,2CAA2C;IAC3C,eAAe,CAAC,EAAE,UAAU,CAAC;IAE7B,2DAA2D;IAC3D,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAEhC,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAEhC,kBAAkB;IAClB,UAAU,CAAC,EAAE,0BAA0B,CAAC;IAExC,sCAAsC;IACtC,aAAa,CAAC,EAAE,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;IAE5D;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,oBAAoB,CAAC,yBAAyB,CAAC,CAAC;IAEzE,OAAO,CAAC,EAAE,uBAAuB,CAAC;CACnC;wBAII,aAAa,CAAC,sBAAsB,CAAC;AAF1C,wBAE2C"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { ColorValue, HostComponent, ViewProps } from 'react-native';
|
|
2
|
+
import type { BubblingEventHandler, Double } from './codegenTypes';
|
|
3
|
+
/**
|
|
4
|
+
* Icon fields, pre-resolved on the JS side (see icons.ts).
|
|
5
|
+
*/
|
|
6
|
+
export type ButtonIconProps = Readonly<{
|
|
7
|
+
iconType: string;
|
|
8
|
+
iconName: string;
|
|
9
|
+
iconUri: string;
|
|
10
|
+
iconScale: Double;
|
|
11
|
+
iconTinted: string;
|
|
12
|
+
}>;
|
|
13
|
+
/**
|
|
14
|
+
* Label font. Empty strings / 0 mean "platform default".
|
|
15
|
+
*/
|
|
16
|
+
export type ButtonLabelStyleProps = Readonly<{
|
|
17
|
+
fontFamily?: string;
|
|
18
|
+
fontSize?: Double;
|
|
19
|
+
fontWeight?: string;
|
|
20
|
+
fontStyle?: string;
|
|
21
|
+
}>;
|
|
22
|
+
export interface ButtonNativeProps extends ViewProps {
|
|
23
|
+
/** Button text. Empty for an icon-only button. */
|
|
24
|
+
label?: string;
|
|
25
|
+
/** Icon shown before the label, or alone when there is no label. */
|
|
26
|
+
icon?: ButtonIconProps;
|
|
27
|
+
/** 'filled' | 'tonal' | 'outlined' | 'text' | 'elevated' */
|
|
28
|
+
variant?: string;
|
|
29
|
+
/** 'xsmall' | 'small' | 'medium' | 'large' | 'xlarge' */
|
|
30
|
+
size?: string;
|
|
31
|
+
/** '' (platform default) | 'round' | 'square' */
|
|
32
|
+
shape?: string;
|
|
33
|
+
/** 'enabled' | 'disabled' */
|
|
34
|
+
interactivity?: string;
|
|
35
|
+
/** Container (background) color. */
|
|
36
|
+
color?: ColorValue;
|
|
37
|
+
/** Label and icon color. */
|
|
38
|
+
foregroundColor?: ColorValue;
|
|
39
|
+
/** Android: ripple color shown while pressing. */
|
|
40
|
+
androidRippleColor?: ColorValue;
|
|
41
|
+
/** Android: outline color (outlined variant). */
|
|
42
|
+
androidStrokeColor?: ColorValue;
|
|
43
|
+
/** Android: Material style, 'm3' | 'expressive' */
|
|
44
|
+
androidMaterial?: string;
|
|
45
|
+
/** Label font. */
|
|
46
|
+
labelStyle?: ButtonLabelStyleProps;
|
|
47
|
+
/**
|
|
48
|
+
* Screen-reader label, applied to the native button rather than the host
|
|
49
|
+
* view. Empty means "use the label".
|
|
50
|
+
*/
|
|
51
|
+
spokenLabel?: string;
|
|
52
|
+
/** Fired when the button is pressed. */
|
|
53
|
+
onButtonPress?: BubblingEventHandler<Readonly<{}>>;
|
|
54
|
+
}
|
|
55
|
+
declare const _default: HostComponent<ButtonNativeProps>;
|
|
56
|
+
export default _default;
|
|
57
|
+
//# sourceMappingURL=ButtonNativeComponent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ButtonNativeComponent.d.ts","sourceRoot":"","sources":["../../../../src/ButtonNativeComponent.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,CAAC;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,QAAQ,CAAC;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC,CAAC;AAEH,MAAM,WAAW,iBAAkB,SAAQ,SAAS;IAClD,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,oEAAoE;IACpE,IAAI,CAAC,EAAE,eAAe,CAAC;IAEvB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,6BAA6B;IAC7B,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,oCAAoC;IACpC,KAAK,CAAC,EAAE,UAAU,CAAC;IAEnB,4BAA4B;IAC5B,eAAe,CAAC,EAAE,UAAU,CAAC;IAE7B,kDAAkD;IAClD,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAEhC,iDAAiD;IACjD,kBAAkB,CAAC,EAAE,UAAU,CAAC;IAEhC,mDAAmD;IACnD,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,kBAAkB;IAClB,UAAU,CAAC,EAAE,qBAAqB,CAAC;IAEnC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,wCAAwC;IACxC,aAAa,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;CACpD;wBAII,aAAa,CAAC,iBAAiB,CAAC;AAFrC,wBAEsC"}
|