react-native-nitro-modal 0.2.0 → 0.3.1-rc

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 (83) hide show
  1. package/README.md +52 -4
  2. package/android/src/main/java/com/margelo/nitro/nitromodal/BottomSheetPresenter.kt +399 -34
  3. package/android/src/main/java/com/margelo/nitro/nitromodal/HybridNitroModal.kt +67 -22
  4. package/android/src/main/java/com/margelo/nitro/nitromodal/ModalConfig.kt +35 -1
  5. package/android/src/main/java/com/margelo/nitro/nitromodal/ModalContentRoot.kt +48 -5
  6. package/android/src/main/java/com/margelo/nitro/nitromodal/ModalPresenter.kt +63 -4
  7. package/android/src/main/java/com/margelo/nitro/nitromodal/NitroModalHostView.kt +68 -8
  8. package/ios/HybridNitroModal.swift +115 -20
  9. package/ios/ModalConfig.swift +48 -2
  10. package/ios/NitroModalHostView.swift +73 -8
  11. package/ios/SheetView.swift +647 -0
  12. package/ios/SheetViewController.swift +19 -450
  13. package/lib/module/NitroModal.js +54 -6
  14. package/lib/module/NitroModal.js.map +1 -1
  15. package/lib/module/NitroModalView.web.js +86 -26
  16. package/lib/module/NitroModalView.web.js.map +1 -1
  17. package/lib/module/index.js.map +1 -1
  18. package/lib/module/web/AnimatedValue.js +3 -0
  19. package/lib/module/web/AnimatedValue.js.map +1 -1
  20. package/lib/module/web/ModalConfig.js +10 -4
  21. package/lib/module/web/ModalConfig.js.map +1 -1
  22. package/lib/module/web/ModalController.js +29 -2
  23. package/lib/module/web/ModalController.js.map +1 -1
  24. package/lib/module/web/ModalPresenter.js +47 -12
  25. package/lib/module/web/ModalPresenter.js.map +1 -1
  26. package/lib/module/web/SheetPresenter.js +118 -34
  27. package/lib/module/web/SheetPresenter.js.map +1 -1
  28. package/lib/module/web/dom.js +16 -0
  29. package/lib/module/web/dom.js.map +1 -1
  30. package/lib/typescript/src/NitroModal.d.ts +42 -2
  31. package/lib/typescript/src/NitroModal.d.ts.map +1 -1
  32. package/lib/typescript/src/NitroModal.nitro.d.ts +37 -2
  33. package/lib/typescript/src/NitroModal.nitro.d.ts.map +1 -1
  34. package/lib/typescript/src/NitroModalView.web.d.ts.map +1 -1
  35. package/lib/typescript/src/index.d.ts +2 -2
  36. package/lib/typescript/src/index.d.ts.map +1 -1
  37. package/lib/typescript/src/web/AnimatedValue.d.ts +1 -0
  38. package/lib/typescript/src/web/AnimatedValue.d.ts.map +1 -1
  39. package/lib/typescript/src/web/ModalConfig.d.ts +10 -0
  40. package/lib/typescript/src/web/ModalConfig.d.ts.map +1 -1
  41. package/lib/typescript/src/web/ModalController.d.ts +5 -0
  42. package/lib/typescript/src/web/ModalController.d.ts.map +1 -1
  43. package/lib/typescript/src/web/ModalPresenter.d.ts +13 -0
  44. package/lib/typescript/src/web/ModalPresenter.d.ts.map +1 -1
  45. package/lib/typescript/src/web/SheetPresenter.d.ts +13 -2
  46. package/lib/typescript/src/web/SheetPresenter.d.ts.map +1 -1
  47. package/lib/typescript/src/web/dom.d.ts +4 -0
  48. package/lib/typescript/src/web/dom.d.ts.map +1 -1
  49. package/nitrogen/generated/android/c++/JHybridNitroModalSpec.cpp +78 -6
  50. package/nitrogen/generated/android/c++/JHybridNitroModalSpec.hpp +14 -2
  51. package/nitrogen/generated/android/c++/JNamedSheetDetent.hpp +64 -0
  52. package/nitrogen/generated/android/c++/JSheetDetent.cpp +26 -0
  53. package/nitrogen/generated/android/c++/JSheetDetent.hpp +42 -37
  54. package/nitrogen/generated/android/c++/views/JHybridNitroModalStateUpdater.cpp +30 -0
  55. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/HybridNitroModalSpec.kt +52 -0
  56. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/NamedSheetDetent.kt +25 -0
  57. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromodal/SheetDetent.kt +47 -10
  58. package/nitrogen/generated/android/nitromodal+autolinking.cmake +1 -0
  59. package/nitrogen/generated/ios/NitroModal-Swift-Cxx-Bridge.hpp +68 -8
  60. package/nitrogen/generated/ios/NitroModal-Swift-Cxx-Umbrella.hpp +4 -3
  61. package/nitrogen/generated/ios/c++/HybridNitroModalSpecSwift.hpp +46 -5
  62. package/nitrogen/generated/ios/c++/views/HybridNitroModalComponent.mm +36 -0
  63. package/nitrogen/generated/ios/swift/HybridNitroModalSpec.swift +6 -0
  64. package/nitrogen/generated/ios/swift/HybridNitroModalSpec_cxx.swift +158 -5
  65. package/nitrogen/generated/ios/swift/NamedSheetDetent.swift +48 -0
  66. package/nitrogen/generated/ios/swift/SheetDetent.swift +15 -33
  67. package/nitrogen/generated/shared/c++/HybridNitroModalSpec.cpp +12 -0
  68. package/nitrogen/generated/shared/c++/HybridNitroModalSpec.hpp +18 -5
  69. package/nitrogen/generated/shared/c++/{SheetDetent.hpp → NamedSheetDetent.hpp} +17 -17
  70. package/nitrogen/generated/shared/c++/views/HybridNitroModalComponent.cpp +13 -1
  71. package/nitrogen/generated/shared/c++/views/HybridNitroModalComponent.hpp +21 -2
  72. package/nitrogen/generated/shared/json/NitroModalConfig.json +6 -0
  73. package/package.json +1 -1
  74. package/src/NitroModal.nitro.ts +38 -2
  75. package/src/NitroModal.tsx +93 -4
  76. package/src/NitroModalView.web.tsx +79 -12
  77. package/src/index.tsx +2 -0
  78. package/src/web/AnimatedValue.ts +4 -0
  79. package/src/web/ModalConfig.ts +19 -3
  80. package/src/web/ModalController.ts +35 -2
  81. package/src/web/ModalPresenter.ts +50 -11
  82. package/src/web/SheetPresenter.ts +169 -37
  83. package/src/web/dom.ts +20 -0
@@ -7,13 +7,19 @@ import type { HybridView, HybridViewMethods, HybridViewProps } from 'react-nativ
7
7
  */
8
8
  export type ModalMode = 'bottomSheet' | 'popup';
9
9
  /**
10
- * Resting heights of a `bottomSheet`.
10
+ * Named resting heights of a `bottomSheet`.
11
11
  * - `small`: ~25% of the available height.
12
12
  * - `medium`: ~50% of the available height.
13
13
  * - `large`: the full available height.
14
14
  * - `fitContent`: the measured height of the React content.
15
15
  */
16
- export type SheetDetent = 'small' | 'medium' | 'large' | 'fitContent';
16
+ export type NamedSheetDetent = 'small' | 'medium' | 'large' | 'fitContent';
17
+ /**
18
+ * A resting height of a `bottomSheet`: a named height, or the height
19
+ * (dp/pt) of the content above the bottom safe area, clamped to the
20
+ * available height.
21
+ */
22
+ export type SheetDetent = NamedSheetDetent | number;
17
23
  /**
18
24
  * How the modal reacts to the software keyboard.
19
25
  * - `pan`: the sheet/card is translated above the keyboard, in sync with the
@@ -36,6 +42,12 @@ export interface NitroModalProps extends HybridViewProps {
36
42
  /** Whether the modal should be presented. */
37
43
  isOpen: boolean;
38
44
  mode: ModalMode;
45
+ /**
46
+ * A `bottomSheet` that lives inside the host view's own bounds instead of
47
+ * being presented over the app: no backdrop, touches outside the sheet
48
+ * reach the views behind it, and the user can't dismiss it.
49
+ */
50
+ isInline: boolean;
39
51
  /** Detents of a `bottomSheet`, smallest first. At most 3 are used on Android. */
40
52
  detents: SheetDetent[];
41
53
  /** Index into `detents` that the sheet opens at. */
@@ -56,6 +68,19 @@ export interface NitroModalProps extends HybridViewProps {
56
68
  contentBackgroundColor?: number;
57
69
  keyboardBehavior: KeyboardBehavior;
58
70
  popupAnimation: PopupAnimation;
71
+ /**
72
+ * Pulling a `bottomSheet` down past its lowest detent calls
73
+ * `onPullToRefresh`. Needs `dismissOnSwipe` off (always the case inline).
74
+ */
75
+ pullToRefreshEnabled: boolean;
76
+ /**
77
+ * A refresh is in progress: the sheet rests pulled down below its lowest
78
+ * detent with an activity indicator above it. Native starts refreshing on
79
+ * its own when a pull is released. `undefined` shows no indicator.
80
+ */
81
+ refreshing?: boolean;
82
+ /** Refresh indicator color as a processed ARGB color. Omit for the platform default. */
83
+ refreshIndicatorColor?: number;
59
84
  /** The present transition finished. */
60
85
  onPresent?: () => void;
61
86
  /** The modal is fully gone. Fired exactly once for every presentation request. */
@@ -67,6 +92,16 @@ export interface NitroModalProps extends HybridViewProps {
67
92
  onBackButtonPress?: () => void;
68
93
  /** The area available to the content changed (rotation, keyboard, sheet sizing). */
69
94
  onContentAreaChange?: (area: ModalContentArea) => void;
95
+ /**
96
+ * The user pulled the sheet down past its lowest detent and let go. The
97
+ * gesture must start with the sheet resting on that detent.
98
+ */
99
+ onPullToRefresh?: () => void;
100
+ /**
101
+ * Inline sheets: where the sheet's top rests within the host view (or
102
+ * will, once it settles). Lets React lay the content out where it is shown.
103
+ */
104
+ onRestingTopChange?: (top: number) => void;
70
105
  }
71
106
  export interface NitroModalMethods extends HybridViewMethods {
72
107
  present(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"NitroModal.nitro.d.ts","sourceRoot":"","sources":["../../../src/NitroModal.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,eAAe,EAChB,MAAM,4BAA4B,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,OAAO,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,CAAC;AAEtE;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzD,0CAA0C;AAC1C,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvD,sCAAsC;AACtC,MAAM,MAAM,aAAa,GACvB,cAAc,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;AAEvD,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,6CAA6C;IAC7C,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB,iFAAiF;IACjF,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,oDAAoD;IACpD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,OAAO,CAAC;IAChC,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,mFAAmF;IACnF,YAAY,EAAE,MAAM,CAAC;IACrB,uFAAuF;IACvF,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,EAAE,cAAc,CAAC;IAE/B,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,kFAAkF;IAClF,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,qDAAqD;IACrD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,qCAAqC;IACrC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,oFAAoF;IACpF,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACxD;AAED,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,OAAO,IAAI,IAAI,CAAC;IAChB,OAAO,IAAI,IAAI,CAAC;IAChB,oDAAoD;IACpD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC"}
1
+ {"version":3,"file":"NitroModal.nitro.d.ts","sourceRoot":"","sources":["../../../src/NitroModal.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,iBAAiB,EACjB,eAAe,EAChB,MAAM,4BAA4B,CAAC;AAEpC;;;;;GAKG;AACH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,OAAO,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,CAAC;AAE3E;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,gBAAgB,GAAG,MAAM,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzD,0CAA0C;AAC1C,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAEvD,sCAAsC;AACtC,MAAM,MAAM,aAAa,GACvB,cAAc,GAAG,OAAO,GAAG,UAAU,GAAG,YAAY,CAAC;AAEvD,8EAA8E;AAC9E,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAgB,SAAQ,eAAe;IACtD,6CAA6C;IAC7C,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,SAAS,CAAC;IAChB;;;;OAIG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,iFAAiF;IACjF,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,oDAAoD;IACpD,kBAAkB,EAAE,MAAM,CAAC;IAC3B,qEAAqE;IACrE,aAAa,EAAE,MAAM,CAAC;IACtB,0CAA0C;IAC1C,eAAe,EAAE,MAAM,CAAC;IACxB,yEAAyE;IACzE,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,OAAO,CAAC;IAChC,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,mFAAmF;IACnF,YAAY,EAAE,MAAM,CAAC;IACrB,uFAAuF;IACvF,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,EAAE,cAAc,CAAC;IAC/B;;;OAGG;IACH,oBAAoB,EAAE,OAAO,CAAC;IAC9B;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wFAAwF;IACxF,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,kFAAkF;IAClF,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAC;IAC5C,qDAAqD;IACrD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B,qCAAqC;IACrC,iBAAiB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC/B,oFAAoF;IACpF,mBAAmB,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACvD;;;OAGG;IACH,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B;;;OAGG;IACH,kBAAkB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C;AAED,MAAM,WAAW,iBAAkB,SAAQ,iBAAiB;IAC1D,OAAO,IAAI,IAAI,CAAC;IAChB,OAAO,IAAI,IAAI,CAAC;IAChB,oDAAoD;IACpD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,CAAC,eAAe,EAAE,iBAAiB,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"NitroModalView.web.d.ts","sourceRoot":"","sources":["../../../src/NitroModalView.web.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uBAAoB,CAAC;AAQ7E,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAEtC;AAgHD,eAAO,MAAM,cAAc,EAAmC,eAAe,CAC3E,eAAe,EACf,iBAAiB,CAClB,CAAC"}
1
+ {"version":3,"file":"NitroModalView.web.d.ts","sourceRoot":"","sources":["../../../src/NitroModalView.web.tsx"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,uBAAoB,CAAC;AAW7E,yFAAyF;AACzF,wBAAgB,QAAQ,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,CAEtC;AA+KD,eAAO,MAAM,cAAc,EAAmC,eAAe,CAC3E,eAAe,EACf,iBAAiB,CAClB,CAAC"}
@@ -1,3 +1,3 @@
1
- export { NitroModal, type NitroModalProps, type NitroModalRef, } from './NitroModal.js';
2
- export type { DismissReason, KeyboardBehavior, ModalMode, PopupAnimation, SheetDetent, } from './NitroModal.nitro.js';
1
+ export { NitroModal, type ModalPresentation, type NitroModalProps, type NitroModalRef, } from './NitroModal.js';
2
+ export type { DismissReason, KeyboardBehavior, ModalMode, NamedSheetDetent, PopupAnimation, SheetDetent, } from './NitroModal.nitro.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,iBAAc,CAAC;AACtB,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,cAAc,EACd,WAAW,GACZ,MAAM,uBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,iBAAc,CAAC;AACtB,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,cAAc,EACd,WAAW,GACZ,MAAM,uBAAoB,CAAC"}
@@ -37,6 +37,7 @@ export declare class AnimatedValue {
37
37
  /** `precision`: distance from the target at which a spring counts as settled. */
38
38
  constructor(value: number, precision: number, onChange: (value: number) => void);
39
39
  get value(): number;
40
+ get isAnimating(): boolean;
40
41
  /** Jumps to `value`, cancelling any animation. */
41
42
  set(value: number): void;
42
43
  stop(): void;
@@ -1 +1 @@
1
- {"version":3,"file":"AnimatedValue.d.ts","sourceRoot":"","sources":["../../../../src/web/AnimatedValue.ts"],"names":[],"mappings":"AAEA,kDAAkD;AAClD,MAAM,MAAM,MAAM,GACd;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;CACtB,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CACtC,CAAC;AAEN,mFAAmF;AACnF,eAAO,MAAM,OAAO,EAAE,MAIrB,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB;AAgBD;;;;GAIG;AACH,qBAAa,aAAa;IAUtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAV3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,GAAG,CAAoB;IAC/B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,QAAQ,CAAK;IAErB,iFAAiF;gBAE/E,KAAK,EAAE,MAAM,EACI,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;IAKpD,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,kDAAkD;IAClD,GAAG,CAAC,KAAK,EAAE,MAAM;IAOjB,IAAI;IAQJ,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB;IAwBtE,OAAO,CAAC,IAAI,CAyBV;IAEF,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,UAAU;CA8BnB"}
1
+ {"version":3,"file":"AnimatedValue.d.ts","sourceRoot":"","sources":["../../../../src/web/AnimatedValue.ts"],"names":[],"mappings":"AAEA,kDAAkD;AAClD,MAAM,MAAM,MAAM,GACd;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,oEAAoE;IACpE,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,YAAY,EAAE,MAAM,CAAC;CACtB,GACD;IACE,IAAI,EAAE,QAAQ,CAAC;IACf,uBAAuB;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC;CACtC,CAAC;AAEN,mFAAmF;AACnF,eAAO,MAAM,OAAO,EAAE,MAIrB,CAAC;AAEF,MAAM,WAAW,cAAc;IAC7B,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,MAAM,IAAI,CAAC;CACpB;AAgBD;;;;GAIG;AACH,qBAAa,aAAa;IAUtB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAC1B,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAV3B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,GAAG,CAAoB;IAC/B,OAAO,CAAC,KAAK,CAAuB;IACpC,OAAO,CAAC,QAAQ,CAAK;IAErB,iFAAiF;gBAE/E,KAAK,EAAE,MAAM,EACI,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI;IAKpD,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED,kDAAkD;IAClD,GAAG,CAAC,KAAK,EAAE,MAAM;IAOjB,IAAI;IAQJ,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,cAAmB;IAwBtE,OAAO,CAAC,IAAI,CAyBV;IAEF,OAAO,CAAC,UAAU;IAkBlB,OAAO,CAAC,UAAU;CA8BnB"}
@@ -2,6 +2,11 @@ import type { KeyboardBehavior, ModalMode, NitroModalProps, PopupAnimation, Shee
2
2
  /** Snapshot of the props that shape a presentation. */
3
3
  export interface ModalConfig {
4
4
  mode: ModalMode;
5
+ /**
6
+ * A `bottomSheet` rendered in place, filling the host view: no backdrop,
7
+ * the page behind stays interactive, and the user can't dismiss it.
8
+ */
9
+ isInline: boolean;
5
10
  detents: SheetDetent[];
6
11
  initialDetentIndex: number;
7
12
  /** 0xAARRGGBB, from `processColor`. */
@@ -18,6 +23,11 @@ export interface ModalConfig {
18
23
  contentBackgroundColor: number | null;
19
24
  keyboardBehavior: KeyboardBehavior;
20
25
  popupAnimation: PopupAnimation;
26
+ pullToRefreshEnabled: boolean;
27
+ /** A refresh is in progress; `null` shows no refresh indicator. */
28
+ refreshing: boolean | null;
29
+ /** 0xAARRGGBB; `null` uses the default. */
30
+ refreshIndicatorColor: number | null;
21
31
  }
22
32
  export declare function makeConfig(props: NitroModalProps): ModalConfig;
23
33
  export declare function isSameConfig(a: ModalConfig, b: ModalConfig): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ModalConfig.d.ts","sourceRoot":"","sources":["../../../../src/web/ModalConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,cAAc,EACd,WAAW,EACZ,MAAM,wBAAqB,CAAC;AAE7B,uDAAuD;AACvD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,OAAO,CAAC;IAChC,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qDAAqD;IACrD,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,EAAE,cAAc,CAAC;CAChC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,WAAW,CAmB9D;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAMpE"}
1
+ {"version":3,"file":"ModalConfig.d.ts","sourceRoot":"","sources":["../../../../src/web/ModalConfig.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,cAAc,EACd,WAAW,EACZ,MAAM,wBAAqB,CAAC;AAE7B,uDAAuD;AACvD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB;;;OAGG;IACH,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,sBAAsB,EAAE,OAAO,CAAC;IAChC,cAAc,EAAE,OAAO,CAAC;IACxB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,cAAc,EAAE,OAAO,CAAC;IACxB,+BAA+B;IAC/B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qDAAqD;IACrD,sBAAsB,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,cAAc,EAAE,cAAc,CAAC;IAC/B,oBAAoB,EAAE,OAAO,CAAC;IAC9B,mEAAmE;IACnE,UAAU,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,2CAA2C;IAC3C,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;CACtC;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,GAAG,WAAW,CAyB9D;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAMpE"}
@@ -29,6 +29,8 @@ export declare class ModalController implements PresenterListener {
29
29
  private isAttached;
30
30
  private presenter;
31
31
  private elements;
32
+ /** Inline: the element the sheet fills. */
33
+ private host;
32
34
  private lastContentArea;
33
35
  /** `setMounted` renders (or removes) the modal's elements. */
34
36
  constructor(setMounted: (mounted: boolean) => void);
@@ -37,6 +39,8 @@ export declare class ModalController implements PresenterListener {
37
39
  detach(): void;
38
40
  /** The host view rendered with new props. */
39
41
  update(props: NitroModalProps): void;
42
+ /** Inline: the element the sheet fills, rendered in place. */
43
+ hostDidChange(host: HTMLElement | null): void;
40
44
  elementsDidMount(elements: ModalElements): void;
41
45
  elementsWillUnmount(): void;
42
46
  contentDidRender(): void;
@@ -57,6 +61,7 @@ export declare class ModalController implements PresenterListener {
57
61
  onBackdropPress(): void;
58
62
  onSwipeDismiss(): void;
59
63
  onDetentChange(index: number): void;
64
+ onPullToRefresh(): void;
60
65
  onContentAreaChange(width: number, height: number): void;
61
66
  /** Lets React size the content before the first presentation. */
62
67
  private reportEstimatedContentArea;
@@ -1 +1 @@
1
- {"version":3,"file":"ModalController.d.ts","sourceRoot":"","sources":["../../../../src/web/ModalController.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,iBAAiB,EACjB,eAAe,EAChB,MAAM,wBAAqB,CAAC;AAG7B,OAAO,KAAK,EACV,aAAa,EAEb,iBAAiB,EAClB,MAAM,qBAAkB,CAAC;AAM1B;;;;;;;;;;GAUG;AACH,qBAAa,eAAgB,YAAW,iBAAiB;IAgC3C,OAAO,CAAC,QAAQ,CAAC,UAAU;IA/BvC,QAAQ,CAAC,OAAO,EAAE,IAAI,CACpB,iBAAiB,EACjB,SAAS,GAAG,SAAS,GAAG,cAAc,CACvC,CAQC;IAEF,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAiB;IAC9B,oDAAoD;IACpD,OAAO,CAAC,SAAS,CAAS;IAC1B,wEAAwE;IACxE,OAAO,CAAC,aAAa,CAAS;IAC9B,oDAAoD;IACpD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,eAAe,CAAiC;IAExD,8DAA8D;gBACjC,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI;IAInE,MAAM;IAKN,uGAAuG;IACvG,MAAM;IAiBN,6CAA6C;IAC7C,MAAM,CAAC,KAAK,EAAE,eAAe;IAqB7B,gBAAgB,CAAC,QAAQ,EAAE,aAAa;IAOxC,mBAAmB;IAInB,gBAAgB;IAIhB,6EAA6E;IAC7E,eAAe,aAOb;IAIF,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;IAQtB,6FAA6F;IAC7F,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,SAAS;IAwBjB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,UAAU;IAclB,WAAW;IAUX,WAAW;IAIX,eAAe;IAOf,cAAc;IAMd,cAAc,CAAC,KAAK,EAAE,MAAM;IAI5B,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAWjD,iEAAiE;IACjE,OAAO,CAAC,0BAA0B;IAYlC,OAAO,CAAC,kBAAkB,CAIxB;CACH"}
1
+ {"version":3,"file":"ModalController.d.ts","sourceRoot":"","sources":["../../../../src/web/ModalController.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAGV,iBAAiB,EACjB,eAAe,EAChB,MAAM,wBAAqB,CAAC;AAQ7B,OAAO,KAAK,EACV,aAAa,EAEb,iBAAiB,EAClB,MAAM,qBAAkB,CAAC;AAM1B;;;;;;;;;;GAUG;AACH,qBAAa,eAAgB,YAAW,iBAAiB;IAkC3C,OAAO,CAAC,QAAQ,CAAC,UAAU;IAjCvC,QAAQ,CAAC,OAAO,EAAE,IAAI,CACpB,iBAAiB,EACjB,SAAS,GAAG,SAAS,GAAG,cAAc,CACvC,CAQC;IAEF,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,MAAM,CAA4B;IAC1C,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAiB;IAC9B,oDAAoD;IACpD,OAAO,CAAC,SAAS,CAAS;IAC1B,wEAAwE;IACxE,OAAO,CAAC,aAAa,CAAS;IAC9B,oDAAoD;IACpD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,aAAa,CAAiC;IACtD,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAA+B;IAChD,OAAO,CAAC,QAAQ,CAA8B;IAC9C,2CAA2C;IAC3C,OAAO,CAAC,IAAI,CAA4B;IACxC,OAAO,CAAC,eAAe,CAAiC;IAExD,8DAA8D;gBACjC,UAAU,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI;IAInE,MAAM;IAKN,uGAAuG;IACvG,MAAM;IAiBN,6CAA6C;IAC7C,MAAM,CAAC,KAAK,EAAE,eAAe;IAqB7B,8DAA8D;IAC9D,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI;IAQtC,gBAAgB,CAAC,QAAQ,EAAE,aAAa;IAOxC,mBAAmB;IAInB,gBAAgB;IAIhB,6EAA6E;IAC7E,eAAe,aAOb;IAIF,OAAO,KAAK,SAAS,GAEpB;IAED,OAAO,CAAC,cAAc;IAOtB,OAAO,CAAC,cAAc;IAQtB,6FAA6F;IAC7F,OAAO,CAAC,iBAAiB;IAWzB,OAAO,CAAC,SAAS;IAwBjB,OAAO,CAAC,YAAY;IAgBpB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,aAAa;IAQrB,OAAO,CAAC,UAAU;IAclB,WAAW;IAUX,WAAW;IAIX,eAAe;IAOf,cAAc;IAMd,cAAc,CAAC,KAAK,EAAE,MAAM;IAI5B,eAAe;IAIf,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAWjD,iEAAiE;IACjE,OAAO,CAAC,0BAA0B;IAyBlC,OAAO,CAAC,kBAAkB,CAIxB;CACH"}
@@ -10,6 +10,10 @@ export interface ModalElements {
10
10
  /** Hosts the React content. */
11
11
  content: HTMLElement;
12
12
  grabber: HTMLElement;
13
+ /** Behind the sheet, uncovered as it's pulled down to refresh. */
14
+ refreshIndicator: HTMLElement;
15
+ /** The spinning ring inside `refreshIndicator`. */
16
+ refreshSpinner: HTMLElement;
13
17
  }
14
18
  export interface PresenterListener {
15
19
  /** An enter transition settled: the first one, or one that reversed an exit. */
@@ -21,6 +25,8 @@ export interface PresenterListener {
21
25
  onSwipeDismiss(): void;
22
26
  onDetentChange(index: number): void;
23
27
  onContentAreaChange(width: number, height: number): void;
28
+ /** The user pulled the sheet past its lowest detent and let go. */
29
+ onPullToRefresh(): void;
24
30
  }
25
31
  /**
26
32
  * Owns one presentation from show to dismiss. Subclasses lay out the surface
@@ -31,6 +37,9 @@ export interface PresenterListener {
31
37
  * Transitions are interruptible: dismissing mid-enter turns the enter around,
32
38
  * and `cancelDismiss` turns an exit back around. Once an exit starts the modal
33
39
  * stops taking input.
40
+ *
41
+ * Inline, the elements fill the host view in place of a full-window layer:
42
+ * only the surface takes input, and the keyboard is left to the page.
34
43
  */
35
44
  export declare abstract class ModalPresenter {
36
45
  protected config: ModalConfig;
@@ -47,6 +56,8 @@ export declare abstract class ModalPresenter {
47
56
  private finished;
48
57
  private observedContent;
49
58
  private resizeObserver;
59
+ /** Inline: follows the host's size, which can change without a window resize. */
60
+ private hostObserver;
50
61
  constructor(config: ModalConfig, listener: PresenterListener);
51
62
  get isShown(): boolean;
52
63
  /** Takes over the rendered elements and starts the enter transition. */
@@ -84,6 +95,8 @@ export declare abstract class ModalPresenter {
84
95
  protected teardown(): void;
85
96
  private finish;
86
97
  private applyBackdrop;
98
+ /** Inline, only the surface takes input; the rest reaches the page. */
99
+ private setInteractive;
87
100
  private measureViewport;
88
101
  /** Re-targets the observer at the content's root element. Returns whether its size changed. */
89
102
  private observeContent;
@@ -1 +1 @@
1
- {"version":3,"file":"ModalPresenter.d.ts","sourceRoot":"","sources":["../../../../src/web/ModalPresenter.ts"],"names":[],"mappings":"AAEA,OAAO,EAOL,KAAK,MAAM,EACX,KAAK,IAAI,EACV,MAAM,UAAO,CAAC;AACf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAe,CAAC;AAEjD,8DAA8D;AAC9D,MAAM,WAAW,aAAa;IAC5B,8DAA8D;IAC9D,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,WAAW,CAAC;IACtB,mCAAmC;IACnC,OAAO,EAAE,WAAW,CAAC;IACrB,+BAA+B;IAC/B,OAAO,EAAE,WAAW,CAAC;IACrB,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC,gFAAgF;IAChF,WAAW,IAAI,IAAI,CAAC;IACpB,uEAAuE;IACvE,WAAW,IAAI,IAAI,CAAC;IACpB,eAAe,IAAI,IAAI,CAAC;IACxB,+DAA+D;IAC/D,cAAc,IAAI,IAAI,CAAC;IACvB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1D;AAED;;;;;;;;;GASG;AACH,8BAAsB,cAAc;IAehC,SAAS,CAAC,MAAM,EAAE,WAAW;IAC7B,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB;IAfhD,SAAS,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAQ;IAChD,SAAS,CAAC,QAAQ,EAAE,IAAI,CAA2B;IACnD,SAAS,CAAC,MAAM,EAAE,MAAM,CAAe;IACvC,+EAA+E;IAC/E,SAAS,CAAC,cAAc,SAAK;IAC7B,0CAA0C;IAC1C,SAAS,CAAC,WAAW,EAAE,IAAI,CAA2B;IACtD,SAAS,CAAC,QAAQ,UAAS;IAC3B,SAAS,CAAC,YAAY,UAAS;IAC/B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,eAAe,CAA4B;IACnD,OAAO,CAAC,cAAc,CAA+B;gBAGzC,MAAM,EAAE,WAAW,EACV,QAAQ,EAAE,iBAAiB;IAGhD,IAAI,OAAO,IAAI,OAAO,CAErB;IAED,wEAAwE;IACxE,IAAI,CAAC,QAAQ,EAAE,aAAa;IA4B5B,MAAM,CAAC,MAAM,EAAE,WAAW;IAQ1B,wEAAwE;IACxE,gBAAgB;IAMhB;;;OAGG;IACH,OAAO;IAcP;;;OAGG;IACH,aAAa,IAAI,OAAO;IASxB,8DAA8D;IAC9D,OAAO;IAMP,YAAY,CAAC,MAAM,EAAE,MAAM;IAE3B,2DAA2D;IAC3D,SAAS,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI;IAElC,kFAAkF;IAClF,SAAS,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI;IAEpC,wFAAwF;IACxF,SAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,IAAI,GAAG,IAAI;IAEtD,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI;IAE/D,+DAA+D;IAC/D,SAAS,CAAC,QAAQ,CAAC,iBAAiB,IAAI,IAAI;IAE5C,SAAS,CAAC,QAAQ,CAAC,oBAAoB,IAAI,IAAI;IAE/C,SAAS,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI;IAEzC,2DAA2D;IAC3D,SAAS,CAAC,eAAe;IAMzB,SAAS,CAAC,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;IAMzD,SAAS,CAAC,QAAQ;IAelB,OAAO,CAAC,MAAM;IAOd,OAAO,CAAC,aAAa;IAoBrB,OAAO,CAAC,eAAe;IAUvB,+FAA+F;IAC/F,OAAO,CAAC,cAAc;IAetB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,mBAAmB,CAIzB;IAEF,OAAO,CAAC,YAAY,CAIlB;IAEF,OAAO,CAAC,cAAc,CAKpB;IAEF,OAAO,CAAC,mBAAmB,CAIzB;IAEF,wFAAwF;IACxF,OAAO,CAAC,WAAW,CAMjB;CACH"}
1
+ {"version":3,"file":"ModalPresenter.d.ts","sourceRoot":"","sources":["../../../../src/web/ModalPresenter.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { type Insets, type Size } from './dom.js';
3
3
  import type { ModalConfig } from './ModalConfig.js';
4
4
  import { ModalPresenter, type PresenterListener } from './ModalPresenter.js';
5
5
  /** Best guess of the content area before the sheet is on screen. */
6
- export declare function sheetContentArea(detents: SheetDetent[], viewport: Size, insets: Insets): Size;
6
+ export declare function sheetContentArea(detents: SheetDetent[], viewport: Size, insets: Insets, isInline: boolean): Size;
7
7
  /**
8
8
  * `bottomSheet` mode: an edge-attached sheet with detents, dragging,
9
9
  * swipe-to-dismiss and hand-off to scrollable content, like the iOS
@@ -16,6 +16,9 @@ export declare class SheetPresenter extends ModalPresenter {
16
16
  private drag;
17
17
  /** Vertical velocity of the swipe that requested the dismissal. */
18
18
  private releaseVelocity;
19
+ /** The sheet rests below its lowest detent, the indicator spinning above it. */
20
+ private refreshing;
21
+ private refreshSpin;
19
22
  /** The sheet's top edge in the viewport. */
20
23
  private readonly top;
21
24
  constructor(config: ModalConfig, listener: PresenterListener);
@@ -23,7 +26,7 @@ export declare class SheetPresenter extends ModalPresenter {
23
26
  protected didShow(): void;
24
27
  protected animateIn(): void;
25
28
  protected animateOut(onEnd: () => void): void;
26
- protected configDidChange(): void;
29
+ protected configDidChange(previous: ModalConfig): void;
27
30
  protected viewportDidChange(): void;
28
31
  protected contentSizeDidChange(): void;
29
32
  protected stopAnimations(): void;
@@ -35,8 +38,16 @@ export declare class SheetPresenter extends ModalPresenter {
35
38
  /** Sheet top when resting on `detents[index]`. The bottom safe area is added below the content. */
36
39
  private restingTop;
37
40
  private get detentTops();
41
+ /** Where the sheet settles on `detents[index]`: held below the lowest detent while refreshing. */
42
+ private settledTop;
43
+ private get settledTops();
38
44
  private layout;
39
45
  private render;
46
+ /**
47
+ * Centered in the gap a pull uncovers below the lowest detent, fading in
48
+ * as the pull nears the threshold.
49
+ */
50
+ private renderRefreshIndicator;
40
51
  /** Fully dimmed at every detent; fades out below the lowest one. */
41
52
  private backdropAlpha;
42
53
  private motion;
@@ -1 +1 @@
1
- {"version":3,"file":"SheetPresenter.d.ts","sourceRoot":"","sources":["../../../../src/web/SheetPresenter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAqB,CAAC;AAEvD,OAAO,EAKL,KAAK,MAAM,EACX,KAAK,IAAI,EACV,MAAM,UAAO,CAAC;AACf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAkB,CAAC;AA4D1E,oEAAoE;AACpE,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,EAAE,EACtB,QAAQ,EAAE,IAAI,EACd,MAAM,EAAE,MAAM,GACb,IAAI,CAKN;AAcD;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,OAAO,CAAC,aAAa,CAAK;IAC1B,gFAAgF;IAChF,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,IAAI,CAAqB;IACjC,mEAAmE;IACnE,OAAO,CAAC,eAAe,CAAK;IAC5B,4CAA4C;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAElB;gBAEU,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB;IAQ5D,YAAY,CAAC,KAAK,EAAE,MAAM;IAO1B,SAAS,CAAC,OAAO;IAejB,SAAS,CAAC,SAAS;IAKnB,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,IAAI;IAYtC,SAAS,CAAC,eAAe;IAMzB,SAAS,CAAC,iBAAiB;IAK3B,SAAS,CAAC,oBAAoB;IAM9B,SAAS,CAAC,cAAc;IAIxB,SAAS,CAAC,QAAQ;IAalB,OAAO,KAAK,OAAO,GAIlB;IAED,OAAO,KAAK,kBAAkB,GAE7B;IAED,OAAO,KAAK,YAAY,GAIvB;IAED,OAAO,CAAC,MAAM;IAcd,mGAAmG;IACnG,OAAO,CAAC,UAAU;IAYlB,OAAO,KAAK,UAAU,GAErB;IAED,OAAO,CAAC,MAAM;IA0Bd,OAAO,CAAC,MAAM;IAMd,oEAAoE;IACpE,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,MAAM;IAYd,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,SAAS;IAqBjB,6GAA6G;IAC7G,OAAO,CAAC,KAAK;IAoBb,OAAO,CAAC,QAAQ;IAehB,OAAO,CAAC,QAAQ;IAgChB,OAAO,CAAC,OAAO;IAwCf,kFAAkF;IAClF,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,QAAQ;IAWhB,kGAAkG;IAClG,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,gBAAgB,CAiBtB;IAEF,OAAO,CAAC,eAAe,CAqBrB;IAEF,OAAO,CAAC,cAAc,CAKpB;IAIF,OAAO,CAAC,iBAAiB,CAqBvB;IAEF,OAAO,CAAC,iBAAiB,CAkBvB;IAEF,OAAO,CAAC,eAAe,CAIrB;CACH"}
1
+ {"version":3,"file":"SheetPresenter.d.ts","sourceRoot":"","sources":["../../../../src/web/SheetPresenter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,wBAAqB,CAAC;AAEvD,OAAO,EAOL,KAAK,MAAM,EACX,KAAK,IAAI,EACV,MAAM,UAAO,CAAC;AACf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAe,CAAC;AACjD,OAAO,EAAE,cAAc,EAAE,KAAK,iBAAiB,EAAE,MAAM,qBAAkB,CAAC;AAmG1E,oEAAoE;AACpE,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,WAAW,EAAE,EACtB,QAAQ,EAAE,IAAI,EACd,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,OAAO,GAChB,IAAI,CAQN;AAcD;;;;GAIG;AACH,qBAAa,cAAe,SAAQ,cAAc;IAChD,OAAO,CAAC,aAAa,CAAK;IAC1B,gFAAgF;IAChF,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,IAAI,CAAqB;IACjC,mEAAmE;IACnE,OAAO,CAAC,eAAe,CAAK;IAC5B,gFAAgF;IAChF,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,WAAW,CAA0B;IAC7C,4CAA4C;IAC5C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAElB;gBAEU,MAAM,EAAE,WAAW,EAAE,QAAQ,EAAE,iBAAiB;IAS5D,YAAY,CAAC,KAAK,EAAE,MAAM;IAO1B,SAAS,CAAC,OAAO;IAejB,SAAS,CAAC,SAAS;IAKnB,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,MAAM,IAAI;IAYtC,SAAS,CAAC,eAAe,CAAC,QAAQ,EAAE,WAAW;IAS/C,SAAS,CAAC,iBAAiB;IAK3B,SAAS,CAAC,oBAAoB;IAM9B,SAAS,CAAC,cAAc;IAIxB,SAAS,CAAC,QAAQ;IAelB,OAAO,KAAK,OAAO,GAIlB;IAED,OAAO,KAAK,kBAAkB,GAM7B;IAED,OAAO,KAAK,YAAY,GAIvB;IAED,OAAO,CAAC,MAAM;IAQd,mGAAmG;IACnG,OAAO,CAAC,UAAU;IAelB,OAAO,KAAK,UAAU,GAErB;IAED,kGAAkG;IAClG,OAAO,CAAC,UAAU;IAOlB,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,CAAC,MAAM;IA8Bd,OAAO,CAAC,MAAM;IAOd;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IA2B9B,oEAAoE;IACpE,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,MAAM;IAYd,OAAO,CAAC,aAAa;IAOrB,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,SAAS;IAwBjB,6GAA6G;IAC7G,OAAO,CAAC,KAAK;IAoBb,OAAO,CAAC,QAAQ;IAsBhB,OAAO,CAAC,QAAQ;IA4ChB,OAAO,CAAC,OAAO;IA+Cf,kFAAkF;IAClF,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,QAAQ;IAWhB,kGAAkG;IAClG,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,gBAAgB,CAiBtB;IAEF,OAAO,CAAC,eAAe,CAqBrB;IAEF,OAAO,CAAC,cAAc,CAKpB;IAIF,OAAO,CAAC,iBAAiB,CAqBvB;IAEF,OAAO,CAAC,iBAAiB,CAkBvB;IAEF,OAAO,CAAC,eAAe,CAIrB;CACH"}
@@ -10,6 +10,8 @@ export interface Insets {
10
10
  }
11
11
  export declare const ZERO_INSETS: Insets;
12
12
  export declare const canUseDOM: boolean;
13
+ /** Width and height of the pull-to-refresh indicator. */
14
+ export declare const REFRESH_INDICATOR_SIZE = 24;
13
15
  /** Converts a color from `processColor` (0xAARRGGBB) to CSS, scaling its alpha by `opacity`. */
14
16
  export declare function toCSSColor(argb: number, opacity?: number): string;
15
17
  /**
@@ -17,6 +19,8 @@ export declare function toCSSColor(argb: number, opacity?: number): string;
17
19
  * notched devices when the page opts in with `viewport-fit=cover`.
18
20
  */
19
21
  export declare function readSafeAreaInsets(): Insets;
22
+ /** The part of the safe area insets that `element` overlaps. */
23
+ export declare function inlineInsets(element: Element): Insets;
20
24
  /**
21
25
  * Height of the on-screen keyboard over a layout viewport `layoutHeight` tall.
22
26
  * Mobile browsers keep the layout viewport and shrink the visual one.
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../../src/web/dom.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,WAAW,EAAE,MAAiD,CAAC;AAE5E,eAAO,MAAM,SAAS,SAC4C,CAAC;AAEnE,gGAAgG;AAChG,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,MAAM,CAM5D;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAmB3C;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED,6DAA6D;AAC7D,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AASD,gGAAgG;AAChG,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,IAAI,EAAE,OAAO,GACZ,WAAW,GAAG,IAAI,CAMpB;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAWT;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAO/D;AAED,oGAAoG;AACpG,wBAAgB,iBAAiB,SAUhC;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAK9C;AAID;;;GAGG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAMrC"}
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../../src/web/dom.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,IAAI;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,MAAM;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,WAAW,EAAE,MAAiD,CAAC;AAE5E,eAAO,MAAM,SAAS,SAC4C,CAAC;AAEnE,yDAAyD;AACzD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,gGAAgG;AAChG,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,SAAI,GAAG,MAAM,CAM5D;AAID;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAmB3C;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,MAAM,CAcrD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED,6DAA6D;AAC7D,wBAAgB,gBAAgB,IAAI,IAAI,CAKvC;AASD,gGAAgG;AAChG,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,IAAI,EAAE,OAAO,GACZ,WAAW,GAAG,IAAI,CAMpB;AAED,qFAAqF;AACrF,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,GAAG,IAAI,EAC1B,IAAI,EAAE,OAAO,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAWT;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,CAO/D;AAED,oGAAoG;AACpG,wBAAgB,iBAAiB,SAUhC;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAK9C;AAID;;;GAGG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAMrC"}
@@ -9,8 +9,8 @@
9
9
 
10
10
  // Forward declaration of `ModalMode` to properly resolve imports.
11
11
  namespace margelo::nitro::nitromodal { enum class ModalMode; }
12
- // Forward declaration of `SheetDetent` to properly resolve imports.
13
- namespace margelo::nitro::nitromodal { enum class SheetDetent; }
12
+ // Forward declaration of `NamedSheetDetent` to properly resolve imports.
13
+ namespace margelo::nitro::nitromodal { enum class NamedSheetDetent; }
14
14
  // Forward declaration of `KeyboardBehavior` to properly resolve imports.
15
15
  namespace margelo::nitro::nitromodal { enum class KeyboardBehavior; }
16
16
  // Forward declaration of `PopupAnimation` to properly resolve imports.
@@ -22,9 +22,11 @@ namespace margelo::nitro::nitromodal { struct ModalContentArea; }
22
22
 
23
23
  #include "ModalMode.hpp"
24
24
  #include "JModalMode.hpp"
25
- #include "SheetDetent.hpp"
25
+ #include "NamedSheetDetent.hpp"
26
+ #include <variant>
26
27
  #include <vector>
27
28
  #include "JSheetDetent.hpp"
29
+ #include "JNamedSheetDetent.hpp"
28
30
  #include <optional>
29
31
  #include "KeyboardBehavior.hpp"
30
32
  #include "JKeyboardBehavior.hpp"
@@ -89,12 +91,21 @@ namespace margelo::nitro::nitromodal {
89
91
  static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JModalMode> /* mode */)>("setMode");
90
92
  method(_javaPart, JModalMode::fromCpp(mode));
91
93
  }
92
- std::vector<SheetDetent> JHybridNitroModalSpec::getDetents() {
94
+ bool JHybridNitroModalSpec::getIsInline() {
95
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean()>("isInline");
96
+ auto __result = method(_javaPart);
97
+ return static_cast<bool>(__result);
98
+ }
99
+ void JHybridNitroModalSpec::setIsInline(bool isInline) {
100
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jboolean /* isInline */)>("setInline");
101
+ method(_javaPart, isInline);
102
+ }
103
+ std::vector<std::variant<NamedSheetDetent, double>> JHybridNitroModalSpec::getDetents() {
93
104
  static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JArrayClass<JSheetDetent>>()>("getDetents");
94
105
  auto __result = method(_javaPart);
95
106
  return [&](auto&& __input) {
96
107
  size_t __size = __input->size();
97
- std::vector<SheetDetent> __vector;
108
+ std::vector<std::variant<NamedSheetDetent, double>> __vector;
98
109
  __vector.reserve(__size);
99
110
  for (size_t __i = 0; __i < __size; __i++) {
100
111
  auto __element = __input->getElement(__i);
@@ -103,7 +114,7 @@ namespace margelo::nitro::nitromodal {
103
114
  return __vector;
104
115
  }(__result);
105
116
  }
106
- void JHybridNitroModalSpec::setDetents(const std::vector<SheetDetent>& detents) {
117
+ void JHybridNitroModalSpec::setDetents(const std::vector<std::variant<NamedSheetDetent, double>>& detents) {
107
118
  static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JArrayClass<JSheetDetent>> /* detents */)>("setDetents");
108
119
  method(_javaPart, [&](auto&& __input) {
109
120
  size_t __size = __input.size();
@@ -224,6 +235,33 @@ namespace margelo::nitro::nitromodal {
224
235
  static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JPopupAnimation> /* popupAnimation */)>("setPopupAnimation");
225
236
  method(_javaPart, JPopupAnimation::fromCpp(popupAnimation));
226
237
  }
238
+ bool JHybridNitroModalSpec::getPullToRefreshEnabled() {
239
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean()>("getPullToRefreshEnabled");
240
+ auto __result = method(_javaPart);
241
+ return static_cast<bool>(__result);
242
+ }
243
+ void JHybridNitroModalSpec::setPullToRefreshEnabled(bool pullToRefreshEnabled) {
244
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jboolean /* pullToRefreshEnabled */)>("setPullToRefreshEnabled");
245
+ method(_javaPart, pullToRefreshEnabled);
246
+ }
247
+ std::optional<bool> JHybridNitroModalSpec::getRefreshing() {
248
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JBoolean>()>("getRefreshing");
249
+ auto __result = method(_javaPart);
250
+ return __result != nullptr ? std::make_optional(static_cast<bool>(__result->value())) : std::nullopt;
251
+ }
252
+ void JHybridNitroModalSpec::setRefreshing(std::optional<bool> refreshing) {
253
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JBoolean> /* refreshing */)>("setRefreshing");
254
+ method(_javaPart, refreshing.has_value() ? jni::JBoolean::valueOf(refreshing.value()) : nullptr);
255
+ }
256
+ std::optional<double> JHybridNitroModalSpec::getRefreshIndicatorColor() {
257
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JDouble>()>("getRefreshIndicatorColor");
258
+ auto __result = method(_javaPart);
259
+ return __result != nullptr ? std::make_optional(__result->value()) : std::nullopt;
260
+ }
261
+ void JHybridNitroModalSpec::setRefreshIndicatorColor(std::optional<double> refreshIndicatorColor) {
262
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JDouble> /* refreshIndicatorColor */)>("setRefreshIndicatorColor");
263
+ method(_javaPart, refreshIndicatorColor.has_value() ? jni::JDouble::valueOf(refreshIndicatorColor.value()) : nullptr);
264
+ }
227
265
  std::optional<std::function<void()>> JHybridNitroModalSpec::getOnPresent() {
228
266
  static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>()>("getOnPresent_cxx");
229
267
  auto __result = method(_javaPart);
@@ -326,6 +364,40 @@ namespace margelo::nitro::nitromodal {
326
364
  static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_ModalContentArea::javaobject> /* onContentAreaChange */)>("setOnContentAreaChange_cxx");
327
365
  method(_javaPart, onContentAreaChange.has_value() ? JFunc_void_ModalContentArea_cxx::fromCpp(onContentAreaChange.value()) : nullptr);
328
366
  }
367
+ std::optional<std::function<void()>> JHybridNitroModalSpec::getOnPullToRefresh() {
368
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>()>("getOnPullToRefresh_cxx");
369
+ auto __result = method(_javaPart);
370
+ return __result != nullptr ? std::make_optional([&]() -> std::function<void()> {
371
+ if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
372
+ auto downcast = jni::static_ref_cast<JFunc_void_cxx::javaobject>(__result);
373
+ return downcast->cthis()->getFunction();
374
+ } else {
375
+ auto __resultRef = jni::make_global(__result);
376
+ return JNICallable<JFunc_void, void()>(std::move(__resultRef));
377
+ }
378
+ }()) : std::nullopt;
379
+ }
380
+ void JHybridNitroModalSpec::setOnPullToRefresh(const std::optional<std::function<void()>>& onPullToRefresh) {
381
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void::javaobject> /* onPullToRefresh */)>("setOnPullToRefresh_cxx");
382
+ method(_javaPart, onPullToRefresh.has_value() ? JFunc_void_cxx::fromCpp(onPullToRefresh.value()) : nullptr);
383
+ }
384
+ std::optional<std::function<void(double /* top */)>> JHybridNitroModalSpec::getOnRestingTopChange() {
385
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void_double::javaobject>()>("getOnRestingTopChange_cxx");
386
+ auto __result = method(_javaPart);
387
+ return __result != nullptr ? std::make_optional([&]() -> std::function<void(double /* top */)> {
388
+ if (__result->isInstanceOf(JFunc_void_double_cxx::javaClassStatic())) [[likely]] {
389
+ auto downcast = jni::static_ref_cast<JFunc_void_double_cxx::javaobject>(__result);
390
+ return downcast->cthis()->getFunction();
391
+ } else {
392
+ auto __resultRef = jni::make_global(__result);
393
+ return JNICallable<JFunc_void_double, void(double)>(std::move(__resultRef));
394
+ }
395
+ }()) : std::nullopt;
396
+ }
397
+ void JHybridNitroModalSpec::setOnRestingTopChange(const std::optional<std::function<void(double /* top */)>>& onRestingTopChange) {
398
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JFunc_void_double::javaobject> /* onRestingTopChange */)>("setOnRestingTopChange_cxx");
399
+ method(_javaPart, onRestingTopChange.has_value() ? JFunc_void_double_cxx::fromCpp(onRestingTopChange.value()) : nullptr);
400
+ }
329
401
 
330
402
  // Methods
331
403
  void JHybridNitroModalSpec::present() {
@@ -54,8 +54,10 @@ namespace margelo::nitro::nitromodal {
54
54
  void setIsOpen(bool isOpen) override;
55
55
  ModalMode getMode() override;
56
56
  void setMode(ModalMode mode) override;
57
- std::vector<SheetDetent> getDetents() override;
58
- void setDetents(const std::vector<SheetDetent>& detents) override;
57
+ bool getIsInline() override;
58
+ void setIsInline(bool isInline) override;
59
+ std::vector<std::variant<NamedSheetDetent, double>> getDetents() override;
60
+ void setDetents(const std::vector<std::variant<NamedSheetDetent, double>>& detents) override;
59
61
  double getInitialDetentIndex() override;
60
62
  void setInitialDetentIndex(double initialDetentIndex) override;
61
63
  double getBackdropColor() override;
@@ -80,6 +82,12 @@ namespace margelo::nitro::nitromodal {
80
82
  void setKeyboardBehavior(KeyboardBehavior keyboardBehavior) override;
81
83
  PopupAnimation getPopupAnimation() override;
82
84
  void setPopupAnimation(PopupAnimation popupAnimation) override;
85
+ bool getPullToRefreshEnabled() override;
86
+ void setPullToRefreshEnabled(bool pullToRefreshEnabled) override;
87
+ std::optional<bool> getRefreshing() override;
88
+ void setRefreshing(std::optional<bool> refreshing) override;
89
+ std::optional<double> getRefreshIndicatorColor() override;
90
+ void setRefreshIndicatorColor(std::optional<double> refreshIndicatorColor) override;
83
91
  std::optional<std::function<void()>> getOnPresent() override;
84
92
  void setOnPresent(const std::optional<std::function<void()>>& onPresent) override;
85
93
  std::optional<std::function<void(DismissReason /* reason */)>> getOnDismiss() override;
@@ -92,6 +100,10 @@ namespace margelo::nitro::nitromodal {
92
100
  void setOnBackButtonPress(const std::optional<std::function<void()>>& onBackButtonPress) override;
93
101
  std::optional<std::function<void(const ModalContentArea& /* area */)>> getOnContentAreaChange() override;
94
102
  void setOnContentAreaChange(const std::optional<std::function<void(const ModalContentArea& /* area */)>>& onContentAreaChange) override;
103
+ std::optional<std::function<void()>> getOnPullToRefresh() override;
104
+ void setOnPullToRefresh(const std::optional<std::function<void()>>& onPullToRefresh) override;
105
+ std::optional<std::function<void(double /* top */)>> getOnRestingTopChange() override;
106
+ void setOnRestingTopChange(const std::optional<std::function<void(double /* top */)>>& onRestingTopChange) override;
95
107
 
96
108
  public:
97
109
  // Methods
@@ -0,0 +1,64 @@
1
+ ///
2
+ /// JNamedSheetDetent.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include <fbjni/fbjni.h>
11
+ #include "NamedSheetDetent.hpp"
12
+
13
+ namespace margelo::nitro::nitromodal {
14
+
15
+ using namespace facebook;
16
+
17
+ /**
18
+ * The C++ JNI bridge between the C++ enum "NamedSheetDetent" and the Kotlin enum "NamedSheetDetent".
19
+ */
20
+ struct JNamedSheetDetent final: public jni::JavaClass<JNamedSheetDetent> {
21
+ public:
22
+ static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/nitromodal/NamedSheetDetent;";
23
+
24
+ public:
25
+ /**
26
+ * Convert this Java/Kotlin-based enum to the C++ enum NamedSheetDetent.
27
+ */
28
+ [[maybe_unused]]
29
+ [[nodiscard]]
30
+ NamedSheetDetent toCpp() const {
31
+ static const auto clazz = javaClassStatic();
32
+ static const auto fieldOrdinal = clazz->getField<int>("value");
33
+ int ordinal = this->getFieldValue(fieldOrdinal);
34
+ return static_cast<NamedSheetDetent>(ordinal);
35
+ }
36
+
37
+ public:
38
+ /**
39
+ * Create a Java/Kotlin-based enum with the given C++ enum's value.
40
+ */
41
+ [[maybe_unused]]
42
+ static jni::alias_ref<JNamedSheetDetent> fromCpp(NamedSheetDetent value) {
43
+ static const auto clazz = javaClassStatic();
44
+ switch (value) {
45
+ case NamedSheetDetent::SMALL:
46
+ static const auto fieldSMALL = clazz->getStaticField<JNamedSheetDetent>("SMALL");
47
+ return clazz->getStaticFieldValue(fieldSMALL);
48
+ case NamedSheetDetent::MEDIUM:
49
+ static const auto fieldMEDIUM = clazz->getStaticField<JNamedSheetDetent>("MEDIUM");
50
+ return clazz->getStaticFieldValue(fieldMEDIUM);
51
+ case NamedSheetDetent::LARGE:
52
+ static const auto fieldLARGE = clazz->getStaticField<JNamedSheetDetent>("LARGE");
53
+ return clazz->getStaticFieldValue(fieldLARGE);
54
+ case NamedSheetDetent::FITCONTENT:
55
+ static const auto fieldFITCONTENT = clazz->getStaticField<JNamedSheetDetent>("FITCONTENT");
56
+ return clazz->getStaticFieldValue(fieldFITCONTENT);
57
+ default:
58
+ std::string stringValue = std::to_string(static_cast<int>(value));
59
+ throw std::invalid_argument("Invalid enum value (" + stringValue + "!");
60
+ }
61
+ }
62
+ };
63
+
64
+ } // namespace margelo::nitro::nitromodal
@@ -0,0 +1,26 @@
1
+ ///
2
+ /// JSheetDetent.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "JSheetDetent.hpp"
9
+
10
+ namespace margelo::nitro::nitromodal {
11
+ /**
12
+ * Converts JSheetDetent to std::variant<NamedSheetDetent, double>
13
+ */
14
+ std::variant<NamedSheetDetent, double> JSheetDetent::toCpp() const {
15
+ if (isInstanceOf(JSheetDetent_impl::First::javaClassStatic())) {
16
+ // It's a `NamedSheetDetent`
17
+ auto jniValue = static_cast<const JSheetDetent_impl::First*>(this)->getValue();
18
+ return jniValue->toCpp();
19
+ } else if (isInstanceOf(JSheetDetent_impl::Second::javaClassStatic())) {
20
+ // It's a `double`
21
+ auto jniValue = static_cast<const JSheetDetent_impl::Second*>(this)->getValue();
22
+ return jniValue;
23
+ }
24
+ throw std::invalid_argument("Variant is unknown Kotlin instance!");
25
+ }
26
+ } // namespace margelo::nitro::nitromodal