expo-invoke 2.0.0 → 2.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +83 -1
- package/build/plugin/codegen/generateSwiftWidget.d.ts +35 -0
- package/build/plugin/codegen/generateSwiftWidget.js +379 -0
- package/build/plugin/codegen/generateSwiftWidget.js.map +1 -0
- package/build/plugin/ios/withIOSInvoke.d.ts +17 -0
- package/build/plugin/ios/withIOSInvoke.js +23 -1
- package/build/plugin/ios/withIOSInvoke.js.map +1 -1
- package/build/plugin/ios/withWidgetExtension.d.ts +14 -0
- package/build/plugin/ios/withWidgetExtension.js +213 -0
- package/build/plugin/ios/withWidgetExtension.js.map +1 -0
- package/build/plugin/src/withInvoke.d.ts +25 -0
- package/build/plugin/src/withInvoke.js +8 -1
- package/build/plugin/src/withInvoke.js.map +1 -1
- package/build/src/index.d.ts +1 -1
- package/build/src/index.d.ts.map +1 -1
- package/build/src/module.d.ts +21 -2
- package/build/src/module.d.ts.map +1 -1
- package/build/src/module.js +19 -0
- package/build/src/module.js.map +1 -1
- package/build/src/types/index.d.ts +25 -0
- package/build/src/types/index.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -135,6 +135,14 @@ eas build --platform android --local
|
|
|
135
135
|
{
|
|
136
136
|
"plugins": [
|
|
137
137
|
["expo-invoke", {
|
|
138
|
+
"appGroupId": "group.com.myapp.invoke",
|
|
139
|
+
|
|
140
|
+
"enableWidget": true,
|
|
141
|
+
"widgetTitle": "My App",
|
|
142
|
+
"widgetAccentColor": "#267AD9",
|
|
143
|
+
"widgetDeepLink": "myapp://home",
|
|
144
|
+
"widgetSizes": ["small", "medium"],
|
|
145
|
+
|
|
138
146
|
"intents": [
|
|
139
147
|
{
|
|
140
148
|
"id": "create_errand",
|
|
@@ -150,6 +158,7 @@ eas build --platform android --local
|
|
|
150
158
|
```
|
|
151
159
|
|
|
152
160
|
> `${applicationName}` is required in every Siri phrase so the system knows which app to launch.
|
|
161
|
+
> `shortTitle` powers the long-press app icon Quick Actions menu — add up to 4 intents with `shortTitle` to populate it.
|
|
153
162
|
|
|
154
163
|
### 2. Initialize in your root layout
|
|
155
164
|
|
|
@@ -335,6 +344,80 @@ Static shortcuts (always visible, defined at install time) are configured via th
|
|
|
335
344
|
|
|
336
345
|
---
|
|
337
346
|
|
|
347
|
+
### Home Screen Widget (Built-in — no Swift required)
|
|
348
|
+
|
|
349
|
+
expo-invoke includes a **zero-native-code** WidgetKit extension. Enable it in `app.json` and push data from TypeScript — no Xcode, no Swift files, no separate plugin needed.
|
|
350
|
+
|
|
351
|
+
#### 1. Enable in `app.json`
|
|
352
|
+
|
|
353
|
+
```json
|
|
354
|
+
["expo-invoke", {
|
|
355
|
+
"appGroupId": "group.com.myapp.invoke",
|
|
356
|
+
|
|
357
|
+
"enableWidget": true,
|
|
358
|
+
"widgetTitle": "My App",
|
|
359
|
+
"widgetDescription": "Quick access from your home screen.",
|
|
360
|
+
"widgetDataKey": "myWidgetData",
|
|
361
|
+
"widgetAccentColor": "#267AD9",
|
|
362
|
+
"widgetDeepLink": "myapp://home",
|
|
363
|
+
"widgetSizes": ["small", "medium", "large"],
|
|
364
|
+
|
|
365
|
+
"intents": [...]
|
|
366
|
+
}]
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
> `appGroupId` is required for widget data sharing — the app and the widget extension read/write the same UserDefaults container.
|
|
370
|
+
|
|
371
|
+
#### 2. Push data from TypeScript
|
|
372
|
+
|
|
373
|
+
```tsx
|
|
374
|
+
import { setWidgetData } from 'expo-invoke';
|
|
375
|
+
import type { InvokeWidgetPayload } from 'expo-invoke';
|
|
376
|
+
|
|
377
|
+
// Call this whenever your data changes — after fetching, after mutations, etc.
|
|
378
|
+
function syncWidget(activeItems: MyItem[]) {
|
|
379
|
+
const latest = activeItems[0];
|
|
380
|
+
|
|
381
|
+
const payload: InvokeWidgetPayload = {
|
|
382
|
+
count: activeItems.length,
|
|
383
|
+
badgeLabel: activeItems.length === 1 ? 'Active Order' : 'Active Orders',
|
|
384
|
+
title: latest?.name ?? null,
|
|
385
|
+
subtitle: latest?.status ?? null,
|
|
386
|
+
detail: latest?.assigneeName ?? null,
|
|
387
|
+
// deepLink: 'myapp://orders/123' ← optional per-item override
|
|
388
|
+
};
|
|
389
|
+
|
|
390
|
+
setWidgetData('myWidgetData', payload);
|
|
391
|
+
}
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
`InvokeWidgetPayload` fields:
|
|
395
|
+
|
|
396
|
+
| Field | Type | Description |
|
|
397
|
+
|---|---|---|
|
|
398
|
+
| `count` | `number` | Prominent badge number (e.g. active order count) |
|
|
399
|
+
| `badgeLabel` | `string` | Label under the count (e.g. "Active Orders") |
|
|
400
|
+
| `title` | `string \| null` | Main item title |
|
|
401
|
+
| `subtitle` | `string \| null` | Status line (e.g. "In Progress") |
|
|
402
|
+
| `detail` | `string \| null` | Extra detail (e.g. assignee name) |
|
|
403
|
+
| `deepLink` | `string \| null` | Optional per-item deep-link URL override |
|
|
404
|
+
|
|
405
|
+
#### 3. Prebuild + run
|
|
406
|
+
|
|
407
|
+
```bash
|
|
408
|
+
npx expo prebuild --platform ios --clean
|
|
409
|
+
npx expo run:ios
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
The widget is generated entirely by the plugin — `InvokeWidget.swift` is written to `ios/InvokeWidget/` automatically. After prebuild the file is there but you never need to edit it.
|
|
413
|
+
|
|
414
|
+
**Testing in the simulator:**
|
|
415
|
+
- Long-press the home screen → tap **+** → search "My App"
|
|
416
|
+
- Choose small, medium, or large size
|
|
417
|
+
- Long-press the app icon for Quick Action shortcuts
|
|
418
|
+
|
|
419
|
+
---
|
|
420
|
+
|
|
338
421
|
### useWidgetData — Push State to Widgets
|
|
339
422
|
|
|
340
423
|
Push live app state to home screen widgets without the user opening the app. The widget reads from the same shared storage.
|
|
@@ -346,7 +429,6 @@ function TrackingScreen({ errand }) {
|
|
|
346
429
|
const { set } = useWidgetData('active_errand');
|
|
347
430
|
|
|
348
431
|
useEffect(() => {
|
|
349
|
-
// Widget reads this to display current status
|
|
350
432
|
set({
|
|
351
433
|
title: errand.title,
|
|
352
434
|
status: errand.status,
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface WidgetCodegenOptions {
|
|
2
|
+
/** Display name shown in the widget picker */
|
|
3
|
+
widgetTitle: string;
|
|
4
|
+
/** Description shown in the widget picker */
|
|
5
|
+
widgetDescription: string;
|
|
6
|
+
/** UserDefaults key the app writes widget data to via setWidgetData() */
|
|
7
|
+
widgetDataKey: string;
|
|
8
|
+
/** Hex accent colour, e.g. "#267AD9" */
|
|
9
|
+
widgetAccentColor: string;
|
|
10
|
+
/** URL scheme deep-link opened when widget is tapped, e.g. "myapp://home" */
|
|
11
|
+
widgetDeepLink: string;
|
|
12
|
+
/** iOS App Group identifier shared between app and widget */
|
|
13
|
+
appGroupId: string;
|
|
14
|
+
/** Widget sizes to support */
|
|
15
|
+
widgetSizes: ('small' | 'medium' | 'large')[];
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Generates a self-contained SwiftUI Widget Extension source file.
|
|
19
|
+
*
|
|
20
|
+
* The widget reads its display data from a JSON string in the shared App Group's
|
|
21
|
+
* UserDefaults under the key `widgetDataKey`.
|
|
22
|
+
*
|
|
23
|
+
* Expected JSON shape (written by the host app via setWidgetData()):
|
|
24
|
+
* {
|
|
25
|
+
* "count": number, // badge count shown prominently
|
|
26
|
+
* "badgeLabel": string, // label under the count, e.g. "Active Errands"
|
|
27
|
+
* "title": string | null, // main item title
|
|
28
|
+
* "subtitle": string | null, // status / secondary text
|
|
29
|
+
* "detail": string | null, // extra detail line (carrier name, assignee, etc.)
|
|
30
|
+
* "deepLink": string | null, // optional per-item URL override
|
|
31
|
+
* }
|
|
32
|
+
*/
|
|
33
|
+
export declare function generateSwiftWidget(opts: WidgetCodegenOptions): string;
|
|
34
|
+
export declare function generateWidgetInfoPlist(): string;
|
|
35
|
+
export declare function generateWidgetEntitlements(appGroupId: string): string;
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.generateSwiftWidget = generateSwiftWidget;
|
|
4
|
+
exports.generateWidgetInfoPlist = generateWidgetInfoPlist;
|
|
5
|
+
exports.generateWidgetEntitlements = generateWidgetEntitlements;
|
|
6
|
+
function escapeSwift(s) {
|
|
7
|
+
return s
|
|
8
|
+
.replace(/\\/g, '\\\\')
|
|
9
|
+
.replace(/"/g, '\\"')
|
|
10
|
+
.replace(/\n/g, '\\n')
|
|
11
|
+
.replace(/\r/g, '\\r');
|
|
12
|
+
}
|
|
13
|
+
function hexToSwiftColor(hex) {
|
|
14
|
+
const clean = hex.replace('#', '');
|
|
15
|
+
const r = parseInt(clean.substring(0, 2), 16) / 255;
|
|
16
|
+
const g = parseInt(clean.substring(2, 4), 16) / 255;
|
|
17
|
+
const b = parseInt(clean.substring(4, 6), 16) / 255;
|
|
18
|
+
return `Color(red: ${r.toFixed(3)}, green: ${g.toFixed(3)}, blue: ${b.toFixed(3)})`;
|
|
19
|
+
}
|
|
20
|
+
function familiesClause(sizes) {
|
|
21
|
+
const map = {
|
|
22
|
+
small: '.systemSmall',
|
|
23
|
+
medium: '.systemMedium',
|
|
24
|
+
large: '.systemLarge',
|
|
25
|
+
};
|
|
26
|
+
return sizes.map((s) => { var _a; return (_a = map[s]) !== null && _a !== void 0 ? _a : `.systemSmall`; }).join(', ');
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Generates a self-contained SwiftUI Widget Extension source file.
|
|
30
|
+
*
|
|
31
|
+
* The widget reads its display data from a JSON string in the shared App Group's
|
|
32
|
+
* UserDefaults under the key `widgetDataKey`.
|
|
33
|
+
*
|
|
34
|
+
* Expected JSON shape (written by the host app via setWidgetData()):
|
|
35
|
+
* {
|
|
36
|
+
* "count": number, // badge count shown prominently
|
|
37
|
+
* "badgeLabel": string, // label under the count, e.g. "Active Errands"
|
|
38
|
+
* "title": string | null, // main item title
|
|
39
|
+
* "subtitle": string | null, // status / secondary text
|
|
40
|
+
* "detail": string | null, // extra detail line (carrier name, assignee, etc.)
|
|
41
|
+
* "deepLink": string | null, // optional per-item URL override
|
|
42
|
+
* }
|
|
43
|
+
*/
|
|
44
|
+
function generateSwiftWidget(opts) {
|
|
45
|
+
const { widgetTitle, widgetDescription, widgetDataKey, widgetAccentColor, widgetDeepLink, appGroupId, widgetSizes, } = opts;
|
|
46
|
+
const accentColor = hexToSwiftColor(widgetAccentColor);
|
|
47
|
+
const bgColor = `Color(red: 0.90, green: 0.96, blue: 1.00)`;
|
|
48
|
+
const families = familiesClause(widgetSizes);
|
|
49
|
+
const hasSmall = widgetSizes.includes('small');
|
|
50
|
+
const hasMedium = widgetSizes.includes('medium');
|
|
51
|
+
const hasLarge = widgetSizes.includes('large');
|
|
52
|
+
const smallCase = hasSmall ? 'case .systemSmall:\n SmallInvokeView(entry: entry)' : '';
|
|
53
|
+
const mediumCase = hasMedium ? 'case .systemMedium:\n MediumInvokeView(entry: entry)' : '';
|
|
54
|
+
const largeCase = hasLarge ? 'case .systemLarge:\n LargeInvokeView(entry: entry)' : '';
|
|
55
|
+
return `// AUTO-GENERATED by expo-invoke — do not edit manually.
|
|
56
|
+
import WidgetKit
|
|
57
|
+
import SwiftUI
|
|
58
|
+
|
|
59
|
+
// MARK: - Data
|
|
60
|
+
|
|
61
|
+
private struct InvokeWidgetData {
|
|
62
|
+
var count: Int
|
|
63
|
+
var badgeLabel: String
|
|
64
|
+
var title: String?
|
|
65
|
+
var subtitle: String?
|
|
66
|
+
var detail: String?
|
|
67
|
+
var deepLink: String?
|
|
68
|
+
|
|
69
|
+
static let empty = InvokeWidgetData(count: 0, badgeLabel: "")
|
|
70
|
+
static let placeholder = InvokeWidgetData(
|
|
71
|
+
count: 2,
|
|
72
|
+
badgeLabel: "${escapeSwift(widgetTitle)}",
|
|
73
|
+
title: "Example Item",
|
|
74
|
+
subtitle: "In Progress",
|
|
75
|
+
detail: "John D.",
|
|
76
|
+
deepLink: nil
|
|
77
|
+
)
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
// MARK: - Timeline Entry
|
|
81
|
+
|
|
82
|
+
struct InvokeWidgetEntry: TimelineEntry {
|
|
83
|
+
let date: Date
|
|
84
|
+
let data: InvokeWidgetData
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// MARK: - Provider
|
|
88
|
+
|
|
89
|
+
struct InvokeWidgetProvider: TimelineProvider {
|
|
90
|
+
private let appGroup = "${escapeSwift(appGroupId)}"
|
|
91
|
+
private let dataKey = "${escapeSwift(widgetDataKey)}"
|
|
92
|
+
|
|
93
|
+
func placeholder(in context: Context) -> InvokeWidgetEntry {
|
|
94
|
+
InvokeWidgetEntry(date: Date(), data: .placeholder)
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
func getSnapshot(in context: Context, completion: @escaping (InvokeWidgetEntry) -> Void) {
|
|
98
|
+
completion(InvokeWidgetEntry(date: Date(), data: load()))
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
func getTimeline(in context: Context, completion: @escaping (Timeline<InvokeWidgetEntry>) -> Void) {
|
|
102
|
+
let entry = InvokeWidgetEntry(date: Date(), data: load())
|
|
103
|
+
let refresh = Calendar.current.date(byAdding: .minute, value: 15, to: Date()) ?? Date()
|
|
104
|
+
completion(Timeline(entries: [entry], policy: .after(refresh)))
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
private func load() -> InvokeWidgetData {
|
|
108
|
+
guard
|
|
109
|
+
let defaults = UserDefaults(suiteName: appGroup),
|
|
110
|
+
let raw = defaults.string(forKey: dataKey),
|
|
111
|
+
let blob = raw.data(using: .utf8),
|
|
112
|
+
let json = try? JSONSerialization.jsonObject(with: blob) as? [String: Any]
|
|
113
|
+
else { return .empty }
|
|
114
|
+
|
|
115
|
+
return InvokeWidgetData(
|
|
116
|
+
count: json["count"] as? Int ?? 0,
|
|
117
|
+
badgeLabel: json["badgeLabel"] as? String ?? "",
|
|
118
|
+
title: json["title"] as? String,
|
|
119
|
+
subtitle: json["subtitle"] as? String,
|
|
120
|
+
detail: json["detail"] as? String,
|
|
121
|
+
deepLink: json["deepLink"] as? String
|
|
122
|
+
)
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
// MARK: - Shared Helpers
|
|
127
|
+
|
|
128
|
+
private let accentColor = ${accentColor}
|
|
129
|
+
private let bgColor = ${bgColor}
|
|
130
|
+
|
|
131
|
+
private func resolvedURL(entry: InvokeWidgetEntry) -> URL {
|
|
132
|
+
let raw = entry.data.deepLink ?? "${escapeSwift(widgetDeepLink)}"
|
|
133
|
+
return URL(string: raw) ?? URL(string: "${escapeSwift(widgetDeepLink)}")!
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// MARK: - Small View
|
|
137
|
+
|
|
138
|
+
${hasSmall ? `struct SmallInvokeView: View {
|
|
139
|
+
let entry: InvokeWidgetEntry
|
|
140
|
+
var body: some View {
|
|
141
|
+
ZStack {
|
|
142
|
+
bgColor.ignoresSafeArea()
|
|
143
|
+
VStack(alignment: .leading, spacing: 6) {
|
|
144
|
+
HStack {
|
|
145
|
+
Image(systemName: "square.grid.2x2.fill")
|
|
146
|
+
.font(.system(size: 16, weight: .semibold))
|
|
147
|
+
.foregroundColor(accentColor)
|
|
148
|
+
Spacer()
|
|
149
|
+
Text("\\(entry.data.count)")
|
|
150
|
+
.font(.system(size: 30, weight: .bold))
|
|
151
|
+
.foregroundColor(accentColor)
|
|
152
|
+
}
|
|
153
|
+
if !entry.data.badgeLabel.isEmpty {
|
|
154
|
+
Text(entry.data.badgeLabel)
|
|
155
|
+
.font(.system(size: 11, weight: .medium))
|
|
156
|
+
.foregroundColor(.secondary)
|
|
157
|
+
}
|
|
158
|
+
Spacer()
|
|
159
|
+
if let title = entry.data.title {
|
|
160
|
+
Text(title)
|
|
161
|
+
.font(.system(size: 12, weight: .semibold))
|
|
162
|
+
.lineLimit(2)
|
|
163
|
+
.foregroundColor(.primary)
|
|
164
|
+
}
|
|
165
|
+
if let sub = entry.data.subtitle {
|
|
166
|
+
Text(sub)
|
|
167
|
+
.font(.system(size: 10))
|
|
168
|
+
.foregroundColor(.secondary)
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
.padding(14)
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}` : '// Small size not enabled'}
|
|
175
|
+
|
|
176
|
+
// MARK: - Medium View
|
|
177
|
+
|
|
178
|
+
${hasMedium ? `struct MediumInvokeView: View {
|
|
179
|
+
let entry: InvokeWidgetEntry
|
|
180
|
+
var body: some View {
|
|
181
|
+
ZStack {
|
|
182
|
+
bgColor.ignoresSafeArea()
|
|
183
|
+
HStack(spacing: 0) {
|
|
184
|
+
VStack(alignment: .leading, spacing: 8) {
|
|
185
|
+
Image(systemName: "square.grid.2x2.fill")
|
|
186
|
+
.font(.system(size: 20, weight: .semibold))
|
|
187
|
+
.foregroundColor(accentColor)
|
|
188
|
+
Text("\\(entry.data.count)")
|
|
189
|
+
.font(.system(size: 36, weight: .bold))
|
|
190
|
+
.foregroundColor(accentColor)
|
|
191
|
+
if !entry.data.badgeLabel.isEmpty {
|
|
192
|
+
Text(entry.data.badgeLabel)
|
|
193
|
+
.font(.system(size: 11, weight: .medium))
|
|
194
|
+
.foregroundColor(.secondary)
|
|
195
|
+
.lineLimit(2)
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
.frame(maxHeight: .infinity, alignment: .topLeading)
|
|
199
|
+
.padding(16)
|
|
200
|
+
.frame(minWidth: 100)
|
|
201
|
+
|
|
202
|
+
Rectangle()
|
|
203
|
+
.fill(Color.secondary.opacity(0.18))
|
|
204
|
+
.frame(width: 1)
|
|
205
|
+
.padding(.vertical, 12)
|
|
206
|
+
|
|
207
|
+
VStack(alignment: .leading, spacing: 6) {
|
|
208
|
+
Text("${escapeSwift(widgetTitle)}")
|
|
209
|
+
.font(.system(size: 10, weight: .semibold))
|
|
210
|
+
.foregroundColor(.secondary)
|
|
211
|
+
if let title = entry.data.title {
|
|
212
|
+
Text(title)
|
|
213
|
+
.font(.system(size: 13, weight: .semibold))
|
|
214
|
+
.lineLimit(2)
|
|
215
|
+
.foregroundColor(.primary)
|
|
216
|
+
}
|
|
217
|
+
if let sub = entry.data.subtitle {
|
|
218
|
+
Text(sub)
|
|
219
|
+
.font(.system(size: 11))
|
|
220
|
+
.foregroundColor(.secondary)
|
|
221
|
+
}
|
|
222
|
+
if let detail = entry.data.detail {
|
|
223
|
+
HStack(spacing: 4) {
|
|
224
|
+
Image(systemName: "person.fill")
|
|
225
|
+
.font(.system(size: 9))
|
|
226
|
+
.foregroundColor(.secondary)
|
|
227
|
+
Text(detail)
|
|
228
|
+
.font(.system(size: 11))
|
|
229
|
+
.foregroundColor(.secondary)
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading)
|
|
234
|
+
.padding(16)
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
}` : '// Medium size not enabled'}
|
|
239
|
+
|
|
240
|
+
// MARK: - Large View
|
|
241
|
+
|
|
242
|
+
${hasLarge ? `struct LargeInvokeView: View {
|
|
243
|
+
let entry: InvokeWidgetEntry
|
|
244
|
+
var body: some View {
|
|
245
|
+
ZStack {
|
|
246
|
+
bgColor.ignoresSafeArea()
|
|
247
|
+
VStack(alignment: .leading, spacing: 14) {
|
|
248
|
+
HStack {
|
|
249
|
+
Image(systemName: "square.grid.2x2.fill")
|
|
250
|
+
.font(.system(size: 18, weight: .semibold))
|
|
251
|
+
.foregroundColor(accentColor)
|
|
252
|
+
Text("${escapeSwift(widgetTitle)}")
|
|
253
|
+
.font(.system(size: 17, weight: .bold))
|
|
254
|
+
.foregroundColor(.primary)
|
|
255
|
+
Spacer()
|
|
256
|
+
if entry.data.count > 0 {
|
|
257
|
+
Text("\\(entry.data.count) \\(entry.data.badgeLabel)")
|
|
258
|
+
.font(.system(size: 12, weight: .semibold))
|
|
259
|
+
.foregroundColor(accentColor)
|
|
260
|
+
.padding(.horizontal, 10)
|
|
261
|
+
.padding(.vertical, 4)
|
|
262
|
+
.background(accentColor.opacity(0.12))
|
|
263
|
+
.clipShape(Capsule())
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
Divider()
|
|
267
|
+
if let title = entry.data.title {
|
|
268
|
+
VStack(alignment: .leading, spacing: 8) {
|
|
269
|
+
Text(title)
|
|
270
|
+
.font(.system(size: 15, weight: .semibold))
|
|
271
|
+
.foregroundColor(.primary)
|
|
272
|
+
if let sub = entry.data.subtitle {
|
|
273
|
+
Text(sub)
|
|
274
|
+
.font(.system(size: 12))
|
|
275
|
+
.foregroundColor(.secondary)
|
|
276
|
+
}
|
|
277
|
+
if let detail = entry.data.detail {
|
|
278
|
+
HStack(spacing: 6) {
|
|
279
|
+
Image(systemName: "person.circle.fill")
|
|
280
|
+
.font(.system(size: 13))
|
|
281
|
+
.foregroundColor(accentColor)
|
|
282
|
+
Text(detail)
|
|
283
|
+
.font(.system(size: 12))
|
|
284
|
+
.foregroundColor(.secondary)
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
.padding(14)
|
|
289
|
+
.frame(maxWidth: .infinity, alignment: .leading)
|
|
290
|
+
.background(Color.white.opacity(0.6))
|
|
291
|
+
.clipShape(RoundedRectangle(cornerRadius: 12))
|
|
292
|
+
} else {
|
|
293
|
+
VStack(spacing: 10) {
|
|
294
|
+
Image(systemName: "square.grid.2x2")
|
|
295
|
+
.font(.system(size: 34))
|
|
296
|
+
.foregroundColor(accentColor.opacity(0.4))
|
|
297
|
+
Text("Nothing here yet")
|
|
298
|
+
.font(.system(size: 13))
|
|
299
|
+
.foregroundColor(.secondary)
|
|
300
|
+
}
|
|
301
|
+
.frame(maxWidth: .infinity)
|
|
302
|
+
.padding(24)
|
|
303
|
+
}
|
|
304
|
+
Spacer()
|
|
305
|
+
}
|
|
306
|
+
.padding(16)
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
}` : '// Large size not enabled'}
|
|
310
|
+
|
|
311
|
+
// MARK: - Entry View Router
|
|
312
|
+
|
|
313
|
+
struct InvokeWidgetEntryView: View {
|
|
314
|
+
var entry: InvokeWidgetEntry
|
|
315
|
+
@Environment(\\.widgetFamily) var family
|
|
316
|
+
|
|
317
|
+
var body: some View {
|
|
318
|
+
Group {
|
|
319
|
+
switch family {
|
|
320
|
+
${[smallCase, mediumCase, largeCase].filter(Boolean).join('\n ')}
|
|
321
|
+
default:
|
|
322
|
+
${hasSmall ? 'SmallInvokeView(entry: entry)' : hasMedium ? 'MediumInvokeView(entry: entry)' : 'LargeInvokeView(entry: entry)'}
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
|
|
328
|
+
// MARK: - Widget Configuration
|
|
329
|
+
|
|
330
|
+
struct InvokeWidget: Widget {
|
|
331
|
+
let kind: String = "InvokeWidget"
|
|
332
|
+
|
|
333
|
+
var body: some WidgetConfiguration {
|
|
334
|
+
StaticConfiguration(kind: kind, provider: InvokeWidgetProvider()) { entry in
|
|
335
|
+
InvokeWidgetEntryView(entry: entry)
|
|
336
|
+
.widgetURL(resolvedURL(entry: entry))
|
|
337
|
+
}
|
|
338
|
+
.configurationDisplayName("${escapeSwift(widgetTitle)}")
|
|
339
|
+
.description("${escapeSwift(widgetDescription)}")
|
|
340
|
+
.supportedFamilies([${families}])
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
// MARK: - Widget Bundle
|
|
345
|
+
|
|
346
|
+
@main
|
|
347
|
+
struct InvokeWidgetBundle: WidgetBundle {
|
|
348
|
+
var body: some Widget {
|
|
349
|
+
InvokeWidget()
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
`;
|
|
353
|
+
}
|
|
354
|
+
function generateWidgetInfoPlist() {
|
|
355
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
356
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
357
|
+
<plist version="1.0">
|
|
358
|
+
<dict>
|
|
359
|
+
<key>NSExtension</key>
|
|
360
|
+
<dict>
|
|
361
|
+
<key>NSExtensionPointIdentifier</key>
|
|
362
|
+
<string>com.apple.widgetkit-extension</string>
|
|
363
|
+
</dict>
|
|
364
|
+
</dict>
|
|
365
|
+
</plist>`;
|
|
366
|
+
}
|
|
367
|
+
function generateWidgetEntitlements(appGroupId) {
|
|
368
|
+
return `<?xml version="1.0" encoding="UTF-8"?>
|
|
369
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
370
|
+
<plist version="1.0">
|
|
371
|
+
<dict>
|
|
372
|
+
<key>com.apple.security.application-groups</key>
|
|
373
|
+
<array>
|
|
374
|
+
<string>${appGroupId}</string>
|
|
375
|
+
</array>
|
|
376
|
+
</dict>
|
|
377
|
+
</plist>`;
|
|
378
|
+
}
|
|
379
|
+
//# sourceMappingURL=generateSwiftWidget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generateSwiftWidget.js","sourceRoot":"","sources":["../../../plugin/codegen/generateSwiftWidget.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,6 +11,23 @@ interface IOSInvokeOptions {
|
|
|
11
11
|
pttUsageDescription?: string;
|
|
12
12
|
enableLiveActivities?: boolean;
|
|
13
13
|
liveActivityTypes?: string[];
|
|
14
|
+
/** Enable the built-in WidgetKit extension. Requires appGroupId. */
|
|
15
|
+
enableWidget?: boolean;
|
|
16
|
+
/** Display name shown in the widget picker (defaults to app name) */
|
|
17
|
+
widgetTitle?: string;
|
|
18
|
+
/** Description shown in the widget picker */
|
|
19
|
+
widgetDescription?: string;
|
|
20
|
+
/**
|
|
21
|
+
* UserDefaults key the app writes widget data to via setWidgetData().
|
|
22
|
+
* Defaults to "invokeWidgetData".
|
|
23
|
+
*/
|
|
24
|
+
widgetDataKey?: string;
|
|
25
|
+
/** Hex accent colour for the widget UI (defaults to "#267AD9") */
|
|
26
|
+
widgetAccentColor?: string;
|
|
27
|
+
/** URL scheme deep-link opened when widget is tapped */
|
|
28
|
+
widgetDeepLink?: string;
|
|
29
|
+
/** Widget sizes to support (defaults to ["small","medium"]) */
|
|
30
|
+
widgetSizes?: ('small' | 'medium' | 'large')[];
|
|
14
31
|
}
|
|
15
32
|
export declare const withIOSInvoke: ConfigPlugin<IOSInvokeOptions>;
|
|
16
33
|
export {};
|
|
@@ -41,8 +41,10 @@ const generateSwiftIntents_1 = require("../codegen/generateSwiftIntents");
|
|
|
41
41
|
const generateSwiftEntities_1 = require("../codegen/generateSwiftEntities");
|
|
42
42
|
const generateSwiftFocusFilters_1 = require("../codegen/generateSwiftFocusFilters");
|
|
43
43
|
const generateSwiftAppClip_1 = require("../codegen/generateSwiftAppClip");
|
|
44
|
+
const withWidgetExtension_1 = require("./withWidgetExtension");
|
|
44
45
|
const withIOSInvoke = (config, options) => {
|
|
45
|
-
|
|
46
|
+
var _a, _b, _c;
|
|
47
|
+
const { intents, voiceUsageDescription, appGroupId, entities = [], focusFilters = [], appClips = [], enablePushToTalk = false, pttUsageDescription, enableLiveActivities = false, enableWidget = false, widgetTitle, widgetDescription = 'Quick access from your home screen.', widgetDataKey = 'invokeWidgetData', widgetAccentColor = '#267AD9', widgetDeepLink = '', widgetSizes = ['small', 'medium'], } = options;
|
|
46
48
|
// 1. Info.plist usage descriptions + feature flags
|
|
47
49
|
config = (0, config_plugins_1.withInfoPlist)(config, (cfg) => {
|
|
48
50
|
var _a;
|
|
@@ -128,6 +130,26 @@ const withIOSInvoke = (config, options) => {
|
|
|
128
130
|
return cfg;
|
|
129
131
|
},
|
|
130
132
|
]);
|
|
133
|
+
// 4. Widget Extension (opt-in — requires appGroupId)
|
|
134
|
+
if (enableWidget) {
|
|
135
|
+
if (!appGroupId) {
|
|
136
|
+
console.warn('[expo-invoke] enableWidget is true but appGroupId is missing.\n' +
|
|
137
|
+
'Fix: Add appGroupId to your expo-invoke plugin config, e.g. "group.com.myapp.invoke".');
|
|
138
|
+
}
|
|
139
|
+
else {
|
|
140
|
+
const bundleIdentifier = ((_b = (_a = config.ios) === null || _a === void 0 ? void 0 : _a.bundleIdentifier) !== null && _b !== void 0 ? _b : 'com.example.app') + '.InvokeWidget';
|
|
141
|
+
config = (0, withWidgetExtension_1.withWidgetExtension)(config, {
|
|
142
|
+
appGroupId,
|
|
143
|
+
bundleId: bundleIdentifier,
|
|
144
|
+
widgetTitle: widgetTitle !== null && widgetTitle !== void 0 ? widgetTitle : ((_c = config.name) !== null && _c !== void 0 ? _c : 'My App'),
|
|
145
|
+
widgetDescription,
|
|
146
|
+
widgetDataKey,
|
|
147
|
+
widgetAccentColor,
|
|
148
|
+
widgetDeepLink,
|
|
149
|
+
widgetSizes,
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
}
|
|
131
153
|
return config;
|
|
132
154
|
};
|
|
133
155
|
exports.withIOSInvoke = withIOSInvoke;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withIOSInvoke.js","sourceRoot":"","sources":["../../../plugin/ios/withIOSInvoke.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yDAK8B;AAC9B,uCAAyB;AACzB,2CAA6B;AAC7B,0EAAuE;AACvE,4EAAyE;AACzE,oFAAiF;AACjF,0EAAuE;
|
|
1
|
+
{"version":3,"file":"withIOSInvoke.js","sourceRoot":"","sources":["../../../plugin/ios/withIOSInvoke.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ConfigPlugin } from '@expo/config-plugins';
|
|
2
|
+
import { type WidgetCodegenOptions } from '../codegen/generateSwiftWidget';
|
|
3
|
+
export interface WidgetExtensionOptions extends WidgetCodegenOptions {
|
|
4
|
+
bundleId: string;
|
|
5
|
+
deploymentTarget?: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Adds a WidgetKit extension target to the iOS Xcode project.
|
|
9
|
+
* Called automatically by withIOSInvoke when enableWidget: true.
|
|
10
|
+
*
|
|
11
|
+
* Developers never call this directly — it's wired up through the expo-invoke
|
|
12
|
+
* app.json plugin config.
|
|
13
|
+
*/
|
|
14
|
+
export declare const withWidgetExtension: ConfigPlugin<WidgetExtensionOptions>;
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.withWidgetExtension = void 0;
|
|
37
|
+
const config_plugins_1 = require("@expo/config-plugins");
|
|
38
|
+
const fs = __importStar(require("fs"));
|
|
39
|
+
const path = __importStar(require("path"));
|
|
40
|
+
const generateSwiftWidget_1 = require("../codegen/generateSwiftWidget");
|
|
41
|
+
const WIDGET_TARGET = 'InvokeWidget';
|
|
42
|
+
/**
|
|
43
|
+
* Adds a WidgetKit extension target to the iOS Xcode project.
|
|
44
|
+
* Called automatically by withIOSInvoke when enableWidget: true.
|
|
45
|
+
*
|
|
46
|
+
* Developers never call this directly — it's wired up through the expo-invoke
|
|
47
|
+
* app.json plugin config.
|
|
48
|
+
*/
|
|
49
|
+
const withWidgetExtension = (config, opts) => {
|
|
50
|
+
const { appGroupId, bundleId, deploymentTarget = '16.0' } = opts;
|
|
51
|
+
// 1. Add App Group entitlement to the main app
|
|
52
|
+
config = (0, config_plugins_1.withEntitlementsPlist)(config, (cfg) => {
|
|
53
|
+
var _a;
|
|
54
|
+
const key = 'com.apple.security.application-groups';
|
|
55
|
+
const existing = (_a = cfg.modResults[key]) !== null && _a !== void 0 ? _a : [];
|
|
56
|
+
if (!existing.includes(appGroupId)) {
|
|
57
|
+
cfg.modResults[key] = [...existing, appGroupId];
|
|
58
|
+
}
|
|
59
|
+
return cfg;
|
|
60
|
+
});
|
|
61
|
+
// 2. Generate widget Swift source file + support files into ios/InvokeWidget/
|
|
62
|
+
config = (0, config_plugins_1.withDangerousMod)(config, [
|
|
63
|
+
'ios',
|
|
64
|
+
async (cfg) => {
|
|
65
|
+
const widgetDir = path.join(cfg.modRequest.platformProjectRoot, WIDGET_TARGET);
|
|
66
|
+
try {
|
|
67
|
+
fs.mkdirSync(widgetDir, { recursive: true });
|
|
68
|
+
}
|
|
69
|
+
catch (e) {
|
|
70
|
+
throw new Error(`[expo-invoke] Could not create widget directory at "${widgetDir}".\n` +
|
|
71
|
+
`Cause: ${e instanceof Error ? e.message : e}\n` +
|
|
72
|
+
`Fix: Ensure the iOS project root is writable. Try \`npx expo prebuild --clean\`.`);
|
|
73
|
+
}
|
|
74
|
+
const write = (filename, content) => {
|
|
75
|
+
try {
|
|
76
|
+
fs.writeFileSync(path.join(widgetDir, filename), content, 'utf8');
|
|
77
|
+
}
|
|
78
|
+
catch (e) {
|
|
79
|
+
throw new Error(`[expo-invoke] Failed to write widget file "${filename}".\n` +
|
|
80
|
+
`Cause: ${e instanceof Error ? e.message : e}\n` +
|
|
81
|
+
`Fix: Check write permissions on the iOS project directory.`);
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
write('InvokeWidget.swift', (0, generateSwiftWidget_1.generateSwiftWidget)(opts));
|
|
85
|
+
write('Info.plist', (0, generateSwiftWidget_1.generateWidgetInfoPlist)());
|
|
86
|
+
write(`${WIDGET_TARGET}.entitlements`, (0, generateSwiftWidget_1.generateWidgetEntitlements)(appGroupId));
|
|
87
|
+
console.log(`[expo-invoke] Widget extension files written to ${widgetDir}`);
|
|
88
|
+
return cfg;
|
|
89
|
+
},
|
|
90
|
+
]);
|
|
91
|
+
// 3. Add widget target to the Xcode project
|
|
92
|
+
config = (0, config_plugins_1.withXcodeProject)(config, (cfg) => {
|
|
93
|
+
var _a, _b, _c, _d;
|
|
94
|
+
const proj = cfg.modResults;
|
|
95
|
+
// Idempotency — skip if the target already exists
|
|
96
|
+
const existingTargets = proj.pbxNativeTargetSection();
|
|
97
|
+
const already = Object.values(existingTargets).some((t) => t && typeof t === 'object' && t.name === WIDGET_TARGET);
|
|
98
|
+
if (already) {
|
|
99
|
+
console.log('[expo-invoke] Widget target already in Xcode project, skipping');
|
|
100
|
+
return cfg;
|
|
101
|
+
}
|
|
102
|
+
// ── Add the extension target ─────────────────────────────────────────────
|
|
103
|
+
const widgetTarget = proj.addTarget(WIDGET_TARGET, 'app_extension', WIDGET_TARGET, bundleId);
|
|
104
|
+
if (!widgetTarget) {
|
|
105
|
+
console.error('[expo-invoke] addTarget() returned null — Xcode widget target NOT added');
|
|
106
|
+
return cfg;
|
|
107
|
+
}
|
|
108
|
+
const widgetUuid = widgetTarget.uuid;
|
|
109
|
+
// ── Build phases ─────────────────────────────────────────────────────────
|
|
110
|
+
proj.addBuildPhase(['InvokeWidget.swift'], 'PBXSourcesBuildPhase', 'Sources', widgetUuid);
|
|
111
|
+
proj.addBuildPhase([], 'PBXResourcesBuildPhase', 'Resources', widgetUuid);
|
|
112
|
+
// ── Frameworks ───────────────────────────────────────────────────────────
|
|
113
|
+
proj.addFramework('WidgetKit.framework', { target: widgetUuid });
|
|
114
|
+
proj.addFramework('SwiftUI.framework', { target: widgetUuid });
|
|
115
|
+
// ── Build settings ───────────────────────────────────────────────────────
|
|
116
|
+
const configurations = proj.pbxXCBuildConfigurationSection();
|
|
117
|
+
for (const [, cfgObj] of Object.entries(configurations)) {
|
|
118
|
+
const settings = cfgObj === null || cfgObj === void 0 ? void 0 : cfgObj.buildSettings;
|
|
119
|
+
if (!settings)
|
|
120
|
+
continue;
|
|
121
|
+
const prodName = settings.PRODUCT_NAME;
|
|
122
|
+
if (prodName !== `"${WIDGET_TARGET}"` && prodName !== WIDGET_TARGET)
|
|
123
|
+
continue;
|
|
124
|
+
settings.PRODUCT_BUNDLE_IDENTIFIER = `"${bundleId}"`;
|
|
125
|
+
settings.SWIFT_VERSION = '5.0';
|
|
126
|
+
settings.IPHONEOS_DEPLOYMENT_TARGET = deploymentTarget;
|
|
127
|
+
settings.INFOPLIST_FILE = `"${WIDGET_TARGET}/Info.plist"`;
|
|
128
|
+
settings.CODE_SIGN_ENTITLEMENTS = `"${WIDGET_TARGET}/${WIDGET_TARGET}.entitlements"`;
|
|
129
|
+
settings.SKIP_INSTALL = 'YES';
|
|
130
|
+
settings.TARGETED_DEVICE_FAMILY = '"1,2"';
|
|
131
|
+
settings.LD_RUNPATH_SEARCH_PATHS = '"$(inherited) @executable_path/../../Frameworks"';
|
|
132
|
+
settings.ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = 'NO';
|
|
133
|
+
}
|
|
134
|
+
// ── Embed widget in main app (Embed App Extensions phase) ────────────────
|
|
135
|
+
const mainTarget = proj.getFirstTarget();
|
|
136
|
+
if (mainTarget) {
|
|
137
|
+
const mainUuid = mainTarget.uuid;
|
|
138
|
+
// Add widget as a build dependency (builds first)
|
|
139
|
+
proj.addTargetDependency(mainUuid, [widgetUuid]);
|
|
140
|
+
// ── "Embed App Extensions" copy-files phase ──────────────────────────
|
|
141
|
+
//
|
|
142
|
+
// IMPORTANT: We must NOT reuse an existing PBXBuildFile here.
|
|
143
|
+
// A PBXBuildFile can only belong to ONE phase. If we reuse the one that
|
|
144
|
+
// addTarget created for the widget's own Sources phase, CocoaPods' xcodeproj
|
|
145
|
+
// gem will reject it with "Consistency issue: no parent for object".
|
|
146
|
+
//
|
|
147
|
+
// Correct approach:
|
|
148
|
+
// 1. Find the PBXFileReference for InvokeWidget.appex (the product)
|
|
149
|
+
// 2. Create a BRAND-NEW PBXBuildFile that wraps that reference
|
|
150
|
+
// 3. Add the new build file to the CopyFiles phase
|
|
151
|
+
// 4. dstSubfolderSpec = 13 (PlugIns = App Extensions)
|
|
152
|
+
// Step 1 — find the .appex product PBXFileReference (NOT a PBXBuildFile)
|
|
153
|
+
const fileRefSection = (_a = proj.hash.project.objects['PBXFileReference']) !== null && _a !== void 0 ? _a : {};
|
|
154
|
+
let appexRefUuid = null;
|
|
155
|
+
for (const refKey of Object.keys(fileRefSection)) {
|
|
156
|
+
if (refKey.endsWith('_comment'))
|
|
157
|
+
continue;
|
|
158
|
+
if (fileRefSection[`${refKey}_comment`] === `${WIDGET_TARGET}.appex`) {
|
|
159
|
+
appexRefUuid = refKey;
|
|
160
|
+
break;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (appexRefUuid) {
|
|
164
|
+
// Step 2 — create a fresh PBXBuildFile owned solely by the embed phase
|
|
165
|
+
const embedBuildFileUuid = proj.generateUuid();
|
|
166
|
+
const buildFileSection = (_b = proj.hash.project.objects['PBXBuildFile']) !== null && _b !== void 0 ? _b : {};
|
|
167
|
+
buildFileSection[embedBuildFileUuid] = {
|
|
168
|
+
isa: 'PBXBuildFile',
|
|
169
|
+
fileRef: appexRefUuid,
|
|
170
|
+
settings: { ATTRIBUTES: ['CodeSignOnCopy', 'RemoveHeadersOnCopy'] },
|
|
171
|
+
};
|
|
172
|
+
buildFileSection[`${embedBuildFileUuid}_comment`] =
|
|
173
|
+
`${WIDGET_TARGET}.appex in Embed App Extensions`;
|
|
174
|
+
// Step 3 — create the PBXCopyFilesBuildPhase and add the build file
|
|
175
|
+
const embedPhaseUuid = proj.generateUuid();
|
|
176
|
+
const copyFilesSection = (_c = proj.hash.project.objects['PBXCopyFilesBuildPhase']) !== null && _c !== void 0 ? _c : {};
|
|
177
|
+
copyFilesSection[embedPhaseUuid] = {
|
|
178
|
+
isa: 'PBXCopyFilesBuildPhase',
|
|
179
|
+
buildActionMask: 2147483647,
|
|
180
|
+
dstPath: '""',
|
|
181
|
+
dstSubfolderSpec: 13, // 13 = PlugIns / App Extensions
|
|
182
|
+
files: [
|
|
183
|
+
{
|
|
184
|
+
value: embedBuildFileUuid,
|
|
185
|
+
comment: `${WIDGET_TARGET}.appex in Embed App Extensions`,
|
|
186
|
+
},
|
|
187
|
+
],
|
|
188
|
+
name: '"Embed App Extensions"',
|
|
189
|
+
runOnlyForDeploymentPostprocessing: 0,
|
|
190
|
+
};
|
|
191
|
+
copyFilesSection[`${embedPhaseUuid}_comment`] = 'Embed App Extensions';
|
|
192
|
+
// Step 4 — attach the phase to the main app native target's buildPhases list
|
|
193
|
+
const nativeTargetSection = (_d = proj.hash.project.objects['PBXNativeTarget']) !== null && _d !== void 0 ? _d : {};
|
|
194
|
+
const mainTargetObj = nativeTargetSection[mainUuid];
|
|
195
|
+
if (mainTargetObj === null || mainTargetObj === void 0 ? void 0 : mainTargetObj.buildPhases) {
|
|
196
|
+
mainTargetObj.buildPhases.push({
|
|
197
|
+
value: embedPhaseUuid,
|
|
198
|
+
comment: 'Embed App Extensions',
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
console.warn(`[expo-invoke] Could not find PBXFileReference for ${WIDGET_TARGET}.appex — ` +
|
|
204
|
+
'the widget extension will build but may not be embedded in the app bundle automatically.');
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
console.log(`[expo-invoke] Widget target "${WIDGET_TARGET}" added to Xcode project ✓`);
|
|
208
|
+
return cfg;
|
|
209
|
+
});
|
|
210
|
+
return config;
|
|
211
|
+
};
|
|
212
|
+
exports.withWidgetExtension = withWidgetExtension;
|
|
213
|
+
//# sourceMappingURL=withWidgetExtension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"withWidgetExtension.js","sourceRoot":"","sources":["../../../plugin/ios/withWidgetExtension.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,31 @@ export interface InvokePluginOptions {
|
|
|
28
28
|
enableLiveActivities?: boolean;
|
|
29
29
|
/** ActivityAttributes class names your app defines (for documentation / validation) */
|
|
30
30
|
liveActivityTypes?: string[];
|
|
31
|
+
/**
|
|
32
|
+
* Add a built-in WidgetKit home screen widget to your app.
|
|
33
|
+
* Requires `appGroupId` to be set. No native code needed — the widget Swift
|
|
34
|
+
* file is generated automatically from your config.
|
|
35
|
+
*
|
|
36
|
+
* The widget reads display data from the shared App Group UserDefaults. Use
|
|
37
|
+
* setWidgetData(key, { count, badgeLabel, title, subtitle, detail }) from your
|
|
38
|
+
* app to populate it.
|
|
39
|
+
*/
|
|
40
|
+
enableWidget?: boolean;
|
|
41
|
+
/** Widget display name shown in the iOS widget picker (defaults to app name) */
|
|
42
|
+
widgetTitle?: string;
|
|
43
|
+
/** Widget description shown in the iOS widget picker */
|
|
44
|
+
widgetDescription?: string;
|
|
45
|
+
/**
|
|
46
|
+
* UserDefaults key the widget reads from.
|
|
47
|
+
* Must match the key you pass to setWidgetData(). Defaults to "invokeWidgetData".
|
|
48
|
+
*/
|
|
49
|
+
widgetDataKey?: string;
|
|
50
|
+
/** Hex accent colour for widget UI (defaults to "#267AD9") */
|
|
51
|
+
widgetAccentColor?: string;
|
|
52
|
+
/** URL scheme deep-link opened when the widget is tapped (e.g. "myapp://home") */
|
|
53
|
+
widgetDeepLink?: string;
|
|
54
|
+
/** Widget sizes to generate. Defaults to ["small", "medium"] */
|
|
55
|
+
widgetSizes?: ('small' | 'medium' | 'large')[];
|
|
31
56
|
}
|
|
32
57
|
declare const _default: any;
|
|
33
58
|
export default _default;
|
|
@@ -5,7 +5,7 @@ const withIOSInvoke_1 = require("../ios/withIOSInvoke");
|
|
|
5
5
|
const withAndroidInvoke_1 = require("../android/withAndroidInvoke");
|
|
6
6
|
const validation_1 = require("../../src/utils/validation");
|
|
7
7
|
const withInvoke = (config, options) => {
|
|
8
|
-
const { intents = [], widgets: _widgets, notificationActions, voiceUsageDescription, appGroupId, entities = [], focusFilters = [], appClips = [], slices = [], enableInteractiveWidgets = false, enablePushToTalk = false, pttUsageDescription, enableLiveActivities = false, liveActivityTypes = [], } = options;
|
|
8
|
+
const { intents = [], widgets: _widgets, notificationActions, voiceUsageDescription, appGroupId, entities = [], focusFilters = [], appClips = [], slices = [], enableInteractiveWidgets = false, enablePushToTalk = false, pttUsageDescription, enableLiveActivities = false, liveActivityTypes = [], enableWidget = false, widgetTitle, widgetDescription, widgetDataKey, widgetAccentColor, widgetDeepLink, widgetSizes, } = options;
|
|
9
9
|
// Validate options early — throws with a helpful message if misconfigured
|
|
10
10
|
(0, validation_1.validatePluginOptions)({ enablePushToTalk, pttUsageDescription, enableLiveActivities, liveActivityTypes });
|
|
11
11
|
config = (0, withIOSInvoke_1.withIOSInvoke)(config, {
|
|
@@ -19,6 +19,13 @@ const withInvoke = (config, options) => {
|
|
|
19
19
|
pttUsageDescription,
|
|
20
20
|
enableLiveActivities,
|
|
21
21
|
liveActivityTypes,
|
|
22
|
+
enableWidget,
|
|
23
|
+
widgetTitle,
|
|
24
|
+
widgetDescription,
|
|
25
|
+
widgetDataKey,
|
|
26
|
+
widgetAccentColor,
|
|
27
|
+
widgetDeepLink,
|
|
28
|
+
widgetSizes,
|
|
22
29
|
});
|
|
23
30
|
config = (0, withAndroidInvoke_1.withAndroidInvoke)(config, {
|
|
24
31
|
intents,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"withInvoke.js","sourceRoot":"","sources":["../../../plugin/src/withInvoke.ts"],"names":[],"mappings":";;AAAA,yDAA8E;AAC9E,wDAAqD;AACrD,oEAAiE;AACjE,2DAAmE;
|
|
1
|
+
{"version":3,"file":"withInvoke.js","sourceRoot":"","sources":["../../../plugin/src/withInvoke.ts"],"names":[],"mappings":";;AAAA,yDAA8E;AAC9E,wDAAqD;AACrD,oEAAiE;AACjE,2DAAmE;AAqEnE,MAAM,UAAU,GAAsC,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;IACxE,MAAM,EACJ,OAAO,GAAG,EAAE,EACZ,OAAO,EAAE,QAAQ,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,UAAU,EACV,QAAQ,GAAG,EAAE,EACb,YAAY,GAAG,EAAE,EACjB,QAAQ,GAAG,EAAE,EACb,MAAM,GAAG,EAAE,EACX,wBAAwB,GAAG,KAAK,EAChC,gBAAgB,GAAG,KAAK,EACxB,mBAAmB,EACnB,oBAAoB,GAAG,KAAK,EAC5B,iBAAiB,GAAG,EAAE,EACtB,YAAY,GAAG,KAAK,EACpB,WAAW,EACX,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,WAAW,GACZ,GAAG,OAAO,CAAC;IAEZ,0EAA0E;IAC1E,IAAA,kCAAqB,EAAC,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAE1G,MAAM,GAAG,IAAA,6BAAa,EAAC,MAAM,EAAE;QAC7B,OAAO;QACP,qBAAqB;QACrB,UAAU;QACV,QAAQ;QACR,YAAY;QACZ,QAAQ;QACR,gBAAgB;QAChB,mBAAmB;QACnB,oBAAoB;QACpB,iBAAiB;QACjB,YAAY;QACZ,WAAW;QACX,iBAAiB;QACjB,aAAa;QACb,iBAAiB;QACjB,cAAc;QACd,WAAW;KACZ,CAAC,CAAC;IAEH,MAAM,GAAG,IAAA,qCAAiB,EAAC,MAAM,EAAE;QACjC,OAAO;QACP,mBAAmB;QACnB,MAAM;QACN,wBAAwB;KACzB,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,kBAAe,IAAA,oCAAmB,EAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC"}
|
package/build/src/index.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export { fetchOTAConfig, applyOTAConfig, getOTAConfig } from './utils/otaConfig'
|
|
|
31
31
|
export { setInvokeErrorHandler, resetInvokeErrorHandler, reportInvokeError, createInvokeError, } from './utils/invokeError';
|
|
32
32
|
export type { InvokeError, InvokeErrorCode } from './utils/invokeError';
|
|
33
33
|
export { loadPersistedAnalytics, persistAnalytics, clearPersistedAnalytics } from './utils/persistentAnalytics';
|
|
34
|
-
export type { InvokeSource, IntentDefinition, IntentParameter, ParameterType, ParameterValue, ResolvedIntent, DonationInput, ShortcutDefinition, SpotlightItem, WidgetDefinition, WidgetAction, WidgetSize, WidgetDataValue, NotificationCategoryDefinition, NotificationActionDefinition, LocationParameter, PersonParameter, EnumOption, InvokeConfig, AppEntityDefinition, AppEntityProperty, BackgroundIntentResult, LiveActivityConfig, LiveActivityAlertConfig, LiveActivityInfo, FocusFilterDefinition, FocusFilterParameter, AppClipDefinition, SliceDefinition, PTTSessionState, OTAIntentPatch, OTAConfig, AnalyticsRecord, FocusMode, } from './types';
|
|
34
|
+
export type { InvokeSource, IntentDefinition, IntentParameter, ParameterType, ParameterValue, ResolvedIntent, DonationInput, ShortcutDefinition, SpotlightItem, WidgetDefinition, WidgetAction, WidgetSize, WidgetDataValue, InvokeWidgetPayload, NotificationCategoryDefinition, NotificationActionDefinition, LocationParameter, PersonParameter, EnumOption, InvokeConfig, AppEntityDefinition, AppEntityProperty, BackgroundIntentResult, LiveActivityConfig, LiveActivityAlertConfig, LiveActivityInfo, FocusFilterDefinition, FocusFilterParameter, AppClipDefinition, SliceDefinition, PTTSessionState, OTAIntentPatch, OTAConfig, AnalyticsRecord, FocusMode, } from './types';
|
|
35
35
|
export type { UseInvokeOptions, UseInvokeResult } from './hooks/useInvoke';
|
|
36
36
|
export type { UseShortcutsResult } from './hooks/useShortcuts';
|
|
37
37
|
export type { UseSpotlightResult } from './hooks/useSpotlight';
|
package/build/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
package/build/src/module.d.ts
CHANGED
|
@@ -11,8 +11,27 @@ export declare function getDynamicShortcuts(): ShortcutDefinition[];
|
|
|
11
11
|
export declare function clearDynamicShortcuts(): void;
|
|
12
12
|
export declare function indexSpotlightItems(items: SpotlightItem[]): void;
|
|
13
13
|
export declare function deindexSpotlightItems(ids: string[]): void;
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
/**
|
|
15
|
+
* Write data to the home screen widget via the shared App Group UserDefaults.
|
|
16
|
+
*
|
|
17
|
+
* Pass an `InvokeWidgetPayload` to populate the built-in expo-invoke widget,
|
|
18
|
+
* or any serialisable object for a custom widget extension.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* import { setWidgetData } from 'expo-invoke';
|
|
22
|
+
* import type { InvokeWidgetPayload } from 'expo-invoke';
|
|
23
|
+
*
|
|
24
|
+
* const payload: InvokeWidgetPayload = {
|
|
25
|
+
* count: activeErrands.length,
|
|
26
|
+
* badgeLabel: 'Active Errands',
|
|
27
|
+
* title: activeErrands[0]?.title ?? null,
|
|
28
|
+
* subtitle: activeErrands[0]?.status ?? null,
|
|
29
|
+
* detail: activeErrands[0]?.carrier?.name ?? null,
|
|
30
|
+
* };
|
|
31
|
+
* setWidgetData('errandsWidgetData', payload);
|
|
32
|
+
*/
|
|
33
|
+
export declare function setWidgetData(key: string, value: WidgetDataValue | Record<string, unknown>): void;
|
|
34
|
+
export declare function getWidgetData<T = WidgetDataValue | Record<string, unknown>>(key: string): T | null;
|
|
16
35
|
export type QuickTileState = 'active' | 'inactive' | 'unavailable';
|
|
17
36
|
export declare function updateQuickTile(state: QuickTileState, label: string): void;
|
|
18
37
|
export declare function advertiseHandoff(intentId: string, params?: Record<string, unknown>): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EACvB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,kBAAkB,EAClB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,SAAS,EACT,kBAAkB,EAClB,gBAAgB,EAChB,sBAAsB,EACtB,eAAe,EACf,eAAe,EACf,cAAc,EACf,MAAM,SAAS,CAAC;AAiEjB,wBAAgB,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAEpD;AAID,wBAAgB,gBAAgB,IAAI,cAAc,GAAG,IAAI,CAIxD;AAED,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,GACzC,iBAAiB,CAQnB;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAEvD;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAEnD;AAED,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAID,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,kBAAkB,EAAE,GAAG,IAAI,CAEzE;AAED,wBAAgB,mBAAmB,IAAI,kBAAkB,EAAE,CAK1D;AAED,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAID,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,IAAI,CAEhE;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,CAEzD;AAID,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"module.d.ts","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"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"}
|
package/build/src/module.js
CHANGED
|
@@ -64,6 +64,25 @@ export function deindexSpotlightItems(ids) {
|
|
|
64
64
|
NativeModule === null || NativeModule === void 0 ? void 0 : NativeModule.deindexSpotlightItems(ids);
|
|
65
65
|
}
|
|
66
66
|
// ─── Widget data ──────────────────────────────────────────────────────────────
|
|
67
|
+
/**
|
|
68
|
+
* Write data to the home screen widget via the shared App Group UserDefaults.
|
|
69
|
+
*
|
|
70
|
+
* Pass an `InvokeWidgetPayload` to populate the built-in expo-invoke widget,
|
|
71
|
+
* or any serialisable object for a custom widget extension.
|
|
72
|
+
*
|
|
73
|
+
* @example
|
|
74
|
+
* import { setWidgetData } from 'expo-invoke';
|
|
75
|
+
* import type { InvokeWidgetPayload } from 'expo-invoke';
|
|
76
|
+
*
|
|
77
|
+
* const payload: InvokeWidgetPayload = {
|
|
78
|
+
* count: activeErrands.length,
|
|
79
|
+
* badgeLabel: 'Active Errands',
|
|
80
|
+
* title: activeErrands[0]?.title ?? null,
|
|
81
|
+
* subtitle: activeErrands[0]?.status ?? null,
|
|
82
|
+
* detail: activeErrands[0]?.carrier?.name ?? null,
|
|
83
|
+
* };
|
|
84
|
+
* setWidgetData('errandsWidgetData', payload);
|
|
85
|
+
*/
|
|
67
86
|
export function setWidgetData(key, value) {
|
|
68
87
|
NativeModule === null || NativeModule === void 0 ? void 0 : NativeModule.setWidgetData(key, JSON.stringify(value));
|
|
69
88
|
}
|
package/build/src/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"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"}
|
|
@@ -154,6 +154,31 @@ export interface SpotlightItem {
|
|
|
154
154
|
keywords?: string[];
|
|
155
155
|
}
|
|
156
156
|
export type WidgetDataValue = string | number | boolean | null;
|
|
157
|
+
/**
|
|
158
|
+
* Standard payload shape for the expo-invoke built-in widget.
|
|
159
|
+
* Write this via setWidgetData(key, payload) — the widget reads it from
|
|
160
|
+
* the shared App Group UserDefaults and renders accordingly.
|
|
161
|
+
*
|
|
162
|
+
* All fields except `count` and `badgeLabel` are optional — the widget
|
|
163
|
+
* gracefully renders empty states when they are absent.
|
|
164
|
+
*/
|
|
165
|
+
export interface InvokeWidgetPayload {
|
|
166
|
+
/** Prominent number shown in the widget (e.g. active errand count) */
|
|
167
|
+
count: number;
|
|
168
|
+
/** Label underneath the count (e.g. "Active Errands") */
|
|
169
|
+
badgeLabel: string;
|
|
170
|
+
/** Main item title (e.g. errand name, order name) */
|
|
171
|
+
title?: string | null;
|
|
172
|
+
/** Secondary status text (e.g. "In Progress", "Delivered") */
|
|
173
|
+
subtitle?: string | null;
|
|
174
|
+
/** Extra detail line (e.g. carrier name, assignee) */
|
|
175
|
+
detail?: string | null;
|
|
176
|
+
/**
|
|
177
|
+
* Optional per-item deep-link URL override.
|
|
178
|
+
* Falls back to the widgetDeepLink set in app.json when omitted.
|
|
179
|
+
*/
|
|
180
|
+
deepLink?: string | null;
|
|
181
|
+
}
|
|
157
182
|
export interface AppEntityProperty {
|
|
158
183
|
name: string;
|
|
159
184
|
type: 'text' | 'number' | 'date';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,YAAY,GACpB,MAAM,GACN,QAAQ,GACR,UAAU,GACV,QAAQ,GACR,eAAe,GACf,cAAc,GACd,kBAAkB,GAClB,KAAK,GACL,IAAI,GACJ,WAAW,GACX,WAAW,GACX,OAAO,GACP,SAAS,GACT,cAAc,GACd,OAAO,GACP,gBAAgB,GAChB,YAAY,GACZ,YAAY,GACZ,SAAS,GACT,UAAU,GACV,KAAK,GACL,YAAY,GACZ,SAAS,CAAC;AAId,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,GACpB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAC7D;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,UAAU,EAAE,CAAA;CAAE,GACvC;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,IAAI,EAAE,SAAS,CAAA;CAAE,GACnB;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,QAAQ,CAAA;CAAE,GAC3D;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAClB;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEzC,MAAM,MAAM,eAAe,GAAG,aAAa,GAAG;IAC5C,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,cAAc,GACtB,MAAM,GACN,MAAM,GACN,OAAO,GACP,iBAAiB,GACjB,eAAe,GACf,MAAM,EAAE,GACR,MAAM,EAAE,GACR,iBAAiB,EAAE,GACnB,IAAI,CAAC;AAIT,MAAM,WAAW,gBAAgB;IAC/B,0CAA0C;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,gDAAgD;IAChD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,qDAAqD;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,eAAe,EAAE,CAAC;IAC/B,yCAAyC;IACzC,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,8EAA8E;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mCAAmC;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,wCAAwC;IACxC,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,4CAA4C;IAC5C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,kCAAkC;IAClC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,qDAAqD;IACrD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,oDAAoD;IACpD,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,0CAA0C;IAC1C,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAID,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gEAAgE;IAChE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C,sHAAsH;IACtH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qCAAqC;IACrC,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,GAAG,WAAW,GAAG,kBAAkB,CAAC;AAExG,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,6BAA6B;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAID,MAAM,WAAW,4BAA4B;IAC3C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,8DAA8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,8CAA8C;IAC9C,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,8BAA8B;IAC7C,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,4BAA4B,EAAE,CAAC;IACxC,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,YAAY,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC3C,iEAAiE;IACjE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC7C;AAID,MAAM,WAAW,aAAa;IAC5B,8CAA8C;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAClD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAID,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "expo-invoke",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
4
4
|
"description": "The complete native-surface-to-JS bridge for Expo. One intent config → Siri, Google Assistant, home screen widgets, Dynamic Island, app icon menus, notification actions, NFC, QR, deep links and more — all through a single useInvoke() hook.",
|
|
5
5
|
"main": "build/src/index.js",
|
|
6
6
|
"module": "build/src/index.js",
|