@rive-app/react-native 0.1.1 → 0.1.3

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 (65) hide show
  1. package/README.md +18 -7
  2. package/android/src/main/java/com/margelo/nitro/rive/HybridRiveFile.kt +0 -1
  3. package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelInstance.kt +26 -47
  4. package/android/src/main/java/com/margelo/nitro/rive/HybridViewModelListProperty.kt +64 -0
  5. package/ios/BaseHybridViewModelProperty.swift +9 -0
  6. package/ios/HybridViewModelInstance.swift +5 -0
  7. package/ios/HybridViewModelListProperty.swift +62 -0
  8. package/lib/module/hooks/useRiveColor.js +0 -1
  9. package/lib/module/hooks/useRiveColor.js.map +1 -1
  10. package/lib/module/hooks/useRiveFile.js +9 -2
  11. package/lib/module/hooks/useRiveFile.js.map +1 -1
  12. package/lib/module/hooks/useRiveList.js +71 -0
  13. package/lib/module/hooks/useRiveList.js.map +1 -0
  14. package/lib/module/hooks/useRiveProperty.js +6 -12
  15. package/lib/module/hooks/useRiveProperty.js.map +1 -1
  16. package/lib/module/hooks/useViewModelInstance.js +139 -0
  17. package/lib/module/hooks/useViewModelInstance.js.map +1 -0
  18. package/lib/module/index.js +2 -0
  19. package/lib/module/index.js.map +1 -1
  20. package/lib/typescript/src/hooks/useRiveColor.d.ts +6 -4
  21. package/lib/typescript/src/hooks/useRiveColor.d.ts.map +1 -1
  22. package/lib/typescript/src/hooks/useRiveFile.d.ts.map +1 -1
  23. package/lib/typescript/src/hooks/useRiveList.d.ts +11 -0
  24. package/lib/typescript/src/hooks/useRiveList.d.ts.map +1 -0
  25. package/lib/typescript/src/hooks/useRiveProperty.d.ts +6 -1
  26. package/lib/typescript/src/hooks/useRiveProperty.d.ts.map +1 -1
  27. package/lib/typescript/src/hooks/useViewModelInstance.d.ts +86 -0
  28. package/lib/typescript/src/hooks/useViewModelInstance.d.ts.map +1 -0
  29. package/lib/typescript/src/index.d.ts +4 -1
  30. package/lib/typescript/src/index.d.ts.map +1 -1
  31. package/lib/typescript/src/specs/ViewModel.nitro.d.ts +24 -0
  32. package/lib/typescript/src/specs/ViewModel.nitro.d.ts.map +1 -1
  33. package/lib/typescript/src/types.d.ts +47 -3
  34. package/lib/typescript/src/types.d.ts.map +1 -1
  35. package/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.cpp +9 -0
  36. package/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.hpp +1 -0
  37. package/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.cpp +102 -0
  38. package/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.hpp +73 -0
  39. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelInstanceSpec.kt +4 -0
  40. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelListPropertySpec.kt +92 -0
  41. package/nitrogen/generated/android/rive+autolinking.cmake +2 -0
  42. package/nitrogen/generated/android/riveOnLoad.cpp +2 -0
  43. package/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.cpp +17 -0
  44. package/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.hpp +44 -0
  45. package/nitrogen/generated/ios/RNRive-Swift-Cxx-Umbrella.hpp +5 -0
  46. package/nitrogen/generated/ios/c++/HybridViewModelInstanceSpecSwift.hpp +11 -0
  47. package/nitrogen/generated/ios/c++/HybridViewModelListPropertySpecSwift.cpp +11 -0
  48. package/nitrogen/generated/ios/c++/HybridViewModelListPropertySpecSwift.hpp +134 -0
  49. package/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec.swift +1 -0
  50. package/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec_cxx.swift +21 -0
  51. package/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec.swift +63 -0
  52. package/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec_cxx.swift +248 -0
  53. package/nitrogen/generated/shared/c++/HybridViewModelInstanceSpec.cpp +1 -0
  54. package/nitrogen/generated/shared/c++/HybridViewModelInstanceSpec.hpp +4 -0
  55. package/nitrogen/generated/shared/c++/HybridViewModelListPropertySpec.cpp +30 -0
  56. package/nitrogen/generated/shared/c++/HybridViewModelListPropertySpec.hpp +76 -0
  57. package/package.json +7 -3
  58. package/src/hooks/useRiveColor.ts +7 -4
  59. package/src/hooks/useRiveFile.ts +14 -2
  60. package/src/hooks/useRiveList.ts +108 -0
  61. package/src/hooks/useRiveProperty.ts +19 -12
  62. package/src/hooks/useViewModelInstance.ts +195 -0
  63. package/src/index.tsx +4 -0
  64. package/src/specs/ViewModel.nitro.ts +28 -0
  65. package/src/types.tsx +58 -3
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+
3
+ import { useMemo, useEffect, useRef } from 'react';
4
+ import { callDispose } from "../core/callDispose.js";
5
+ function isRiveViewRef(source) {
6
+ return source !== null && source !== undefined && 'getViewModelInstance' in source;
7
+ }
8
+ function isRiveFile(source) {
9
+ return source !== null && source !== undefined && 'defaultArtboardViewModel' in source;
10
+ }
11
+ function createInstance(source, name, useNew) {
12
+ if (!source) {
13
+ return {
14
+ instance: null,
15
+ needsDispose: false
16
+ };
17
+ }
18
+ if (isRiveViewRef(source)) {
19
+ const vmi = source.getViewModelInstance();
20
+ return {
21
+ instance: vmi ?? null,
22
+ needsDispose: false
23
+ };
24
+ }
25
+ if (isRiveFile(source)) {
26
+ const viewModel = source.defaultArtboardViewModel();
27
+ const vmi = viewModel?.createDefaultInstance();
28
+ return {
29
+ instance: vmi ?? null,
30
+ needsDispose: true
31
+ };
32
+ }
33
+
34
+ // ViewModel source
35
+ let vmi;
36
+ if (name) {
37
+ vmi = source.createInstanceByName(name);
38
+ } else if (useNew) {
39
+ vmi = source.createInstance();
40
+ } else {
41
+ vmi = source.createDefaultInstance();
42
+ }
43
+ return {
44
+ instance: vmi ?? null,
45
+ needsDispose: true
46
+ };
47
+ }
48
+
49
+ /**
50
+ * Hook for getting a ViewModelInstance from a RiveFile, ViewModel, or RiveViewRef.
51
+ *
52
+ * @param source - The RiveFile, ViewModel, or RiveViewRef to get an instance from
53
+ * @param params - Configuration for which instance to retrieve (only used with ViewModel)
54
+ * @returns The ViewModelInstance or null if not found
55
+ *
56
+ * @example
57
+ * ```tsx
58
+ * // From RiveFile (get default instance)
59
+ * const { riveFile } = useRiveFile(require('./animation.riv'));
60
+ * const instance = useViewModelInstance(riveFile);
61
+ * ```
62
+ *
63
+ * @example
64
+ * ```tsx
65
+ * // From RiveViewRef (get auto-bound instance)
66
+ * const { riveViewRef, setHybridRef } = useRive();
67
+ * const instance = useViewModelInstance(riveViewRef);
68
+ * ```
69
+ *
70
+ * @example
71
+ * ```tsx
72
+ * // From ViewModel
73
+ * const viewModel = file.viewModelByName('main');
74
+ * const instance = useViewModelInstance(viewModel);
75
+ * ```
76
+ *
77
+ * @example
78
+ * ```tsx
79
+ * // Create a new blank instance from ViewModel
80
+ * const viewModel = file.viewModelByName('TodoItem');
81
+ * const newInstance = useViewModelInstance(viewModel, { useNew: true });
82
+ * ```
83
+ *
84
+ * @example
85
+ * ```tsx
86
+ * // With required: true (throws if null, use with Error Boundary)
87
+ * const instance = useViewModelInstance(riveFile, { required: true });
88
+ * // instance is guaranteed to be non-null here
89
+ * ```
90
+ *
91
+ * @example
92
+ * ```tsx
93
+ * // With onInit to set initial values synchronously
94
+ * const instance = useViewModelInstance(riveFile, {
95
+ * onInit: (vmi) => {
96
+ * vmi.numberProperty('count').set(initialCount);
97
+ * vmi.stringProperty('name').set(userName);
98
+ * }
99
+ * });
100
+ * // Values are already set here
101
+ * ```
102
+ */
103
+
104
+ export function useViewModelInstance(source, params) {
105
+ const name = params?.name;
106
+ const useNew = params?.useNew ?? false;
107
+ const required = params?.required ?? false;
108
+ const onInit = params?.onInit;
109
+ const prevInstanceRef = useRef(null);
110
+ const result = useMemo(() => {
111
+ const created = createInstance(source, name, useNew);
112
+ if (created.instance && onInit) {
113
+ onInit(created.instance);
114
+ }
115
+ return created;
116
+ // eslint-disable-next-line react-hooks/exhaustive-deps -- onInit excluded intentionally
117
+ }, [source, name, useNew]);
118
+
119
+ // Dispose previous instance if it changed and needed disposal
120
+ if (prevInstanceRef.current && prevInstanceRef.current.instance !== result.instance && prevInstanceRef.current.needsDispose && prevInstanceRef.current.instance) {
121
+ callDispose(prevInstanceRef.current.instance);
122
+ }
123
+ prevInstanceRef.current = result;
124
+
125
+ // Cleanup on unmount
126
+ useEffect(() => {
127
+ return () => {
128
+ if (prevInstanceRef.current?.needsDispose && prevInstanceRef.current.instance) {
129
+ callDispose(prevInstanceRef.current.instance);
130
+ prevInstanceRef.current = null;
131
+ }
132
+ };
133
+ }, []);
134
+ if (required && result.instance === null) {
135
+ throw new Error('useViewModelInstance: Failed to get ViewModelInstance. ' + 'Ensure the source has a valid ViewModel and instance available.');
136
+ }
137
+ return result.instance;
138
+ }
139
+ //# sourceMappingURL=useViewModelInstance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useMemo","useEffect","useRef","callDispose","isRiveViewRef","source","undefined","isRiveFile","createInstance","name","useNew","instance","needsDispose","vmi","getViewModelInstance","viewModel","defaultArtboardViewModel","createDefaultInstance","createInstanceByName","useViewModelInstance","params","required","onInit","prevInstanceRef","result","created","current","Error"],"sourceRoot":"../../../src","sources":["hooks/useViewModelInstance.ts"],"mappings":"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","ignoreList":[]}
@@ -23,6 +23,8 @@ export { useRiveBoolean } from "./hooks/useRiveBoolean.js";
23
23
  export { useRiveEnum } from "./hooks/useRiveEnum.js";
24
24
  export { useRiveColor } from "./hooks/useRiveColor.js";
25
25
  export { useRiveTrigger } from "./hooks/useRiveTrigger.js";
26
+ export { useRiveList } from "./hooks/useRiveList.js";
27
+ export { useViewModelInstance } from "./hooks/useViewModelInstance.js";
26
28
  export { useRiveFile } from "./hooks/useRiveFile.js";
27
29
  export { DataBindMode };
28
30
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["DataBindMode","DataBindByName","constructor","name","byName","NitroRiveView","RiveView","Fit","Alignment","RiveFileFactory","RiveImages","RiveColor","RiveEventType","RiveErrorType","ArtboardByIndex","ArtboardByName","useRive","useRiveNumber","useRiveString","useRiveBoolean","useRiveEnum","useRiveColor","useRiveTrigger","useRiveFile"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AACA,SAIEA,YAAY,QAEP,2BAAwB;AAE/B,OAAO,MAAMC,cAAc,CAAoC;EAE7DC,WAAWA,CAACC,IAAY,EAAE;IACxB,IAAI,CAACC,MAAM,GAAGD,IAAI;EACpB;AACF;AAEA,SAASE,aAAa,QAAQ,kCAA+B;AAE7D,SAASC,QAAQ,QAA4B,oBAAiB;AAe9D,SAASC,GAAG,QAAQ,eAAY;AAChC,SAASC,SAAS,QAAQ,qBAAkB;AAC5C,SAASC,eAAe,QAAQ,oBAAiB;AACjD,SAASC,UAAU,QAAQ,sBAAmB;AAE9C,SAASC,SAAS,QAAQ,qBAAkB;AAC5C,SAAyBC,aAAa,QAAQ,kBAAe;AAC7D,SAAyBC,aAAa,QAAQ,kBAAe;AAC7D,SAASC,eAAe,EAAEC,cAAc,QAAQ,uBAAoB;AACpE,SAASC,OAAO,QAAQ,oBAAiB;AACzC,SAASC,aAAa,QAAQ,0BAAuB;AACrD,SAASC,aAAa,QAAQ,0BAAuB;AACrD,SAASC,cAAc,QAAQ,2BAAwB;AACvD,SAASC,WAAW,QAAQ,wBAAqB;AACjD,SAASC,YAAY,QAAQ,yBAAsB;AACnD,SAASC,cAAc,QAAQ,2BAAwB;AACvD,SAASC,WAAW,QAAQ,wBAAqB;AAEjD,SAASvB,YAAY","ignoreList":[]}
1
+ {"version":3,"names":["DataBindMode","DataBindByName","constructor","name","byName","NitroRiveView","RiveView","Fit","Alignment","RiveFileFactory","RiveImages","RiveColor","RiveEventType","RiveErrorType","ArtboardByIndex","ArtboardByName","useRive","useRiveNumber","useRiveString","useRiveBoolean","useRiveEnum","useRiveColor","useRiveTrigger","useRiveList","useViewModelInstance","useRiveFile"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AACA,SAIEA,YAAY,QAEP,2BAAwB;AAE/B,OAAO,MAAMC,cAAc,CAAoC;EAE7DC,WAAWA,CAACC,IAAY,EAAE;IACxB,IAAI,CAACC,MAAM,GAAGD,IAAI;EACpB;AACF;AAEA,SAASE,aAAa,QAAQ,kCAA+B;AAE7D,SAASC,QAAQ,QAA4B,oBAAiB;AAgB9D,SAASC,GAAG,QAAQ,eAAY;AAChC,SAASC,SAAS,QAAQ,qBAAkB;AAC5C,SAASC,eAAe,QAAQ,oBAAiB;AACjD,SAASC,UAAU,QAAQ,sBAAmB;AAE9C,SAASC,SAAS,QAAQ,qBAAkB;AAC5C,SAAyBC,aAAa,QAAQ,kBAAe;AAC7D,SAAyBC,aAAa,QAAQ,kBAAe;AAC7D,SAASC,eAAe,EAAEC,cAAc,QAAQ,uBAAoB;AACpE,SAASC,OAAO,QAAQ,oBAAiB;AACzC,SAASC,aAAa,QAAQ,0BAAuB;AACrD,SAASC,aAAa,QAAQ,0BAAuB;AACrD,SAASC,cAAc,QAAQ,2BAAwB;AACvD,SAASC,WAAW,QAAQ,wBAAqB;AACjD,SAASC,YAAY,QAAQ,yBAAsB;AACnD,SAASC,cAAc,QAAQ,2BAAwB;AACvD,SAASC,WAAW,QAAQ,wBAAqB;AACjD,SAASC,oBAAoB,QAAQ,iCAA8B;AACnE,SAASC,WAAW,QAAQ,wBAAqB;AAGjD,SAASzB,YAAY","ignoreList":[]}
@@ -1,6 +1,10 @@
1
1
  import type { ViewModelInstance } from '../specs/ViewModel.nitro';
2
- import { type UseRivePropertyResult } from '../types';
3
2
  import { RiveColor } from '../core/RiveColor';
3
+ export interface UseRiveColorResult {
4
+ value: RiveColor | undefined;
5
+ setValue: (value: RiveColor | string) => void;
6
+ error: Error | null;
7
+ }
4
8
  /**
5
9
  * Hook for interacting with color ViewModel instance properties.
6
10
  *
@@ -8,7 +12,5 @@ import { RiveColor } from '../core/RiveColor';
8
12
  * @param viewModelInstance - The ViewModelInstance containing the color property to operate on
9
13
  * @returns An object with the color value as RGBA, a setter function that accepts either RGBA or hex string, and an error if the property is not found
10
14
  */
11
- export declare function useRiveColor(path: string, viewModelInstance?: ViewModelInstance | null): UseRivePropertyResult<RiveColor> & {
12
- setValue: (value: RiveColor | string) => void;
13
- };
15
+ export declare function useRiveColor(path: string, viewModelInstance?: ViewModelInstance | null): UseRiveColorResult;
14
16
  //# sourceMappingURL=useRiveColor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRiveColor.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useRiveColor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,KAAK,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAEtD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAM9C;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,GAC3C,qBAAqB,CAAC,SAAS,CAAC,GAAG;IACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,KAAK,IAAI,CAAC;CAC/C,CAqBA"}
1
+ {"version":3,"file":"useRiveColor.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useRiveColor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAEV,iBAAiB,EAClB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAM9C,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;IAC7B,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,KAAK,IAAI,CAAC;IAC9C,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,GAC3C,kBAAkB,CAqBpB"}
@@ -1 +1 @@
1
- {"version":3,"file":"useRiveFile.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useRiveFile.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,QAAQ,EAET,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAEV,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAElC,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAC;AAC3D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,WAAW,CAAC;AAE5E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AA+DF,KAAK,kBAAkB,GACnB;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GACrD;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GAChD;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,wBAAgB,WAAW,CACzB,KAAK,EAAE,aAAa,GAAG,SAAS,EAChC,OAAO,GAAE,kBAAuB,GAC/B,kBAAkB,CA4FpB"}
1
+ {"version":3,"file":"useRiveFile.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useRiveFile.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,QAAQ,EAET,MAAM,yBAAyB,CAAC;AAEjC,OAAO,KAAK,EAEV,gBAAgB,EAChB,wBAAwB,EACzB,MAAM,0BAA0B,CAAC;AAElC,YAAY,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,CAAC;AAC3D,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,GAAG,WAAW,CAAC;AAQ5E,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACrC,CAAC;AA+DF,KAAK,kBAAkB,GACnB;IAAE,QAAQ,EAAE,QAAQ,CAAC;IAAC,SAAS,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GACrD;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GAChD;IAAE,QAAQ,EAAE,IAAI,CAAC;IAAC,SAAS,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAExD,wBAAgB,WAAW,CACzB,KAAK,EAAE,aAAa,GAAG,SAAS,EAChC,OAAO,GAAE,kBAAuB,GAC/B,kBAAkB,CAkGpB"}
@@ -0,0 +1,11 @@
1
+ import type { ViewModelInstance } from '../specs/ViewModel.nitro';
2
+ import type { UseRiveListResult } from '../types';
3
+ /**
4
+ * Hook for interacting with list ViewModel instance properties.
5
+ *
6
+ * @param path - The path to the list property
7
+ * @param viewModelInstance - The ViewModelInstance containing the list property
8
+ * @returns An object with list length, manipulation methods, and error state
9
+ */
10
+ export declare function useRiveList(path: string, viewModelInstance?: ViewModelInstance | null): UseRiveListResult;
11
+ //# sourceMappingURL=useRiveList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useRiveList.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useRiveList.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAC;AAElD;;;;;;GAMG;AACH,wBAAgB,WAAW,CACzB,IAAI,EAAE,MAAM,EACZ,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,IAAI,GAC3C,iBAAiB,CA6FnB"}
@@ -18,5 +18,10 @@ export declare function useRiveProperty<P extends ViewModelProperty, T>(viewMode
18
18
  getProperty: (vm: ViewModelInstance, path: string) => P | undefined;
19
19
  /** Optional override callback for property events (mainly used by triggers) */
20
20
  onPropertyEventOverride?: (...args: any[]) => void;
21
- }): [T | undefined, (value: T) => void, Error | null, P | undefined];
21
+ }): [
22
+ T | undefined,
23
+ (value: T | ((prevValue: T | undefined) => T)) => void,
24
+ Error | null,
25
+ P | undefined
26
+ ];
22
27
  //# sourceMappingURL=useRiveProperty.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useRiveProperty.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useRiveProperty.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,iBAAiB,EAAE,CAAC,EAC5D,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACvD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,4DAA4D;IAC5D,WAAW,EAAE,CAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC;IACpE,+EAA+E;IAC/E,uBAAuB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;CACpD,GACA,CAAC,CAAC,GAAG,SAAS,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,CAAC,GAAG,SAAS,CAAC,CAkElE"}
1
+ {"version":3,"file":"useRiveProperty.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useRiveProperty.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACvB,MAAM,0BAA0B,CAAC;AAElC;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,CAAC,SAAS,iBAAiB,EAAE,CAAC,EAC5D,iBAAiB,EAAE,iBAAiB,GAAG,IAAI,GAAG,SAAS,EACvD,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE;IACP,4DAA4D;IAC5D,WAAW,EAAE,CAAC,EAAE,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC,GAAG,SAAS,CAAC;IACpE,+EAA+E;IAC/E,uBAAuB,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,IAAI,CAAC;CACpD,GACA;IACD,CAAC,GAAG,SAAS;IACb,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,CAAC,KAAK,IAAI;IACtD,KAAK,GAAG,IAAI;IACZ,CAAC,GAAG,SAAS;CACd,CAoEA"}
@@ -0,0 +1,86 @@
1
+ import type { ViewModel, ViewModelInstance } from '../specs/ViewModel.nitro';
2
+ import type { RiveFile } from '../specs/RiveFile.nitro';
3
+ import type { RiveViewRef } from '../index';
4
+ export interface UseViewModelInstanceParams {
5
+ /**
6
+ * Get a specifically named instance from the ViewModel.
7
+ */
8
+ name?: string;
9
+ /**
10
+ * Create a new (blank) instance from the ViewModel.
11
+ */
12
+ useNew?: boolean;
13
+ /**
14
+ * If true, throws an error when the instance cannot be obtained.
15
+ * This is useful with Error Boundaries and ensures TypeScript knows
16
+ * the return value is non-null.
17
+ */
18
+ required?: boolean;
19
+ /**
20
+ * Called synchronously when a new instance is created, before the hook returns.
21
+ * Use this to set initial values that need to be available immediately.
22
+ * Note: This callback is excluded from deps - changing it won't recreate the instance.
23
+ */
24
+ onInit?: (instance: ViewModelInstance) => void;
25
+ }
26
+ type ViewModelSource = ViewModel | RiveFile | RiveViewRef;
27
+ /**
28
+ * Hook for getting a ViewModelInstance from a RiveFile, ViewModel, or RiveViewRef.
29
+ *
30
+ * @param source - The RiveFile, ViewModel, or RiveViewRef to get an instance from
31
+ * @param params - Configuration for which instance to retrieve (only used with ViewModel)
32
+ * @returns The ViewModelInstance or null if not found
33
+ *
34
+ * @example
35
+ * ```tsx
36
+ * // From RiveFile (get default instance)
37
+ * const { riveFile } = useRiveFile(require('./animation.riv'));
38
+ * const instance = useViewModelInstance(riveFile);
39
+ * ```
40
+ *
41
+ * @example
42
+ * ```tsx
43
+ * // From RiveViewRef (get auto-bound instance)
44
+ * const { riveViewRef, setHybridRef } = useRive();
45
+ * const instance = useViewModelInstance(riveViewRef);
46
+ * ```
47
+ *
48
+ * @example
49
+ * ```tsx
50
+ * // From ViewModel
51
+ * const viewModel = file.viewModelByName('main');
52
+ * const instance = useViewModelInstance(viewModel);
53
+ * ```
54
+ *
55
+ * @example
56
+ * ```tsx
57
+ * // Create a new blank instance from ViewModel
58
+ * const viewModel = file.viewModelByName('TodoItem');
59
+ * const newInstance = useViewModelInstance(viewModel, { useNew: true });
60
+ * ```
61
+ *
62
+ * @example
63
+ * ```tsx
64
+ * // With required: true (throws if null, use with Error Boundary)
65
+ * const instance = useViewModelInstance(riveFile, { required: true });
66
+ * // instance is guaranteed to be non-null here
67
+ * ```
68
+ *
69
+ * @example
70
+ * ```tsx
71
+ * // With onInit to set initial values synchronously
72
+ * const instance = useViewModelInstance(riveFile, {
73
+ * onInit: (vmi) => {
74
+ * vmi.numberProperty('count').set(initialCount);
75
+ * vmi.stringProperty('name').set(userName);
76
+ * }
77
+ * });
78
+ * // Values are already set here
79
+ * ```
80
+ */
81
+ export declare function useViewModelInstance(source: ViewModelSource, params: UseViewModelInstanceParams & {
82
+ required: true;
83
+ }): ViewModelInstance;
84
+ export declare function useViewModelInstance(source: ViewModelSource | null, params?: UseViewModelInstanceParams): ViewModelInstance | null;
85
+ export {};
86
+ //# sourceMappingURL=useViewModelInstance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useViewModelInstance.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useViewModelInstance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAG5C,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAChD;AAED,KAAK,eAAe,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;AAgD1D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,0BAA0B,GAAG;IAAE,QAAQ,EAAE,IAAI,CAAA;CAAE,GACtD,iBAAiB,CAAC;AACrB,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,eAAe,GAAG,IAAI,EAC9B,MAAM,CAAC,EAAE,0BAA0B,GAClC,iBAAiB,GAAG,IAAI,CAAC"}
@@ -9,7 +9,7 @@ export { RiveView, type RiveViewProps } from './core/RiveView';
9
9
  export type { RiveViewMethods };
10
10
  export type RiveViewRef = HybridView<NativeRiveViewProps, RiveViewTSMethods>;
11
11
  export type { RiveFile } from './specs/RiveFile.nitro';
12
- export type { ViewModel, ViewModelInstance, ViewModelNumberProperty, ViewModelStringProperty, ViewModelBooleanProperty, ViewModelColorProperty, ViewModelEnumProperty, ViewModelTriggerProperty, ViewModelImageProperty, } from './specs/ViewModel.nitro';
12
+ export type { ViewModel, ViewModelInstance, ViewModelNumberProperty, ViewModelStringProperty, ViewModelBooleanProperty, ViewModelColorProperty, ViewModelEnumProperty, ViewModelTriggerProperty, ViewModelImageProperty, ViewModelListProperty, } from './specs/ViewModel.nitro';
13
13
  export { Fit } from './core/Fit';
14
14
  export { Alignment } from './core/Alignment';
15
15
  export { RiveFileFactory } from './core/RiveFile';
@@ -26,7 +26,10 @@ export { useRiveBoolean } from './hooks/useRiveBoolean';
26
26
  export { useRiveEnum } from './hooks/useRiveEnum';
27
27
  export { useRiveColor } from './hooks/useRiveColor';
28
28
  export { useRiveTrigger } from './hooks/useRiveTrigger';
29
+ export { useRiveList } from './hooks/useRiveList';
30
+ export { useViewModelInstance } from './hooks/useViewModelInstance';
29
31
  export { useRiveFile } from './hooks/useRiveFile';
30
32
  export { type RiveFileInput } from './hooks/useRiveFile';
33
+ export { type SetValueAction } from './types';
31
34
  export { DataBindMode };
32
35
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,aAAa,IAAI,mBAAmB,EACzC,YAAY,EACZ,KAAK,cAAc,IAAI,uBAAuB,EAC/C,MAAM,wBAAwB,CAAC;AAEhC,qBAAa,cAAe,YAAW,uBAAuB;IAC5D,MAAM,EAAE,MAAM,CAAC;gBACH,IAAI,EAAE,MAAM;CAGzB;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,CAAC;AAChC,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;AAC7E,YAAY,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,KAAK,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EACL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,aAAa,IAAI,mBAAmB,EACzC,YAAY,EACZ,KAAK,cAAc,IAAI,uBAAuB,EAC/C,MAAM,wBAAwB,CAAC;AAEhC,qBAAa,cAAe,YAAW,uBAAuB;IAC5D,MAAM,EAAE,MAAM,CAAC;gBACH,IAAI,EAAE,MAAM;CAGzB;AAED,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC/D,YAAY,EAAE,eAAe,EAAE,CAAC;AAChC,MAAM,MAAM,WAAW,GAAG,UAAU,CAAC,mBAAmB,EAAE,iBAAiB,CAAC,CAAC;AAC7E,YAAY,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvD,YAAY,EACV,SAAS,EACT,iBAAiB,EACjB,uBAAuB,EACvB,uBAAuB,EACvB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,YAAY,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC7C,OAAO,EAAE,KAAK,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,KAAK,SAAS,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -48,6 +48,8 @@ export interface ViewModelInstance extends HybridObject<{
48
48
  triggerProperty(path: string): ViewModelTriggerProperty | undefined;
49
49
  /** Get an image property from the view model instance at the given path */
50
50
  imageProperty(path: string): ViewModelImageProperty | undefined;
51
+ /** Get a list property from the view model instance at the given path */
52
+ listProperty(path: string): ViewModelListProperty | undefined;
51
53
  }
52
54
  export interface ViewModelProperty extends HybridObject<{
53
55
  ios: 'swift';
@@ -100,4 +102,26 @@ export interface ViewModelImageProperty extends ViewModelProperty, ObservablePro
100
102
  /** Add a listener to the view model image property. Returns a function to remove the listener. */
101
103
  addListener(onChanged: () => void): () => void;
102
104
  }
105
+ /**
106
+ * A list property that contains a dynamic collection of {@link ViewModelInstance} objects.
107
+ * @see {@link https://rive.app/docs/runtimes/data-binding#lists Rive Data Binding Lists}
108
+ */
109
+ export interface ViewModelListProperty extends ViewModelProperty, ObservableProperty {
110
+ /** The number of instances in the list */
111
+ readonly length: number;
112
+ /** Get the instance at the given index */
113
+ getInstanceAt(index: number): ViewModelInstance | undefined;
114
+ /** Add an instance to the end of the list */
115
+ addInstance(instance: ViewModelInstance): void;
116
+ /** Add an instance at the given index, returns true if successful */
117
+ addInstanceAt(instance: ViewModelInstance, index: number): boolean;
118
+ /** Remove an instance from the list */
119
+ removeInstance(instance: ViewModelInstance): void;
120
+ /** Remove the instance at the given index */
121
+ removeInstanceAt(index: number): void;
122
+ /** Swap the instances at the given indices, returns true if successful */
123
+ swap(index1: number, index2: number): boolean;
124
+ /** Add a listener to be notified when the list changes. Returns a function to remove the listener. */
125
+ addListener(onChanged: () => void): () => void;
126
+ }
103
127
  //# sourceMappingURL=ViewModel.nitro.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ViewModel.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/ViewModel.nitro.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ViewModel.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/ViewModel.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAEnD;;;GAGG;AACH,MAAM,WAAW,SACf,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;IACzD,iDAAiD;IACjD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,2DAA2D;IAC3D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,iCAAiC;IACjC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uDAAuD;IACvD,qBAAqB,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAC;IACpE,sDAAsD;IACtD,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAClE,oDAAoD;IACpD,qBAAqB,IAAI,iBAAiB,GAAG,SAAS,CAAC;IACvD,8CAA8C;IAC9C,cAAc,IAAI,iBAAiB,GAAG,SAAS,CAAC;CACjD;AAED;;;;GAIG;AACH,MAAM,WAAW,iBACf,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;IACzD,0CAA0C;IAC1C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,2EAA2E;IAC3E,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS,CAAC;IAElE,2EAA2E;IAC3E,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS,CAAC;IAElE,4EAA4E;IAC5E,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS,CAAC;IAEpE,0EAA0E;IAC1E,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CAAC;IAEhE,0EAA0E;IAC1E,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAC;IAE9D,4EAA4E;IAC5E,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,wBAAwB,GAAG,SAAS,CAAC;IAEpE,2EAA2E;IAC3E,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,GAAG,SAAS,CAAC;IAEhE,yEAAyE;IACzE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAAC;CAC/D;AAED,MAAM,WAAW,iBACf,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;CAAG;AAE9D,MAAM,WAAW,kBAAkB;IACjC,6CAA6C;IAC7C,eAAe,IAAI,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,uBACf,SAAQ,iBAAiB,EACvB,kBAAkB;IACpB,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,mGAAmG;IACnG,WAAW,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC7D;AAED,MAAM,WAAW,uBACf,SAAQ,iBAAiB,EACvB,kBAAkB;IACpB,kDAAkD;IAClD,KAAK,EAAE,MAAM,CAAC;IACd,mGAAmG;IACnG,WAAW,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC7D;AAED,MAAM,WAAW,wBACf,SAAQ,iBAAiB,EACvB,kBAAkB;IACpB,mDAAmD;IACnD,KAAK,EAAE,OAAO,CAAC;IACf,oGAAoG;IACpG,WAAW,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC9D;AAED,MAAM,WAAW,sBACf,SAAQ,iBAAiB,EACvB,kBAAkB;IACpB,iDAAiD;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,kGAAkG;IAClG,WAAW,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC7D;AAED,MAAM,WAAW,qBACf,SAAQ,iBAAiB,EACvB,kBAAkB;IACpB,gDAAgD;IAChD,KAAK,EAAE,MAAM,CAAC;IACd,iGAAiG;IACjG,WAAW,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC7D;AAED,MAAM,WAAW,wBACf,SAAQ,iBAAiB,EACvB,kBAAkB;IACpB,oGAAoG;IACpG,WAAW,CAAC,SAAS,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;IAC/C,8CAA8C;IAC9C,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,MAAM,WAAW,sBACf,SAAQ,iBAAiB,EACvB,kBAAkB;IACpB,mCAAmC;IACnC,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,GAAG,IAAI,CAAC;IACxC,kGAAkG;IAClG,WAAW,CAAC,SAAS,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAChD;AAED;;;GAGG;AACH,MAAM,WAAW,qBACf,SAAQ,iBAAiB,EACvB,kBAAkB;IACpB,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,0CAA0C;IAC1C,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS,CAAC;IAC5D,6CAA6C;IAC7C,WAAW,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC/C,qEAAqE;IACrE,aAAa,CAAC,QAAQ,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC;IACnE,uCAAuC;IACvC,cAAc,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAClD,6CAA6C;IAC7C,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACtC,0EAA0E;IAC1E,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC;IAC9C,sGAAsG;IACtG,WAAW,CAAC,SAAS,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC;CAChD"}
@@ -1,13 +1,21 @@
1
+ /**
2
+ * A value or a function that computes a new value from the previous value.
3
+ * Similar to React's SetStateAction pattern.
4
+ */
5
+ export type SetValueAction<T> = T | ((prevValue: T | undefined) => T);
1
6
  export interface UseRivePropertyResult<T> {
2
7
  /**
3
8
  * The current value of the property.
4
9
  */
5
10
  value: T | undefined;
6
11
  /**
7
- * Set the value of the property.
8
- * @param value - The value to set the property to.
12
+ * Set the value of the property. Accepts either a direct value or
13
+ * a function that receives the previous value and returns the new value.
14
+ * @example
15
+ * setValue(10) // Set to 10
16
+ * setValue((prev) => (prev ?? 0) + 5) // Increment by 5
9
17
  */
10
- setValue: (value: T) => void;
18
+ setValue: (value: SetValueAction<T>) => void;
11
19
  /**
12
20
  * The error if the property is not found.
13
21
  */
@@ -30,4 +38,40 @@ export interface UseRiveTriggerResult {
30
38
  export type UseViewModelInstanceTriggerParameters = {
31
39
  onTrigger?: () => void;
32
40
  };
41
+ export interface UseRiveListResult {
42
+ /**
43
+ * The number of instances in the list.
44
+ */
45
+ length: number;
46
+ /**
47
+ * Get the instance at the given index.
48
+ */
49
+ getInstanceAt: (index: number) => import('./specs/ViewModel.nitro').ViewModelInstance | undefined;
50
+ /**
51
+ * Add an instance to the end of the list.
52
+ */
53
+ addInstance: (instance: import('./specs/ViewModel.nitro').ViewModelInstance) => void;
54
+ /**
55
+ * Add an instance at the given index.
56
+ * @returns true if successful
57
+ */
58
+ addInstanceAt: (instance: import('./specs/ViewModel.nitro').ViewModelInstance, index: number) => boolean;
59
+ /**
60
+ * Remove an instance from the list.
61
+ */
62
+ removeInstance: (instance: import('./specs/ViewModel.nitro').ViewModelInstance) => void;
63
+ /**
64
+ * Remove the instance at the given index.
65
+ */
66
+ removeInstanceAt: (index: number) => void;
67
+ /**
68
+ * Swap the instances at the given indices.
69
+ * @returns true if successful
70
+ */
71
+ swap: (index1: number, index2: number) => boolean;
72
+ /**
73
+ * The error if the property is not found.
74
+ */
75
+ error: Error | null;
76
+ }
33
77
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.tsx"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC;;OAEG;IACH,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;IACrB;;;OAGG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,MAAM,qCAAqC,GAAG;IAClD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/types.tsx"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,cAAc,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC;AAEtE,MAAM,WAAW,qBAAqB,CAAC,CAAC;IACtC;;OAEG;IACH,KAAK,EAAE,CAAC,GAAG,SAAS,CAAC;IACrB;;;;;;OAMG;IACH,QAAQ,EAAE,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC;IAC7C;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,MAAM,qCAAqC,GAAG;IAClD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAC;IACf;;OAEG;IACH,aAAa,EAAE,CACb,KAAK,EAAE,MAAM,KACV,OAAO,yBAAyB,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACrE;;OAEG;IACH,WAAW,EAAE,CACX,QAAQ,EAAE,OAAO,yBAAyB,EAAE,iBAAiB,KAC1D,IAAI,CAAC;IACV;;;OAGG;IACH,aAAa,EAAE,CACb,QAAQ,EAAE,OAAO,yBAAyB,EAAE,iBAAiB,EAC7D,KAAK,EAAE,MAAM,KACV,OAAO,CAAC;IACb;;OAEG;IACH,cAAc,EAAE,CACd,QAAQ,EAAE,OAAO,yBAAyB,EAAE,iBAAiB,KAC1D,IAAI,CAAC;IACV;;OAEG;IACH,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C;;;OAGG;IACH,IAAI,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;IAClD;;OAEG;IACH,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB"}
@@ -21,6 +21,8 @@ namespace margelo::nitro::rive { class HybridViewModelEnumPropertySpec; }
21
21
  namespace margelo::nitro::rive { class HybridViewModelTriggerPropertySpec; }
22
22
  // Forward declaration of `HybridViewModelImagePropertySpec` to properly resolve imports.
23
23
  namespace margelo::nitro::rive { class HybridViewModelImagePropertySpec; }
24
+ // Forward declaration of `HybridViewModelListPropertySpec` to properly resolve imports.
25
+ namespace margelo::nitro::rive { class HybridViewModelListPropertySpec; }
24
26
 
25
27
  #include <string>
26
28
  #include <memory>
@@ -39,6 +41,8 @@ namespace margelo::nitro::rive { class HybridViewModelImagePropertySpec; }
39
41
  #include "JHybridViewModelTriggerPropertySpec.hpp"
40
42
  #include "HybridViewModelImagePropertySpec.hpp"
41
43
  #include "JHybridViewModelImagePropertySpec.hpp"
44
+ #include "HybridViewModelListPropertySpec.hpp"
45
+ #include "JHybridViewModelListPropertySpec.hpp"
42
46
 
43
47
  namespace margelo::nitro::rive {
44
48
 
@@ -111,5 +115,10 @@ namespace margelo::nitro::rive {
111
115
  auto __result = method(_javaPart, jni::make_jstring(path));
112
116
  return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelImagePropertySpec>()) : std::nullopt;
113
117
  }
118
+ std::optional<std::shared_ptr<HybridViewModelListPropertySpec>> JHybridViewModelInstanceSpec::listProperty(const std::string& path) {
119
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelListPropertySpec::javaobject>(jni::alias_ref<jni::JString> /* path */)>("listProperty");
120
+ auto __result = method(_javaPart, jni::make_jstring(path));
121
+ return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelListPropertySpec>()) : std::nullopt;
122
+ }
114
123
 
115
124
  } // namespace margelo::nitro::rive
@@ -61,6 +61,7 @@ namespace margelo::nitro::rive {
61
61
  std::optional<std::shared_ptr<HybridViewModelEnumPropertySpec>> enumProperty(const std::string& path) override;
62
62
  std::optional<std::shared_ptr<HybridViewModelTriggerPropertySpec>> triggerProperty(const std::string& path) override;
63
63
  std::optional<std::shared_ptr<HybridViewModelImagePropertySpec>> imageProperty(const std::string& path) override;
64
+ std::optional<std::shared_ptr<HybridViewModelListPropertySpec>> listProperty(const std::string& path) override;
64
65
 
65
66
  private:
66
67
  friend HybridBase;
@@ -0,0 +1,102 @@
1
+ ///
2
+ /// JHybridViewModelListPropertySpec.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © 2025 Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "JHybridViewModelListPropertySpec.hpp"
9
+
10
+ // Forward declaration of `HybridViewModelInstanceSpec` to properly resolve imports.
11
+ namespace margelo::nitro::rive { class HybridViewModelInstanceSpec; }
12
+
13
+ #include <memory>
14
+ #include "HybridViewModelInstanceSpec.hpp"
15
+ #include <optional>
16
+ #include "JHybridViewModelInstanceSpec.hpp"
17
+ #include <functional>
18
+ #include "JFunc_void.hpp"
19
+ #include <NitroModules/JNICallable.hpp>
20
+
21
+ namespace margelo::nitro::rive {
22
+
23
+ jni::local_ref<JHybridViewModelListPropertySpec::jhybriddata> JHybridViewModelListPropertySpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
24
+ return makeCxxInstance(jThis);
25
+ }
26
+
27
+ void JHybridViewModelListPropertySpec::registerNatives() {
28
+ registerHybrid({
29
+ makeNativeMethod("initHybrid", JHybridViewModelListPropertySpec::initHybrid),
30
+ });
31
+ }
32
+
33
+ size_t JHybridViewModelListPropertySpec::getExternalMemorySize() noexcept {
34
+ static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
35
+ return method(_javaPart);
36
+ }
37
+
38
+ void JHybridViewModelListPropertySpec::dispose() noexcept {
39
+ static const auto method = javaClassStatic()->getMethod<void()>("dispose");
40
+ method(_javaPart);
41
+ }
42
+
43
+ std::string JHybridViewModelListPropertySpec::toString() {
44
+ static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
45
+ auto javaString = method(_javaPart);
46
+ return javaString->toStdString();
47
+ }
48
+
49
+ // Properties
50
+ double JHybridViewModelListPropertySpec::getLength() {
51
+ static const auto method = javaClassStatic()->getMethod<double()>("getLength");
52
+ auto __result = method(_javaPart);
53
+ return __result;
54
+ }
55
+
56
+ // Methods
57
+ std::optional<std::shared_ptr<HybridViewModelInstanceSpec>> JHybridViewModelListPropertySpec::getInstanceAt(double index) {
58
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelInstanceSpec::javaobject>(double /* index */)>("getInstanceAt");
59
+ auto __result = method(_javaPart, index);
60
+ return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelInstanceSpec>()) : std::nullopt;
61
+ }
62
+ void JHybridViewModelListPropertySpec::addInstance(const std::shared_ptr<HybridViewModelInstanceSpec>& instance) {
63
+ static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JHybridViewModelInstanceSpec::javaobject> /* instance */)>("addInstance");
64
+ method(_javaPart, std::dynamic_pointer_cast<JHybridViewModelInstanceSpec>(instance)->getJavaPart());
65
+ }
66
+ bool JHybridViewModelListPropertySpec::addInstanceAt(const std::shared_ptr<HybridViewModelInstanceSpec>& instance, double index) {
67
+ static const auto method = javaClassStatic()->getMethod<jboolean(jni::alias_ref<JHybridViewModelInstanceSpec::javaobject> /* instance */, double /* index */)>("addInstanceAt");
68
+ auto __result = method(_javaPart, std::dynamic_pointer_cast<JHybridViewModelInstanceSpec>(instance)->getJavaPart(), index);
69
+ return static_cast<bool>(__result);
70
+ }
71
+ void JHybridViewModelListPropertySpec::removeInstance(const std::shared_ptr<HybridViewModelInstanceSpec>& instance) {
72
+ static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JHybridViewModelInstanceSpec::javaobject> /* instance */)>("removeInstance");
73
+ method(_javaPart, std::dynamic_pointer_cast<JHybridViewModelInstanceSpec>(instance)->getJavaPart());
74
+ }
75
+ void JHybridViewModelListPropertySpec::removeInstanceAt(double index) {
76
+ static const auto method = javaClassStatic()->getMethod<void(double /* index */)>("removeInstanceAt");
77
+ method(_javaPart, index);
78
+ }
79
+ bool JHybridViewModelListPropertySpec::swap(double index1, double index2) {
80
+ static const auto method = javaClassStatic()->getMethod<jboolean(double /* index1 */, double /* index2 */)>("swap");
81
+ auto __result = method(_javaPart, index1, index2);
82
+ return static_cast<bool>(__result);
83
+ }
84
+ std::function<void()> JHybridViewModelListPropertySpec::addListener(const std::function<void()>& onChanged) {
85
+ static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>(jni::alias_ref<JFunc_void::javaobject> /* onChanged */)>("addListener_cxx");
86
+ auto __result = method(_javaPart, JFunc_void_cxx::fromCpp(onChanged));
87
+ return [&]() -> std::function<void()> {
88
+ if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
89
+ auto downcast = jni::static_ref_cast<JFunc_void_cxx::javaobject>(__result);
90
+ return downcast->cthis()->getFunction();
91
+ } else {
92
+ auto __resultRef = jni::make_global(__result);
93
+ return JNICallable<JFunc_void, void()>(std::move(__resultRef));
94
+ }
95
+ }();
96
+ }
97
+ void JHybridViewModelListPropertySpec::removeListeners() {
98
+ static const auto method = javaClassStatic()->getMethod<void()>("removeListeners");
99
+ method(_javaPart);
100
+ }
101
+
102
+ } // namespace margelo::nitro::rive