@absolutejs/absolute 0.20.0-beta.18 → 0.20.0-beta.19
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 +14 -1
- package/dist/angular/components/core/streamingSlotRegistrar.js +1 -1
- package/dist/angular/components/core/streamingSlotRegistry.js +2 -2
- package/dist/cli/index.js +260 -93
- package/dist/mobile/index.js +140 -2
- package/dist/mobile/index.js.map +6 -5
- package/dist/src/mobile/deviceCapabilities.d.ts +13 -0
- package/dist/src/mobile/index.d.ts +1 -0
- package/dist/src/mobile/nativeDeviceCapabilities.d.ts +6 -0
- package/package.json +11 -10
package/README.md
CHANGED
|
@@ -207,11 +207,17 @@ does not silently replace a running application session.
|
|
|
207
207
|
Application code uses one provider-neutral API in web pages and Capacitor apps:
|
|
208
208
|
|
|
209
209
|
```ts
|
|
210
|
-
import { clipboard, haptics, share } from '@absolutejs/devices';
|
|
210
|
+
import { camera, clipboard, haptics, photos, share } from '@absolutejs/devices';
|
|
211
211
|
|
|
212
212
|
await clipboard.writeText('Copied everywhere');
|
|
213
213
|
await share.share({ text: 'Shared everywhere', url: 'https://absolutejs.com' });
|
|
214
214
|
await haptics.impact('light');
|
|
215
|
+
const permission = await camera.requestPermission();
|
|
216
|
+
if (permission.state === 'granted') {
|
|
217
|
+
const capture = await camera.takePhoto();
|
|
218
|
+
image.src = capture.webPath;
|
|
219
|
+
}
|
|
220
|
+
const chosen = await photos.pick({ limit: 1 });
|
|
215
221
|
```
|
|
216
222
|
|
|
217
223
|
`absolute mobile init` and `absolute mobile sync` discover these named value
|
|
@@ -222,6 +228,13 @@ edit Swift/Kotlin, or maintain native bootstrap code. Type-only imports and test
|
|
|
222
228
|
sources do not provision plugins. `absolute mobile doctor release` rejects a
|
|
223
229
|
missing or mismatched plugin before release.
|
|
224
230
|
|
|
231
|
+
Camera capture requires an explicit `camera.requestPermission()` call from an
|
|
232
|
+
intentional user action. `photos.pick()` uses the item-scoped system picker
|
|
233
|
+
without requesting broad library access. AbsoluteJS generates the required iOS
|
|
234
|
+
usage descriptions from the same audited capability metadata; this first slice
|
|
235
|
+
does not expose EXIF metadata or save captures into the gallery, and Android does
|
|
236
|
+
not receive unnecessary camera/storage permissions.
|
|
237
|
+
|
|
225
238
|
Clipboard and Share use browser standards on the web and fail with normalized
|
|
226
239
|
errors when unavailable. Haptics uses vibration where supported and otherwise
|
|
227
240
|
safely becomes a no-op, because tactile feedback must never be required to
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
var __require = import.meta.require;
|
|
3
3
|
|
|
4
|
-
// .angular-partial-tmp-
|
|
4
|
+
// .angular-partial-tmp-GLKzuw/src/core/streamingSlotRegistrar.ts
|
|
5
5
|
var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
|
|
6
6
|
var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
|
|
7
7
|
var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// @bun
|
|
2
2
|
var __require = import.meta.require;
|
|
3
3
|
|
|
4
|
-
// .angular-partial-tmp-
|
|
4
|
+
// .angular-partial-tmp-GLKzuw/src/core/streamingSlotRegistrar.ts
|
|
5
5
|
var STREAMING_SLOT_REGISTRAR_KEY = Symbol.for("absolutejs.streamingSlotRegistrar");
|
|
6
6
|
var STREAMING_SLOT_WARNING_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotWarningController");
|
|
7
7
|
var STREAMING_SLOT_COLLECTION_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotCollectionController");
|
|
@@ -48,7 +48,7 @@ var warnMissingStreamingSlotCollector = (primitiveName) => {
|
|
|
48
48
|
getWarningController()?.maybeWarn(primitiveName);
|
|
49
49
|
};
|
|
50
50
|
|
|
51
|
-
// .angular-partial-tmp-
|
|
51
|
+
// .angular-partial-tmp-GLKzuw/src/core/streamingSlotRegistry.ts
|
|
52
52
|
var STREAMING_SLOT_STORAGE_KEY = Symbol.for("absolutejs.streamingSlotAsyncLocalStorage");
|
|
53
53
|
var isObjectRecord2 = (value) => Boolean(value) && typeof value === "object";
|
|
54
54
|
var isAsyncLocalStorage = (value) => isObjectRecord2(value) && ("getStore" in value) && typeof value.getStore === "function" && ("run" in value) && typeof value.run === "function";
|