@use-voltra/ios 1.3.0 → 1.4.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (118) hide show
  1. package/build/cjs/index.js +9 -1
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/cjs/payload/component-ids.js +1 -0
  4. package/build/cjs/payload/component-ids.js.map +1 -1
  5. package/build/cjs/widgets/renderer.js +1 -1
  6. package/build/cjs/widgets/renderer.js.map +1 -1
  7. package/build/esm/index.js +3 -0
  8. package/build/esm/index.js.map +1 -1
  9. package/build/esm/payload/component-ids.js +1 -0
  10. package/build/esm/payload/component-ids.js.map +1 -1
  11. package/build/esm/widgets/renderer.js +1 -1
  12. package/build/esm/widgets/renderer.js.map +1 -1
  13. package/build/types/index.d.ts +7 -2
  14. package/build/types/index.d.ts.map +1 -1
  15. package/build/types/payload/component-ids.d.ts.map +1 -1
  16. package/build/types/styles/index.d.ts +1 -1
  17. package/build/types/styles/index.d.ts.map +1 -1
  18. package/build/types/styles/types.d.ts +89 -1
  19. package/build/types/styles/types.d.ts.map +1 -1
  20. package/build/types/types.d.ts +25 -1
  21. package/build/types/types.d.ts.map +1 -1
  22. package/package.json +3 -11
  23. package/build/cjs/VoltraModule.js +0 -6
  24. package/build/cjs/VoltraModule.js.map +0 -1
  25. package/build/cjs/client.js +0 -49
  26. package/build/cjs/client.js.map +0 -1
  27. package/build/cjs/components/VoltraLiveActivityPreview.js +0 -42
  28. package/build/cjs/components/VoltraLiveActivityPreview.js.map +0 -1
  29. package/build/cjs/components/VoltraView.js +0 -54
  30. package/build/cjs/components/VoltraView.js.map +0 -1
  31. package/build/cjs/components/VoltraWidgetPreview.js +0 -47
  32. package/build/cjs/components/VoltraWidgetPreview.js.map +0 -1
  33. package/build/cjs/events.js +0 -35
  34. package/build/cjs/events.js.map +0 -1
  35. package/build/cjs/helpers.js +0 -39
  36. package/build/cjs/helpers.js.map +0 -1
  37. package/build/cjs/live-activity/api.js +0 -277
  38. package/build/cjs/live-activity/api.js.map +0 -1
  39. package/build/cjs/logger.js +0 -36
  40. package/build/cjs/logger.js.map +0 -1
  41. package/build/cjs/preload.js +0 -115
  42. package/build/cjs/preload.js.map +0 -1
  43. package/build/cjs/utils/assertRunningOnApple.js +0 -13
  44. package/build/cjs/utils/assertRunningOnApple.js.map +0 -1
  45. package/build/cjs/utils/helpers.js +0 -39
  46. package/build/cjs/utils/helpers.js.map +0 -1
  47. package/build/cjs/utils/index.js +0 -19
  48. package/build/cjs/utils/index.js.map +0 -1
  49. package/build/cjs/utils/useUpdateOnHMR.js +0 -27
  50. package/build/cjs/utils/useUpdateOnHMR.js.map +0 -1
  51. package/build/cjs/widgets/server-credentials.js +0 -62
  52. package/build/cjs/widgets/server-credentials.js.map +0 -1
  53. package/build/cjs/widgets/widget-api.js +0 -196
  54. package/build/cjs/widgets/widget-api.js.map +0 -1
  55. package/build/esm/VoltraModule.js +0 -4
  56. package/build/esm/VoltraModule.js.map +0 -1
  57. package/build/esm/client.js +0 -10
  58. package/build/esm/client.js.map +0 -1
  59. package/build/esm/components/VoltraLiveActivityPreview.js +0 -39
  60. package/build/esm/components/VoltraLiveActivityPreview.js.map +0 -1
  61. package/build/esm/components/VoltraView.js +0 -51
  62. package/build/esm/components/VoltraView.js.map +0 -1
  63. package/build/esm/components/VoltraWidgetPreview.js +0 -44
  64. package/build/esm/components/VoltraWidgetPreview.js.map +0 -1
  65. package/build/esm/events.js +0 -29
  66. package/build/esm/events.js.map +0 -1
  67. package/build/esm/helpers.js +0 -32
  68. package/build/esm/helpers.js.map +0 -1
  69. package/build/esm/live-activity/api.js +0 -265
  70. package/build/esm/live-activity/api.js.map +0 -1
  71. package/build/esm/logger.js +0 -33
  72. package/build/esm/logger.js.map +0 -1
  73. package/build/esm/preload.js +0 -107
  74. package/build/esm/preload.js.map +0 -1
  75. package/build/esm/utils/assertRunningOnApple.js +0 -9
  76. package/build/esm/utils/assertRunningOnApple.js.map +0 -1
  77. package/build/esm/utils/helpers.js +0 -32
  78. package/build/esm/utils/helpers.js.map +0 -1
  79. package/build/esm/utils/index.js +0 -3
  80. package/build/esm/utils/index.js.map +0 -1
  81. package/build/esm/utils/useUpdateOnHMR.js +0 -23
  82. package/build/esm/utils/useUpdateOnHMR.js.map +0 -1
  83. package/build/esm/widgets/server-credentials.js +0 -55
  84. package/build/esm/widgets/server-credentials.js.map +0 -1
  85. package/build/esm/widgets/widget-api.js +0 -184
  86. package/build/esm/widgets/widget-api.js.map +0 -1
  87. package/build/types/VoltraModule.d.ts +0 -143
  88. package/build/types/VoltraModule.d.ts.map +0 -1
  89. package/build/types/client.d.ts +0 -13
  90. package/build/types/client.d.ts.map +0 -1
  91. package/build/types/components/VoltraLiveActivityPreview.d.ts +0 -28
  92. package/build/types/components/VoltraLiveActivityPreview.d.ts.map +0 -1
  93. package/build/types/components/VoltraView.d.ts +0 -43
  94. package/build/types/components/VoltraView.d.ts.map +0 -1
  95. package/build/types/components/VoltraWidgetPreview.d.ts +0 -32
  96. package/build/types/components/VoltraWidgetPreview.d.ts.map +0 -1
  97. package/build/types/events.d.ts +0 -49
  98. package/build/types/events.d.ts.map +0 -1
  99. package/build/types/helpers.d.ts +0 -12
  100. package/build/types/helpers.d.ts.map +0 -1
  101. package/build/types/live-activity/api.d.ts +0 -189
  102. package/build/types/live-activity/api.d.ts.map +0 -1
  103. package/build/types/logger.d.ts +0 -16
  104. package/build/types/logger.d.ts.map +0 -1
  105. package/build/types/preload.d.ts +0 -67
  106. package/build/types/preload.d.ts.map +0 -1
  107. package/build/types/utils/assertRunningOnApple.d.ts +0 -2
  108. package/build/types/utils/assertRunningOnApple.d.ts.map +0 -1
  109. package/build/types/utils/helpers.d.ts +0 -12
  110. package/build/types/utils/helpers.d.ts.map +0 -1
  111. package/build/types/utils/index.d.ts +0 -3
  112. package/build/types/utils/index.d.ts.map +0 -1
  113. package/build/types/utils/useUpdateOnHMR.d.ts +0 -9
  114. package/build/types/utils/useUpdateOnHMR.d.ts.map +0 -1
  115. package/build/types/widgets/server-credentials.d.ts +0 -49
  116. package/build/types/widgets/server-credentials.d.ts.map +0 -1
  117. package/build/types/widgets/widget-api.d.ts +0 -146
  118. package/build/types/widgets/widget-api.d.ts.map +0 -1
@@ -1,62 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.setWidgetServerCredentials = setWidgetServerCredentials;
7
- exports.clearWidgetServerCredentials = clearWidgetServerCredentials;
8
- const VoltraModule_js_1 = __importDefault(require("../VoltraModule.js"));
9
- /**
10
- * Store server credentials for widget server-driven updates.
11
- *
12
- * On iOS, credentials are stored in the Shared Keychain (accessible by both the
13
- * main app and widget extension) with `kSecAttrAccessibleAfterFirstUnlock` to allow
14
- * background access.
15
- *
16
- * On Android, credentials are encrypted via Google Tink (AES-256-GCM) and
17
- * persisted in Jetpack DataStore. The encryption key is managed by the Android
18
- * Keystore. The WorkManager background worker can access this storage directly
19
- * since widgets are part of the main app binary.
20
- *
21
- * Call this after the user logs in to enable authenticated widget updates.
22
- *
23
- * @param credentials - The server credentials to store
24
- *
25
- * @example
26
- * ```typescript
27
- * import { setWidgetServerCredentials } from 'voltra'
28
- *
29
- * // After user login
30
- * await setWidgetServerCredentials({
31
- * token: userAccessToken,
32
- * headers: {
33
- * 'X-App-Version': '1.0.0',
34
- * }
35
- * })
36
- * ```
37
- */
38
- async function setWidgetServerCredentials(credentials) {
39
- if (!credentials.token) {
40
- throw new Error('[Voltra][iOS] setWidgetServerCredentials: token is required');
41
- }
42
- return VoltraModule_js_1.default.setWidgetServerCredentials(credentials);
43
- }
44
- /**
45
- * Clear stored server credentials for widget updates.
46
- *
47
- * Call this when the user logs out to stop authenticated widget updates.
48
- * All widgets are automatically reloaded after clearing credentials so they
49
- * revert to their default/unauthenticated state.
50
- *
51
- * @example
52
- * ```typescript
53
- * import { clearWidgetServerCredentials } from 'voltra'
54
- *
55
- * // On user logout
56
- * await clearWidgetServerCredentials()
57
- * ```
58
- */
59
- async function clearWidgetServerCredentials() {
60
- return VoltraModule_js_1.default.clearWidgetServerCredentials();
61
- }
62
- //# sourceMappingURL=server-credentials.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"server-credentials.js","sourceRoot":"","sources":["../../../src/widgets/server-credentials.ts"],"names":[],"mappings":";;;;;AAmCA,gEAMC;AAiBD,oEAEC;AA3DD,yEAA6C;AAK7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACI,KAAK,UAAU,0BAA0B,CAAC,WAAoC;IACnF,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;IAChF,CAAC;IAED,OAAO,yBAAY,CAAC,0BAA0B,CAAC,WAAW,CAAC,CAAA;AAC7D,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACI,KAAK,UAAU,4BAA4B;IAChD,OAAO,yBAAY,CAAC,4BAA4B,EAAE,CAAA;AACpD,CAAC"}
@@ -1,196 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getActiveWidgets = exports.scheduleWidget = exports.clearAllWidgets = exports.clearWidget = exports.reloadWidgets = exports.updateWidget = void 0;
7
- const assertRunningOnApple_js_1 = require("../utils/assertRunningOnApple.js");
8
- const VoltraModule_js_1 = __importDefault(require("../VoltraModule.js"));
9
- const renderer_js_1 = require("./renderer.js");
10
- /**
11
- * Update a home screen widget with new content.
12
- *
13
- * The content will be stored in App Group storage and the widget timeline
14
- * will be reloaded to display the new content.
15
- *
16
- * @param widgetId - The widget identifier (as defined in your config plugin)
17
- * @param variants - An object mapping widget families to specific content.
18
- * Each key corresponds to a widget size family.
19
- * @param options - Optional settings like deep link URL
20
- *
21
- * @example Different content per size
22
- * ```tsx
23
- * import { updateWidget, Voltra } from 'voltra'
24
- *
25
- * await updateWidget('weather', {
26
- * systemSmall: <Voltra.Text fontSize={32}>72°F</Voltra.Text>,
27
- * systemMedium: (
28
- * <Voltra.HStack>
29
- * <Voltra.Text fontSize={32}>72°F</Voltra.Text>
30
- * <Voltra.VStack>
31
- * <Voltra.Text>Sunny</Voltra.Text>
32
- * <Voltra.Text>High: 78° Low: 65°</Voltra.Text>
33
- * </Voltra.VStack>
34
- * </Voltra.HStack>
35
- * ),
36
- * }, { deepLinkUrl: '/weather' })
37
- * ```
38
- */
39
- const updateWidget = async (widgetId, variants, options) => {
40
- if (!(0, assertRunningOnApple_js_1.assertRunningOnApple)())
41
- return Promise.resolve();
42
- const payload = (0, renderer_js_1.renderWidgetToString)(variants);
43
- return VoltraModule_js_1.default.updateWidget(widgetId, payload, {
44
- deepLinkUrl: options?.deepLinkUrl,
45
- });
46
- };
47
- exports.updateWidget = updateWidget;
48
- /**
49
- * Reload widget timelines to refresh their content.
50
- *
51
- * Use this after updating data that widgets depend on (e.g., after preloading
52
- * new images) to force them to re-render.
53
- *
54
- * @param widgetIds - Optional array of widget IDs to reload. If omitted, reloads all widgets.
55
- *
56
- * @example
57
- * ```typescript
58
- * // Reload specific widgets
59
- * await reloadWidgets(['weather', 'calendar'])
60
- *
61
- * // Reload all widgets
62
- * await reloadWidgets()
63
- * ```
64
- */
65
- const reloadWidgets = async (widgetIds) => {
66
- if (!(0, assertRunningOnApple_js_1.assertRunningOnApple)())
67
- return Promise.resolve();
68
- return VoltraModule_js_1.default.reloadWidgets(widgetIds ?? null);
69
- };
70
- exports.reloadWidgets = reloadWidgets;
71
- /**
72
- * Clear a widget's stored data.
73
- *
74
- * This removes the JSON content and deep link URL for the specified widget,
75
- * causing it to show its placeholder state.
76
- *
77
- * @param widgetId - The widget identifier to clear
78
- *
79
- * @example
80
- * ```typescript
81
- * await clearWidget('weather')
82
- * ```
83
- */
84
- const clearWidget = async (widgetId) => {
85
- if (!(0, assertRunningOnApple_js_1.assertRunningOnApple)())
86
- return Promise.resolve();
87
- return VoltraModule_js_1.default.clearWidget(widgetId);
88
- };
89
- exports.clearWidget = clearWidget;
90
- /**
91
- * Clear all widgets' stored data.
92
- *
93
- * This removes the JSON content and deep link URLs for all configured widgets,
94
- * causing them to show their placeholder states.
95
- *
96
- * @example
97
- * ```typescript
98
- * await clearAllWidgets()
99
- * ```
100
- */
101
- const clearAllWidgets = async () => {
102
- if (!(0, assertRunningOnApple_js_1.assertRunningOnApple)())
103
- return Promise.resolve();
104
- return VoltraModule_js_1.default.clearAllWidgets();
105
- };
106
- exports.clearAllWidgets = clearAllWidgets;
107
- /**
108
- * Schedule a widget timeline with multiple entries to be displayed at future times.
109
- *
110
- * iOS will automatically display each entry at its scheduled time, even when your
111
- * app is not running. This allows you to batch widget updates in advance.
112
- *
113
- * @param widgetId - The widget identifier (as defined in your config plugin)
114
- * @param entries - Array of scheduled entries, each with a date and content variants
115
- * @param options - Optional settings like reload policy
116
- *
117
- * @example Schedule weather updates throughout the day
118
- * ```tsx
119
- * import { scheduleWidget, Voltra } from 'voltra'
120
- *
121
- * await scheduleWidget('weather', [
122
- * {
123
- * date: new Date('2026-01-16T09:00:00'),
124
- * variants: {
125
- * systemSmall: <Voltra.Text>Morning: 65°F</Voltra.Text>
126
- * }
127
- * },
128
- * {
129
- * date: new Date('2026-01-16T15:00:00'),
130
- * variants: {
131
- * systemSmall: <Voltra.Text>Afternoon: 72°F</Voltra.Text>
132
- * }
133
- * },
134
- * {
135
- * date: new Date('2026-01-16T21:00:00'),
136
- * variants: {
137
- * systemSmall: <Voltra.Text>Evening: 68°F</Voltra.Text>
138
- * }
139
- * }
140
- * ], {
141
- * policy: { type: 'atEnd' } // Request new timeline when last entry expires
142
- * })
143
- * ```
144
- *
145
- * @example With deep links per entry
146
- * ```tsx
147
- * await scheduleWidget('news', [
148
- * {
149
- * date: new Date('2026-01-16T08:00:00'),
150
- * variants: { systemSmall: <Voltra.Text>Morning News</Voltra.Text> },
151
- * deepLinkUrl: '/news/morning'
152
- * },
153
- * {
154
- * date: new Date('2026-01-16T20:00:00'),
155
- * variants: { systemSmall: <Voltra.Text>Evening News</Voltra.Text> },
156
- * deepLinkUrl: '/news/evening'
157
- * }
158
- * ])
159
- * ```
160
- */
161
- const scheduleWidget = async (widgetId, entries) => {
162
- if (!(0, assertRunningOnApple_js_1.assertRunningOnApple)())
163
- return Promise.resolve();
164
- // Render each entry's variants to JSON
165
- const renderedEntries = entries.map((entry) => ({
166
- date: entry.date.getTime(), // Convert to milliseconds timestamp
167
- json: (0, renderer_js_1.renderWidgetToString)(entry.variants),
168
- deepLinkUrl: entry.deepLinkUrl,
169
- }));
170
- // Prepare timeline data (always use 'never' policy since widget extension can't regenerate content)
171
- const timelineData = {
172
- entries: renderedEntries,
173
- policy: { type: 'never' },
174
- };
175
- const timelineJson = JSON.stringify(timelineData);
176
- return VoltraModule_js_1.default.scheduleWidget(widgetId, timelineJson);
177
- };
178
- exports.scheduleWidget = scheduleWidget;
179
- /**
180
- * Fetches all active widget configurations for the containing app on iOS.
181
- *
182
- * @returns A promise that resolves to an array of active widget configurations.
183
- *
184
- * @example
185
- * ```typescript
186
- * const widgets = await getActiveWidgets()
187
- * console.log('Active widgets:', widgets)
188
- * ```
189
- */
190
- const getActiveWidgets = async () => {
191
- if (!(0, assertRunningOnApple_js_1.assertRunningOnApple)())
192
- return [];
193
- return VoltraModule_js_1.default.getActiveWidgets();
194
- };
195
- exports.getActiveWidgets = getActiveWidgets;
196
- //# sourceMappingURL=widget-api.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"widget-api.js","sourceRoot":"","sources":["../../../src/widgets/widget-api.ts"],"names":[],"mappings":";;;;;;AACA,8EAAuE;AACvE,yEAA6C;AAC7C,+CAAoD;AAOpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACI,MAAM,YAAY,GAAG,KAAK,EAC/B,QAAgB,EAChB,QAAwB,EACxB,OAA6B,EACd,EAAE;IACjB,IAAI,CAAC,IAAA,8CAAoB,GAAE;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAErD,MAAM,OAAO,GAAG,IAAA,kCAAoB,EAAC,QAAQ,CAAC,CAAA;IAE9C,OAAO,yBAAY,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,EAAE;QAClD,WAAW,EAAE,OAAO,EAAE,WAAW;KAClC,CAAC,CAAA;AACJ,CAAC,CAAA;AAZY,QAAA,YAAY,gBAYxB;AAED;;;;;;;;;;;;;;;;GAgBG;AACI,MAAM,aAAa,GAAG,KAAK,EAAE,SAAoB,EAAiB,EAAE;IACzE,IAAI,CAAC,IAAA,8CAAoB,GAAE;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAErD,OAAO,yBAAY,CAAC,aAAa,CAAC,SAAS,IAAI,IAAI,CAAC,CAAA;AACtD,CAAC,CAAA;AAJY,QAAA,aAAa,iBAIzB;AAED;;;;;;;;;;;;GAYG;AACI,MAAM,WAAW,GAAG,KAAK,EAAE,QAAgB,EAAiB,EAAE;IACnE,IAAI,CAAC,IAAA,8CAAoB,GAAE;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAErD,OAAO,yBAAY,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAA;AAC3C,CAAC,CAAA;AAJY,QAAA,WAAW,eAIvB;AAED;;;;;;;;;;GAUG;AACI,MAAM,eAAe,GAAG,KAAK,IAAmB,EAAE;IACvD,IAAI,CAAC,IAAA,8CAAoB,GAAE;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAErD,OAAO,yBAAY,CAAC,eAAe,EAAE,CAAA;AACvC,CAAC,CAAA;AAJY,QAAA,eAAe,mBAI3B;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACI,MAAM,cAAc,GAAG,KAAK,EAAE,QAAgB,EAAE,OAA+B,EAAiB,EAAE;IACvG,IAAI,CAAC,IAAA,8CAAoB,GAAE;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAA;IAErD,uCAAuC;IACvC,MAAM,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,oCAAoC;QAChE,IAAI,EAAE,IAAA,kCAAoB,EAAC,KAAK,CAAC,QAAQ,CAAC;QAC1C,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC,CAAC,CAAA;IAEH,oGAAoG;IACpG,MAAM,YAAY,GAAG;QACnB,OAAO,EAAE,eAAe;QACxB,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;KAC1B,CAAA;IAED,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAA;IAEjD,OAAO,yBAAY,CAAC,cAAc,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAA;AAC5D,CAAC,CAAA;AAnBY,QAAA,cAAc,kBAmB1B;AAED;;;;;;;;;;GAUG;AACI,MAAM,gBAAgB,GAAG,KAAK,IAA2B,EAAE;IAChE,IAAI,CAAC,IAAA,8CAAoB,GAAE;QAAE,OAAO,EAAE,CAAA;IAEtC,OAAO,yBAAY,CAAC,gBAAgB,EAAE,CAAA;AACxC,CAAC,CAAA;AAJY,QAAA,gBAAgB,oBAI5B"}
@@ -1,4 +0,0 @@
1
- import { requireNativeModule } from 'expo';
2
- const VoltraModule = requireNativeModule('VoltraModule');
3
- export default VoltraModule;
4
- //# sourceMappingURL=VoltraModule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VoltraModule.js","sourceRoot":"","sources":["../../src/VoltraModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,MAAM,CAAA;AA4K1C,MAAM,YAAY,GAAG,mBAAmB,CAAsB,cAAc,CAAC,CAAA;AAE7E,eAAe,YAAY,CAAA"}
@@ -1,10 +0,0 @@
1
- export { VoltraLiveActivityPreview, } from './components/VoltraLiveActivityPreview.js';
2
- export { VoltraView } from './components/VoltraView.js';
3
- export { VoltraWidgetPreview } from './components/VoltraWidgetPreview.js';
4
- export * from './events.js';
5
- export { isGlassSupported, isHeadless } from './helpers.js';
6
- export { endAllLiveActivities, isLiveActivityActive, startLiveActivity, stopLiveActivity, updateLiveActivity, useLiveActivity, } from './live-activity/api.js';
7
- export { clearPreloadedImages, preloadImages, reloadLiveActivities, } from './preload.js';
8
- export { clearWidgetServerCredentials, setWidgetServerCredentials, } from './widgets/server-credentials.js';
9
- export { clearAllWidgets, clearWidget, getActiveWidgets, reloadWidgets, scheduleWidget, updateWidget, } from './widgets/widget-api.js';
10
- //# sourceMappingURL=client.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,GAE1B,MAAM,2CAA2C,CAAA;AAClD,OAAO,EAAE,UAAU,EAAwB,MAAM,4BAA4B,CAAA;AAC7E,OAAO,EAAE,mBAAmB,EAAiC,MAAM,qCAAqC,CAAA;AACxG,cAAc,aAAa,CAAA;AAC3B,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAC3D,OAAO,EACL,oBAAoB,EAEpB,oBAAoB,EAEpB,iBAAiB,EAEjB,gBAAgB,EAChB,kBAAkB,EAElB,eAAe,GAGhB,MAAM,wBAAwB,CAAA;AAE/B,OAAO,EACL,oBAAoB,EAEpB,aAAa,EAEb,oBAAoB,GACrB,MAAM,cAAc,CAAA;AAErB,OAAO,EACL,4BAA4B,EAC5B,0BAA0B,GAE3B,MAAM,iCAAiC,CAAA;AAExC,OAAO,EACL,eAAe,EACf,WAAW,EACX,gBAAgB,EAChB,aAAa,EAEb,cAAc,EACd,YAAY,GAEb,MAAM,yBAAyB,CAAA"}
@@ -1,39 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { VoltraView } from './VoltraView.js';
3
- /**
4
- * Dimensions for iOS lock screen Live Activity in points (approximate)
5
- * Based on iPhone 14 Pro/15 Pro dimensions
6
- */
7
- const LOCK_SCREEN_DIMENSIONS = {
8
- width: 364,
9
- height: 160,
10
- };
11
- /**
12
- * A preview component that renders Voltra JSX lock screen Live Activity content
13
- * at the exact dimensions of a lock screen Live Activity. Useful for testing
14
- * Live Activity layouts.
15
- *
16
- * This component extends VoltraView but automatically sets the width and height
17
- * to match the lock screen Live Activity dimensions. Live Activities cannot be
18
- * fully emulated, so this provides a close approximation for development.
19
- *
20
- * @example
21
- * ```tsx
22
- * <VoltraLiveActivityPreview
23
- * style={{ backgroundColor: 'lightgray' }}
24
- * >
25
- * <Voltra.Text>Hello Live Activity!</Voltra.Text>
26
- * </VoltraLiveActivityPreview>
27
- * ```
28
- */
29
- export function VoltraLiveActivityPreview({ style, children, ...voltraViewProps }) {
30
- const previewStyle = [
31
- {
32
- width: LOCK_SCREEN_DIMENSIONS.width,
33
- height: LOCK_SCREEN_DIMENSIONS.height,
34
- },
35
- style,
36
- ];
37
- return (_jsx(VoltraView, { ...voltraViewProps, style: previewStyle, children: children }));
38
- }
39
- //# sourceMappingURL=VoltraLiveActivityPreview.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VoltraLiveActivityPreview.js","sourceRoot":"","sources":["../../../src/components/VoltraLiveActivityPreview.tsx"],"names":[],"mappings":";AAGA,OAAO,EAAE,UAAU,EAAmB,MAAM,iBAAiB,CAAA;AAE7D;;;GAGG;AACH,MAAM,sBAAsB,GAAG;IAC7B,KAAK,EAAE,GAAG;IACV,MAAM,EAAE,GAAG;CACZ,CAAA;AASD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,yBAAyB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,eAAe,EAAkC;IAC/G,MAAM,YAAY,GAAyB;QACzC;YACE,KAAK,EAAE,sBAAsB,CAAC,KAAK;YACnC,MAAM,EAAE,sBAAsB,CAAC,MAAM;SACtC;QACD,KAAK;KACN,CAAA;IAED,OAAO,CACL,KAAC,UAAU,OAAK,eAAe,EAAE,KAAK,EAAE,YAAY,YACjD,QAAQ,GACE,CACd,CAAA;AACH,CAAC"}
@@ -1,51 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { requireNativeView } from 'expo';
3
- import { useEffect, useMemo } from 'react';
4
- import { View } from 'react-native';
5
- import { addVoltraListener } from '../events.js';
6
- import { renderVoltraVariantToJson } from '../renderer/index.js';
7
- const NativeVoltraView = requireNativeView('VoltraModule');
8
- // Generate a unique ID for views that don't have one
9
- const generateViewId = () => `voltra-view-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
10
- const voltraViewStyle = {
11
- flex: 1,
12
- };
13
- /**
14
- * A React Native component that renders Voltra UI using SwiftUI in the native layer.
15
- * This component accepts Voltra JSX components as children and renders them as SwiftUI components.
16
- *
17
- * @example
18
- * ```tsx
19
- * <VoltraView id="my-view" style={{ width: 200, height: 100 }}>
20
- * <Voltra.VStack>
21
- * <Voltra.Text>Hello World</Voltra.Text>
22
- * </Voltra.VStack>
23
- * </VoltraView>
24
- * ```
25
- */
26
- export function VoltraView({ id, children, style, onInteraction, testID }) {
27
- // Generate a stable ID if not provided
28
- const viewId = useMemo(() => id || generateViewId(), [id]);
29
- const json = renderVoltraVariantToJson(children);
30
- const payload = JSON.stringify(json);
31
- // Subscribe to interaction events and filter by this view's ID
32
- useEffect(() => {
33
- if (!onInteraction)
34
- return;
35
- const subscription = addVoltraListener('interaction', (event) => {
36
- // Only forward events from this view
37
- if (event.source === viewId) {
38
- onInteraction({
39
- type: 'interaction',
40
- source: event.source,
41
- timestamp: event.timestamp,
42
- identifier: event.identifier,
43
- payload: event.payload,
44
- });
45
- }
46
- });
47
- return () => subscription.remove();
48
- }, [viewId, onInteraction]);
49
- return (_jsx(View, { testID: testID, style: style, children: _jsx(NativeVoltraView, { payload: payload, viewId: viewId, style: voltraViewStyle }) }));
50
- }
51
- //# sourceMappingURL=VoltraView.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VoltraView.js","sourceRoot":"","sources":["../../../src/components/VoltraView.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAA;AACxC,OAAc,EAAa,SAAS,EAAE,OAAO,EAAE,MAAM,OAAO,CAAA;AAC5D,OAAO,EAAa,IAAI,EAAa,MAAM,cAAc,CAAA;AAEzD,OAAO,EAAE,iBAAiB,EAA0B,MAAM,cAAc,CAAA;AACxE,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAA;AAEhE,MAAM,gBAAgB,GAAG,iBAAiB,CAAC,cAAc,CAAC,CAAA;AAE1D,qDAAqD;AACrD,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,eAAe,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;AAEtG,MAAM,eAAe,GAAc;IACjC,IAAI,EAAE,CAAC;CACR,CAAA;AA4BD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,UAAU,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAmB;IACxF,uCAAuC;IACvC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,EAAE,IAAI,cAAc,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAA;IAE1D,MAAM,IAAI,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAA;IAChD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAA;IAEpC,+DAA+D;IAC/D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,aAAa;YAAE,OAAM;QAE1B,MAAM,YAAY,GAAG,iBAAiB,CAAC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE;YAC9D,qCAAqC;YACrC,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC5B,aAAa,CAAC;oBACZ,IAAI,EAAE,aAAa;oBACnB,MAAM,EAAE,KAAK,CAAC,MAAM;oBACpB,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;oBAC5B,OAAO,EAAE,KAAK,CAAC,OAAO;iBACvB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC,CAAC,CAAA;QAEF,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,CAAA;IACpC,CAAC,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAA;IAE3B,OAAO,CACL,KAAC,IAAI,IAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,YAChC,KAAC,gBAAgB,IAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAI,GACzE,CACR,CAAA;AACH,CAAC"}
@@ -1,44 +0,0 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
2
- import { VoltraView } from './VoltraView.js';
3
- /**
4
- * Dimensions for iOS widget families in points (approximate)
5
- * Based on iPhone 14 Pro/15 Pro dimensions
6
- */
7
- const WIDGET_DIMENSIONS = {
8
- systemSmall: { width: 170, height: 170 },
9
- systemMedium: { width: 364, height: 170 },
10
- systemLarge: { width: 364, height: 382 },
11
- systemExtraLarge: { width: 364, height: 768 }, // Approximate for iPad
12
- accessoryCircular: { width: 76, height: 76 },
13
- accessoryRectangular: { width: 172, height: 76 },
14
- accessoryInline: { width: 172, height: 40 }, // Approximate
15
- };
16
- /**
17
- * A preview component that renders Voltra JSX content at the exact dimensions
18
- * of a specific iOS widget family. Useful for testing widget layouts.
19
- *
20
- * This component extends VoltraView but automatically sets the width and height
21
- * to match the specified widget family's dimensions.
22
- *
23
- * @example
24
- * ```tsx
25
- * <VoltraWidgetPreview
26
- * family="systemSmall"
27
- * style={{ backgroundColor: 'lightgray' }}
28
- * >
29
- * <Voltra.Text>Hello Widget!</Voltra.Text>
30
- * </VoltraWidgetPreview>
31
- * ```
32
- */
33
- export function VoltraWidgetPreview({ family, style, children, ...voltraViewProps }) {
34
- const dimensions = WIDGET_DIMENSIONS[family];
35
- const previewStyle = [
36
- {
37
- width: dimensions.width,
38
- height: dimensions.height,
39
- },
40
- style,
41
- ];
42
- return (_jsx(VoltraView, { ...voltraViewProps, style: previewStyle, children: children }));
43
- }
44
- //# sourceMappingURL=VoltraWidgetPreview.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"VoltraWidgetPreview.js","sourceRoot":"","sources":["../../../src/components/VoltraWidgetPreview.tsx"],"names":[],"mappings":";AAIA,OAAO,EAAE,UAAU,EAAmB,MAAM,iBAAiB,CAAA;AAE7D;;;GAGG;AACH,MAAM,iBAAiB,GAA4D;IACjF,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IACxC,YAAY,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IACzC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;IACxC,gBAAgB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,uBAAuB;IACtE,iBAAiB,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAC5C,oBAAoB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE;IAChD,eAAe,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,cAAc;CAC5D,CAAA;AAaD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,mBAAmB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,eAAe,EAA4B;IAC3G,MAAM,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAA;IAC5C,MAAM,YAAY,GAAyB;QACzC;YACE,KAAK,EAAE,UAAU,CAAC,KAAK;YACvB,MAAM,EAAE,UAAU,CAAC,MAAM;SAC1B;QACD,KAAK;KACN,CAAA;IAED,OAAO,CACL,KAAC,UAAU,OAAK,eAAe,EAAE,KAAK,EAAE,YAAY,YACjD,QAAQ,GACE,CACd,CAAA;AACH,CAAC"}
@@ -1,29 +0,0 @@
1
- import { Platform } from 'react-native';
2
- import VoltraModule from './VoltraModule.js';
3
- const noopSubscription = {
4
- remove: () => { },
5
- };
6
- /**
7
- * Add a listener for Voltra events.
8
- *
9
- * Supported events:
10
- * - `interaction`: User interactions with widgets (buttons, switches, checkboxes) (iOS only)
11
- * - `stateChange`: Live Activity state changes (iOS only)
12
- * - `activityTokenReceived`: Push token for Live Activity (iOS only)
13
- * - `activityPushToStartTokenReceived`: Push-to-start token (iOS only)
14
- *
15
- * Note: On Android, interactions open the app directly (optionally via deep links)
16
- * instead of emitting background events.
17
- *
18
- * @param event The event type to listen for
19
- * @param listener Callback function to handle the event
20
- * @returns EventSubscription with a remove() method to unsubscribe
21
- */
22
- export function addVoltraListener(event, listener) {
23
- if (Platform.OS !== 'ios') {
24
- console.warn(`[Voltra] Event '${event}' is only supported on iOS. Returning no-op subscription.`);
25
- return noopSubscription;
26
- }
27
- return VoltraModule.addListener(event, listener);
28
- }
29
- //# sourceMappingURL=events.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAGvC,OAAO,YAAY,MAAM,mBAAmB,CAAA;AA6B5C,MAAM,gBAAgB,GAAsB;IAC1C,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC;CACjB,CAAA;AASD;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAQ,EACR,QAA4C;IAE5C,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK,EAAE,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC,mBAAmB,KAAK,2DAA2D,CAAC,CAAA;QACjG,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,OAAO,YAAY,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;AAClD,CAAC"}
@@ -1,32 +0,0 @@
1
- import { Platform } from 'react-native';
2
- import VoltraModule from './VoltraModule.js';
3
- /**
4
- * Return whether Liquid Glass APIs are supported on this device (iOS 26+).
5
- * This is a convenience gate for authoring fallbacks in JS.
6
- */
7
- export function isGlassSupported() {
8
- if (Platform.OS !== 'ios')
9
- return false;
10
- const v = Platform.Version;
11
- let major = 0;
12
- if (typeof v === 'string') {
13
- const m = parseInt(v.split('.')[0] || '0', 10);
14
- if (!Number.isNaN(m))
15
- major = m;
16
- }
17
- else if (typeof v === 'number') {
18
- major = Math.floor(v);
19
- }
20
- return major >= 26;
21
- }
22
- /**
23
- * Return whether the app was launched in the background (headless).
24
- * Returns true if the app was launched in background, false if launched in foreground.
25
- * Always returns false on non-iOS platforms.
26
- */
27
- export function isHeadless() {
28
- if (Platform.OS !== 'ios')
29
- return false;
30
- return VoltraModule.isHeadless?.() ?? false;
31
- }
32
- //# sourceMappingURL=helpers.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAEvC,OAAO,YAAY,MAAM,mBAAmB,CAAA;AAE5C;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IACvC,MAAM,CAAC,GAAQ,QAAQ,CAAC,OAAO,CAAA;IAC/B,IAAI,KAAK,GAAG,CAAC,CAAA;IACb,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QAC1B,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,CAAA;QAC9C,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAAE,KAAK,GAAG,CAAC,CAAA;IACjC,CAAC;SAAM,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;QACjC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;IACvB,CAAC;IACD,OAAO,KAAK,IAAI,EAAE,CAAA;AACpB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,UAAU;IACxB,IAAI,QAAQ,CAAC,EAAE,KAAK,KAAK;QAAE,OAAO,KAAK,CAAA;IACvC,OAAO,YAAY,CAAC,UAAU,EAAE,EAAE,IAAI,KAAK,CAAA;AAC7C,CAAC"}