@innspel/react-native 0.5.1 → 0.6.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 +42 -1
- package/dist/index.cjs +83 -22
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +60 -3
- package/dist/index.d.ts +60 -3
- package/dist/index.js +83 -22
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -30,6 +30,18 @@ interface CaptureOptions {
|
|
|
30
30
|
interface ScreenshotAdapter {
|
|
31
31
|
/** Fanger viewen bak referansen til en fil. Kalles ved «Legg ved skjermbilde» (K4), og igjen på forhåndsvisningen for å rekomponere. */
|
|
32
32
|
capture(ref: RefObject<ViewRef | null>, options: CaptureOptions): Promise<ScreenshotCapture>;
|
|
33
|
+
/**
|
|
34
|
+
* Velger et bilde fra enhetens bildebibliotek — «Velg bilde». `null` når innsenderen
|
|
35
|
+
* avbryter. Uten metoden finnes ikke valget. Bildet går gjennom samme forhåndsvisning
|
|
36
|
+
* og maskering, og det som lastes opp er komposittet fra `capture`, aldri fila.
|
|
37
|
+
*/
|
|
38
|
+
pick?(): Promise<ScreenshotCapture | null>;
|
|
39
|
+
/**
|
|
40
|
+
* `false` fjerner «Legg ved skjermbilde» og lar bare «Velg bilde» stå — når skjermen
|
|
41
|
+
* widgeten åpnes fra sjelden er der feilen er. `capture` trengs likevel til å
|
|
42
|
+
* rekomponere forhåndsvisningen. Standard er `true`.
|
|
43
|
+
*/
|
|
44
|
+
captureScreen?: boolean;
|
|
33
45
|
/** Viewens rektangel i vinduskoordinater, i punkter. Null når den ikke er montert. */
|
|
34
46
|
measure(ref: RefObject<ViewRef | null>): Promise<MaskRect | null>;
|
|
35
47
|
/** Leser en fangst som Blob for opplasting. */
|
|
@@ -41,6 +53,38 @@ type CaptureRefFn = (ref: RefObject<ViewRef | null> | ViewRef, options: {
|
|
|
41
53
|
quality: number;
|
|
42
54
|
result: 'tmpfile';
|
|
43
55
|
}) => Promise<string>;
|
|
56
|
+
/**
|
|
57
|
+
* Vertens bildevelger. Resultatet trenger bare `uri`; mangler størrelsen, måles den.
|
|
58
|
+
* Returner `null` når innsenderen avbryter.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* import * as ImagePicker from 'expo-image-picker';
|
|
63
|
+
* const pickImage: PickImageFn = async () => {
|
|
64
|
+
* const r = await ImagePicker.launchImageLibraryAsync({ mediaTypes: ['images'], exif: false });
|
|
65
|
+
* return r.canceled ? null : { uri: r.assets[0]!.uri, width: r.assets[0]!.width, height: r.assets[0]!.height };
|
|
66
|
+
* };
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
type PickImageFn = () => Promise<{
|
|
70
|
+
uri: string;
|
|
71
|
+
width?: number;
|
|
72
|
+
height?: number;
|
|
73
|
+
} | null>;
|
|
74
|
+
/**
|
|
75
|
+
* Leietakerens setning ved bildesteget: én for begge spor, eller én per spor.
|
|
76
|
+
* Et spor uten setning viser ingen.
|
|
77
|
+
*/
|
|
78
|
+
type ImageStepNote = string | {
|
|
79
|
+
feil?: string;
|
|
80
|
+
onske?: string;
|
|
81
|
+
};
|
|
82
|
+
interface ScreenshotAdapterOptions {
|
|
83
|
+
/** Gir «Velg bilde». Pakken tar ingen avhengighet på en velger (K19). */
|
|
84
|
+
pickImage?: PickImageFn;
|
|
85
|
+
/** `false` fjerner «Legg ved skjermbilde». Standard er `true`. */
|
|
86
|
+
captureScreen?: boolean;
|
|
87
|
+
}
|
|
44
88
|
/**
|
|
45
89
|
* Lager adapteren av vertens `captureRef`. Dimensjonene hentes med `Image.getSize`,
|
|
46
90
|
* målingen med `measureInWindow`, og fila leses med `fetch(uri).blob()` — alt fra
|
|
@@ -50,9 +94,11 @@ type CaptureRefFn = (ref: RefObject<ViewRef | null> | ViewRef, options: {
|
|
|
50
94
|
* ```tsx
|
|
51
95
|
* import { captureRef } from 'react-native-view-shot';
|
|
52
96
|
* <InnspelProvider client={innspel} screenshot={createScreenshotAdapter(captureRef)}>
|
|
97
|
+
* // Med bildevelger, og uten fangst av skjermen widgeten åpnes fra:
|
|
98
|
+
* <InnspelProvider client={innspel} screenshot={createScreenshotAdapter(captureRef, { pickImage, captureScreen: false })}>
|
|
53
99
|
* ```
|
|
54
100
|
*/
|
|
55
|
-
declare function createScreenshotAdapter(captureRef: CaptureRefFn): ScreenshotAdapter;
|
|
101
|
+
declare function createScreenshotAdapter(captureRef: CaptureRefFn, options?: ScreenshotAdapterOptions): ScreenshotAdapter;
|
|
56
102
|
|
|
57
103
|
/**
|
|
58
104
|
* tokens.ts — GENERERT fra theme/theme.ts (avtrykk 9c17bc0e5f8c).
|
|
@@ -334,7 +380,7 @@ interface InnspelKontekst {
|
|
|
334
380
|
* }
|
|
335
381
|
* ```
|
|
336
382
|
*/
|
|
337
|
-
declare function InnspelProvider({ client, children, theme, colorScheme, tenantName, screenshot, }: {
|
|
383
|
+
declare function InnspelProvider({ client, children, theme, colorScheme, tenantName, screenshot, imageStepNote, }: {
|
|
338
384
|
client: InnspelClient;
|
|
339
385
|
children?: React.ReactNode;
|
|
340
386
|
/** Vertens egne tokens. Alt som utelates faller tilbake på Innspels tema. */
|
|
@@ -348,6 +394,13 @@ declare function InnspelProvider({ client, children, theme, colorScheme, tenantN
|
|
|
348
394
|
* og det finnes uansett ikke når `screenshotsEnabled` er av (K18).
|
|
349
395
|
*/
|
|
350
396
|
screenshot?: ScreenshotAdapter;
|
|
397
|
+
/**
|
|
398
|
+
* Leietakerens egen setning ved bildesteget, f.eks. «Legg ved et skjermbilde av feilen.
|
|
399
|
+
* Ikke send bilder av andre personer.» Står ved knappene og i forhåndsvisningen. Én
|
|
400
|
+
* streng gjelder begge spor; `{ feil, onske }` gir hvert spor sin. Leietakeren kjenner
|
|
401
|
+
* brukerne sine; plattformen eier ikke den setningen.
|
|
402
|
+
*/
|
|
403
|
+
imageStepNote?: ImageStepNote;
|
|
351
404
|
}): React.JSX.Element;
|
|
352
405
|
/**
|
|
353
406
|
* Klienten og `open` fra nærmeste {@link InnspelProvider}.
|
|
@@ -519,6 +572,10 @@ declare const tekst: {
|
|
|
519
572
|
readonly fjernLenke: "Fjern lenken til den kjente feilen";
|
|
520
573
|
readonly leggVedSkjermbilde: "Legg ved skjermbilde";
|
|
521
574
|
readonly leggVedHint: "Bildet tas først når du trykker — du ser det før det sendes.";
|
|
575
|
+
readonly velgBilde: "Velg bilde";
|
|
576
|
+
readonly velgBildeHint: "Fra bildene dine. Du ser det og kan maskere det før det sendes.";
|
|
577
|
+
readonly skjermbildeUnderGalleri: "Bildet er fra galleriet. Appen maskerer ingenting i det for deg — mal over det som ikke skal med.";
|
|
578
|
+
readonly bildeFeilet: "kunne ikke hente bildet. Du kan sende uten.";
|
|
522
579
|
readonly skjermbildeTittel: "Se over bildet";
|
|
523
580
|
readonly skjermbildeUnder: "Bildet ble tatt da du trykket. Det du maskerer, ser vi aldri.";
|
|
524
581
|
readonly maskering: "Maskering";
|
|
@@ -652,4 +709,4 @@ declare const lofte: {
|
|
|
652
709
|
readonly avvist: "Vi har svart på denne.";
|
|
653
710
|
};
|
|
654
711
|
|
|
655
|
-
export { type AsyncStorageLike, type CaptureOptions, type CaptureRefFn, type InnspelColors, InnspelPrivate, InnspelProgram, InnspelProvider, type InnspelTheme, type PartialTheme, type ScreenshotAdapter, type ScreenshotCapture, type StatusVisning, type Tema, byggTema, createMemoryStorage, createScreenshotAdapter, createStorage, t as darkTokens, light, lofte, screenRules, statusVisning, tekst, useInnspel, useTema, venterVisning };
|
|
712
|
+
export { type AsyncStorageLike, type CaptureOptions, type CaptureRefFn, type ImageStepNote, type InnspelColors, InnspelPrivate, InnspelProgram, InnspelProvider, type InnspelTheme, type PartialTheme, type PickImageFn, type ScreenshotAdapter, type ScreenshotAdapterOptions, type ScreenshotCapture, type StatusVisning, type Tema, byggTema, createMemoryStorage, createScreenshotAdapter, createStorage, t as darkTokens, light, lofte, screenRules, statusVisning, tekst, useInnspel, useTema, venterVisning };
|
package/dist/index.d.ts
CHANGED
|
@@ -30,6 +30,18 @@ interface CaptureOptions {
|
|
|
30
30
|
interface ScreenshotAdapter {
|
|
31
31
|
/** Fanger viewen bak referansen til en fil. Kalles ved «Legg ved skjermbilde» (K4), og igjen på forhåndsvisningen for å rekomponere. */
|
|
32
32
|
capture(ref: RefObject<ViewRef | null>, options: CaptureOptions): Promise<ScreenshotCapture>;
|
|
33
|
+
/**
|
|
34
|
+
* Velger et bilde fra enhetens bildebibliotek — «Velg bilde». `null` når innsenderen
|
|
35
|
+
* avbryter. Uten metoden finnes ikke valget. Bildet går gjennom samme forhåndsvisning
|
|
36
|
+
* og maskering, og det som lastes opp er komposittet fra `capture`, aldri fila.
|
|
37
|
+
*/
|
|
38
|
+
pick?(): Promise<ScreenshotCapture | null>;
|
|
39
|
+
/**
|
|
40
|
+
* `false` fjerner «Legg ved skjermbilde» og lar bare «Velg bilde» stå — når skjermen
|
|
41
|
+
* widgeten åpnes fra sjelden er der feilen er. `capture` trengs likevel til å
|
|
42
|
+
* rekomponere forhåndsvisningen. Standard er `true`.
|
|
43
|
+
*/
|
|
44
|
+
captureScreen?: boolean;
|
|
33
45
|
/** Viewens rektangel i vinduskoordinater, i punkter. Null når den ikke er montert. */
|
|
34
46
|
measure(ref: RefObject<ViewRef | null>): Promise<MaskRect | null>;
|
|
35
47
|
/** Leser en fangst som Blob for opplasting. */
|
|
@@ -41,6 +53,38 @@ type CaptureRefFn = (ref: RefObject<ViewRef | null> | ViewRef, options: {
|
|
|
41
53
|
quality: number;
|
|
42
54
|
result: 'tmpfile';
|
|
43
55
|
}) => Promise<string>;
|
|
56
|
+
/**
|
|
57
|
+
* Vertens bildevelger. Resultatet trenger bare `uri`; mangler størrelsen, måles den.
|
|
58
|
+
* Returner `null` når innsenderen avbryter.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```ts
|
|
62
|
+
* import * as ImagePicker from 'expo-image-picker';
|
|
63
|
+
* const pickImage: PickImageFn = async () => {
|
|
64
|
+
* const r = await ImagePicker.launchImageLibraryAsync({ mediaTypes: ['images'], exif: false });
|
|
65
|
+
* return r.canceled ? null : { uri: r.assets[0]!.uri, width: r.assets[0]!.width, height: r.assets[0]!.height };
|
|
66
|
+
* };
|
|
67
|
+
* ```
|
|
68
|
+
*/
|
|
69
|
+
type PickImageFn = () => Promise<{
|
|
70
|
+
uri: string;
|
|
71
|
+
width?: number;
|
|
72
|
+
height?: number;
|
|
73
|
+
} | null>;
|
|
74
|
+
/**
|
|
75
|
+
* Leietakerens setning ved bildesteget: én for begge spor, eller én per spor.
|
|
76
|
+
* Et spor uten setning viser ingen.
|
|
77
|
+
*/
|
|
78
|
+
type ImageStepNote = string | {
|
|
79
|
+
feil?: string;
|
|
80
|
+
onske?: string;
|
|
81
|
+
};
|
|
82
|
+
interface ScreenshotAdapterOptions {
|
|
83
|
+
/** Gir «Velg bilde». Pakken tar ingen avhengighet på en velger (K19). */
|
|
84
|
+
pickImage?: PickImageFn;
|
|
85
|
+
/** `false` fjerner «Legg ved skjermbilde». Standard er `true`. */
|
|
86
|
+
captureScreen?: boolean;
|
|
87
|
+
}
|
|
44
88
|
/**
|
|
45
89
|
* Lager adapteren av vertens `captureRef`. Dimensjonene hentes med `Image.getSize`,
|
|
46
90
|
* målingen med `measureInWindow`, og fila leses med `fetch(uri).blob()` — alt fra
|
|
@@ -50,9 +94,11 @@ type CaptureRefFn = (ref: RefObject<ViewRef | null> | ViewRef, options: {
|
|
|
50
94
|
* ```tsx
|
|
51
95
|
* import { captureRef } from 'react-native-view-shot';
|
|
52
96
|
* <InnspelProvider client={innspel} screenshot={createScreenshotAdapter(captureRef)}>
|
|
97
|
+
* // Med bildevelger, og uten fangst av skjermen widgeten åpnes fra:
|
|
98
|
+
* <InnspelProvider client={innspel} screenshot={createScreenshotAdapter(captureRef, { pickImage, captureScreen: false })}>
|
|
53
99
|
* ```
|
|
54
100
|
*/
|
|
55
|
-
declare function createScreenshotAdapter(captureRef: CaptureRefFn): ScreenshotAdapter;
|
|
101
|
+
declare function createScreenshotAdapter(captureRef: CaptureRefFn, options?: ScreenshotAdapterOptions): ScreenshotAdapter;
|
|
56
102
|
|
|
57
103
|
/**
|
|
58
104
|
* tokens.ts — GENERERT fra theme/theme.ts (avtrykk 9c17bc0e5f8c).
|
|
@@ -334,7 +380,7 @@ interface InnspelKontekst {
|
|
|
334
380
|
* }
|
|
335
381
|
* ```
|
|
336
382
|
*/
|
|
337
|
-
declare function InnspelProvider({ client, children, theme, colorScheme, tenantName, screenshot, }: {
|
|
383
|
+
declare function InnspelProvider({ client, children, theme, colorScheme, tenantName, screenshot, imageStepNote, }: {
|
|
338
384
|
client: InnspelClient;
|
|
339
385
|
children?: React.ReactNode;
|
|
340
386
|
/** Vertens egne tokens. Alt som utelates faller tilbake på Innspels tema. */
|
|
@@ -348,6 +394,13 @@ declare function InnspelProvider({ client, children, theme, colorScheme, tenantN
|
|
|
348
394
|
* og det finnes uansett ikke når `screenshotsEnabled` er av (K18).
|
|
349
395
|
*/
|
|
350
396
|
screenshot?: ScreenshotAdapter;
|
|
397
|
+
/**
|
|
398
|
+
* Leietakerens egen setning ved bildesteget, f.eks. «Legg ved et skjermbilde av feilen.
|
|
399
|
+
* Ikke send bilder av andre personer.» Står ved knappene og i forhåndsvisningen. Én
|
|
400
|
+
* streng gjelder begge spor; `{ feil, onske }` gir hvert spor sin. Leietakeren kjenner
|
|
401
|
+
* brukerne sine; plattformen eier ikke den setningen.
|
|
402
|
+
*/
|
|
403
|
+
imageStepNote?: ImageStepNote;
|
|
351
404
|
}): React.JSX.Element;
|
|
352
405
|
/**
|
|
353
406
|
* Klienten og `open` fra nærmeste {@link InnspelProvider}.
|
|
@@ -519,6 +572,10 @@ declare const tekst: {
|
|
|
519
572
|
readonly fjernLenke: "Fjern lenken til den kjente feilen";
|
|
520
573
|
readonly leggVedSkjermbilde: "Legg ved skjermbilde";
|
|
521
574
|
readonly leggVedHint: "Bildet tas først når du trykker — du ser det før det sendes.";
|
|
575
|
+
readonly velgBilde: "Velg bilde";
|
|
576
|
+
readonly velgBildeHint: "Fra bildene dine. Du ser det og kan maskere det før det sendes.";
|
|
577
|
+
readonly skjermbildeUnderGalleri: "Bildet er fra galleriet. Appen maskerer ingenting i det for deg — mal over det som ikke skal med.";
|
|
578
|
+
readonly bildeFeilet: "kunne ikke hente bildet. Du kan sende uten.";
|
|
522
579
|
readonly skjermbildeTittel: "Se over bildet";
|
|
523
580
|
readonly skjermbildeUnder: "Bildet ble tatt da du trykket. Det du maskerer, ser vi aldri.";
|
|
524
581
|
readonly maskering: "Maskering";
|
|
@@ -652,4 +709,4 @@ declare const lofte: {
|
|
|
652
709
|
readonly avvist: "Vi har svart på denne.";
|
|
653
710
|
};
|
|
654
711
|
|
|
655
|
-
export { type AsyncStorageLike, type CaptureOptions, type CaptureRefFn, type InnspelColors, InnspelPrivate, InnspelProgram, InnspelProvider, type InnspelTheme, type PartialTheme, type ScreenshotAdapter, type ScreenshotCapture, type StatusVisning, type Tema, byggTema, createMemoryStorage, createScreenshotAdapter, createStorage, t as darkTokens, light, lofte, screenRules, statusVisning, tekst, useInnspel, useTema, venterVisning };
|
|
712
|
+
export { type AsyncStorageLike, type CaptureOptions, type CaptureRefFn, type ImageStepNote, type InnspelColors, InnspelPrivate, InnspelProgram, InnspelProvider, type InnspelTheme, type PartialTheme, type PickImageFn, type ScreenshotAdapter, type ScreenshotAdapterOptions, type ScreenshotCapture, type StatusVisning, type Tema, byggTema, createMemoryStorage, createScreenshotAdapter, createStorage, t as darkTokens, light, lofte, screenRules, statusVisning, tekst, useInnspel, useTema, venterVisning };
|
package/dist/index.js
CHANGED
|
@@ -5,15 +5,25 @@ import { View as View9 } from "react-native";
|
|
|
5
5
|
// src/skjermbilde.ts
|
|
6
6
|
import { createContext, useContext } from "react";
|
|
7
7
|
import { Image } from "react-native";
|
|
8
|
-
function
|
|
8
|
+
function storrelse(uri) {
|
|
9
|
+
return new Promise((resolve, reject) => Image.getSize(uri, (w, h) => resolve({ width: w, height: h }), reject));
|
|
10
|
+
}
|
|
11
|
+
function createScreenshotAdapter(captureRef, options = {}) {
|
|
12
|
+
const { pickImage, captureScreen } = options;
|
|
9
13
|
return {
|
|
10
|
-
async capture(ref,
|
|
11
|
-
const uri = await captureRef(ref, { format:
|
|
12
|
-
|
|
13
|
-
(resolve, reject) => Image.getSize(uri, (w, h) => resolve({ width: w, height: h }), reject)
|
|
14
|
-
);
|
|
15
|
-
return { uri, width, height };
|
|
14
|
+
async capture(ref, opts) {
|
|
15
|
+
const uri = await captureRef(ref, { format: opts.format, quality: opts.quality, result: "tmpfile" });
|
|
16
|
+
return { uri, ...await storrelse(uri) };
|
|
16
17
|
},
|
|
18
|
+
...pickImage ? {
|
|
19
|
+
async pick() {
|
|
20
|
+
const valgt = await pickImage();
|
|
21
|
+
if (!valgt) return null;
|
|
22
|
+
const { width, height } = valgt.width && valgt.height ? { width: valgt.width, height: valgt.height } : await storrelse(valgt.uri);
|
|
23
|
+
return { uri: valgt.uri, width, height };
|
|
24
|
+
}
|
|
25
|
+
} : {},
|
|
26
|
+
...captureScreen === false ? { captureScreen: false } : {},
|
|
17
27
|
measure(ref) {
|
|
18
28
|
return new Promise((resolve) => {
|
|
19
29
|
const view = ref.current;
|
|
@@ -500,6 +510,10 @@ var tekst = {
|
|
|
500
510
|
// 2f — skjermbilde (K4, DD-39, DD-40, DD-42)
|
|
501
511
|
leggVedSkjermbilde: "Legg ved skjermbilde",
|
|
502
512
|
leggVedHint: "Bildet tas f\xF8rst n\xE5r du trykker \u2014 du ser det f\xF8r det sendes.",
|
|
513
|
+
velgBilde: "Velg bilde",
|
|
514
|
+
velgBildeHint: "Fra bildene dine. Du ser det og kan maskere det f\xF8r det sendes.",
|
|
515
|
+
skjermbildeUnderGalleri: "Bildet er fra galleriet. Appen maskerer ingenting i det for deg \u2014 mal over det som ikke skal med.",
|
|
516
|
+
bildeFeilet: "kunne ikke hente bildet. Du kan sende uten.",
|
|
503
517
|
skjermbildeTittel: "Se over bildet",
|
|
504
518
|
skjermbildeUnder: "Bildet ble tatt da du trykket. Det du maskerer, ser vi aldri.",
|
|
505
519
|
maskering: "Maskering",
|
|
@@ -655,6 +669,8 @@ function Felt({
|
|
|
655
669
|
onSend,
|
|
656
670
|
sender,
|
|
657
671
|
onSkjermbilde,
|
|
672
|
+
onVelgBilde,
|
|
673
|
+
bildeNotat,
|
|
658
674
|
harVedlegg,
|
|
659
675
|
onFjernVedlegg
|
|
660
676
|
}) {
|
|
@@ -845,17 +861,31 @@ function Felt({
|
|
|
845
861
|
)
|
|
846
862
|
]
|
|
847
863
|
}
|
|
848
|
-
) : onSkjermbilde ? /* @__PURE__ */
|
|
849
|
-
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
864
|
+
) : onSkjermbilde || onVelgBilde ? /* @__PURE__ */ jsxs2(View2, { style: { gap: tema.space.sm }, children: [
|
|
865
|
+
onSkjermbilde ? /* @__PURE__ */ jsx2(
|
|
866
|
+
Btn,
|
|
867
|
+
{
|
|
868
|
+
variant: "secondary",
|
|
869
|
+
testID: "legg-ved-skjermbilde",
|
|
870
|
+
ikon: "\u{1F4F7}",
|
|
871
|
+
label: tekst.leggVedSkjermbilde,
|
|
872
|
+
hint: tekst.leggVedHint,
|
|
873
|
+
onPress: onSkjermbilde
|
|
874
|
+
}
|
|
875
|
+
) : null,
|
|
876
|
+
onVelgBilde ? /* @__PURE__ */ jsx2(
|
|
877
|
+
Btn,
|
|
878
|
+
{
|
|
879
|
+
variant: "secondary",
|
|
880
|
+
testID: "velg-bilde",
|
|
881
|
+
ikon: "\u{1F5BC}",
|
|
882
|
+
label: tekst.velgBilde,
|
|
883
|
+
hint: tekst.velgBildeHint,
|
|
884
|
+
onPress: onVelgBilde
|
|
885
|
+
}
|
|
886
|
+
) : null,
|
|
887
|
+
bildeNotat ? /* @__PURE__ */ jsx2(View2, { testID: "bilde-notat", children: /* @__PURE__ */ jsx2(Hint, { children: bildeNotat }) }) : null
|
|
888
|
+
] }) : null,
|
|
859
889
|
/* @__PURE__ */ jsxs2(View2, { style: { borderTopWidth: tema.hairline, borderTopColor: tema.color.border, paddingTop: tema.space.sm }, children: [
|
|
860
890
|
/* @__PURE__ */ jsx2(
|
|
861
891
|
Pressable2,
|
|
@@ -1270,6 +1300,8 @@ function Skjermbilde({
|
|
|
1270
1300
|
rotStorrelse,
|
|
1271
1301
|
previewRef,
|
|
1272
1302
|
komponerer,
|
|
1303
|
+
kilde = "skjerm",
|
|
1304
|
+
notat,
|
|
1273
1305
|
onFjern,
|
|
1274
1306
|
onLeggVed
|
|
1275
1307
|
}) {
|
|
@@ -1362,7 +1394,8 @@ function Skjermbilde({
|
|
|
1362
1394
|
};
|
|
1363
1395
|
const a11y = tekst.skjermbildeA11y(automasker.length, egne.length, allTekst);
|
|
1364
1396
|
return /* @__PURE__ */ jsxs7(View7, { style: { flex: 1, gap: tema.space.md }, children: [
|
|
1365
|
-
/* @__PURE__ */ jsx7(H, { sub: tekst.skjermbildeUnder, children: tekst.skjermbildeTittel }),
|
|
1397
|
+
/* @__PURE__ */ jsx7(H, { sub: kilde === "galleri" ? tekst.skjermbildeUnderGalleri : tekst.skjermbildeUnder, children: tekst.skjermbildeTittel }),
|
|
1398
|
+
notat ? /* @__PURE__ */ jsx7(View7, { testID: "bilde-notat", children: /* @__PURE__ */ jsx7(Hint, { children: notat }) }) : null,
|
|
1366
1399
|
/* @__PURE__ */ jsxs7(View7, { accessibilityRole: "toolbar", accessibilityLabel: tekst.maskering, style: { flexDirection: "row", gap: tema.space.sm }, children: [
|
|
1367
1400
|
knapp("felt", "\u25A3", tekst.maskerFelt),
|
|
1368
1401
|
knapp("pensel", "\u270E", tekst.tegnOver),
|
|
@@ -1467,7 +1500,8 @@ function Widget({
|
|
|
1467
1500
|
synlig,
|
|
1468
1501
|
apneOpsjoner,
|
|
1469
1502
|
onLukk,
|
|
1470
|
-
tenantName
|
|
1503
|
+
tenantName,
|
|
1504
|
+
imageStepNote
|
|
1471
1505
|
}) {
|
|
1472
1506
|
const tema = useTema();
|
|
1473
1507
|
const insets = useContext3(SafeAreaInsetsContext) ?? initialWindowMetrics?.insets ?? { top: 0, bottom: 0, left: 0, right: 0 };
|
|
@@ -1490,9 +1524,13 @@ function Widget({
|
|
|
1490
1524
|
const [automasker, setAutomasker] = useState3([]);
|
|
1491
1525
|
const [rotStorrelse, setRotStorrelse] = useState3({ width: 1, height: 1 });
|
|
1492
1526
|
const [komponerer, setKomponerer] = useState3(false);
|
|
1527
|
+
const [kilde, setKilde] = useState3("skjerm");
|
|
1493
1528
|
const [vedlegg, setVedlegg] = useState3();
|
|
1494
1529
|
const [innstillinger, setInnstillinger] = useState3({ ...client.settings });
|
|
1495
1530
|
const skjermbildeMulig = innstillinger.screenshotsEnabled && skjermbilde?.adapter != null;
|
|
1531
|
+
const fangstMulig = skjermbildeMulig && skjermbilde?.adapter?.captureScreen !== false;
|
|
1532
|
+
const galleriMulig = skjermbildeMulig && typeof skjermbilde?.adapter?.pick === "function";
|
|
1533
|
+
const bildeNotat = typeof imageStepNote === "string" ? imageStepNote : imageStepNote?.[spor];
|
|
1496
1534
|
const nullstill = useCallback2(() => {
|
|
1497
1535
|
setSteg("valg");
|
|
1498
1536
|
setSpor("feil");
|
|
@@ -1569,11 +1607,28 @@ function Widget({
|
|
|
1569
1607
|
setAutomasker([]);
|
|
1570
1608
|
}
|
|
1571
1609
|
setBilde(fangst);
|
|
1610
|
+
setKilde("skjerm");
|
|
1572
1611
|
setSteg("skjermbilde");
|
|
1573
1612
|
} catch {
|
|
1574
1613
|
setFeil(tekst.skjermbildeFeilet);
|
|
1575
1614
|
}
|
|
1576
1615
|
}, [skjermbilde]);
|
|
1616
|
+
const velgBilde = useCallback2(async () => {
|
|
1617
|
+
const pick = skjermbilde?.adapter?.pick;
|
|
1618
|
+
if (!pick) return;
|
|
1619
|
+
setFeil(void 0);
|
|
1620
|
+
try {
|
|
1621
|
+
const valgt = await pick.call(skjermbilde.adapter);
|
|
1622
|
+
if (!valgt) return;
|
|
1623
|
+
setRotStorrelse({ width: valgt.width, height: valgt.height });
|
|
1624
|
+
setAutomasker([]);
|
|
1625
|
+
setBilde(valgt);
|
|
1626
|
+
setKilde("galleri");
|
|
1627
|
+
setSteg("skjermbilde");
|
|
1628
|
+
} catch {
|
|
1629
|
+
setFeil(tekst.bildeFeilet);
|
|
1630
|
+
}
|
|
1631
|
+
}, [skjermbilde]);
|
|
1577
1632
|
const leggVedBilde = useCallback2(async () => {
|
|
1578
1633
|
if (!skjermbilde?.adapter) return;
|
|
1579
1634
|
setKomponerer(true);
|
|
@@ -1737,7 +1792,9 @@ function Widget({
|
|
|
1737
1792
|
funn,
|
|
1738
1793
|
onSend: send,
|
|
1739
1794
|
sender,
|
|
1740
|
-
...
|
|
1795
|
+
...fangstMulig ? { onSkjermbilde: taSkjermbilde } : {},
|
|
1796
|
+
...galleriMulig ? { onVelgBilde: velgBilde } : {},
|
|
1797
|
+
...bildeNotat ? { bildeNotat } : {},
|
|
1741
1798
|
harVedlegg: vedlegg !== void 0,
|
|
1742
1799
|
onFjernVedlegg: fjernBilde
|
|
1743
1800
|
}
|
|
@@ -1750,6 +1807,8 @@ function Widget({
|
|
|
1750
1807
|
rotStorrelse,
|
|
1751
1808
|
previewRef,
|
|
1752
1809
|
komponerer,
|
|
1810
|
+
kilde,
|
|
1811
|
+
...bildeNotat ? { notat: bildeNotat } : {},
|
|
1753
1812
|
onFjern: fjernBilde,
|
|
1754
1813
|
onLeggVed: leggVedBilde
|
|
1755
1814
|
}
|
|
@@ -1797,7 +1856,8 @@ function InnspelProvider({
|
|
|
1797
1856
|
theme,
|
|
1798
1857
|
colorScheme = "dark",
|
|
1799
1858
|
tenantName,
|
|
1800
|
-
screenshot
|
|
1859
|
+
screenshot,
|
|
1860
|
+
imageStepNote
|
|
1801
1861
|
}) {
|
|
1802
1862
|
const [synlig, setSynlig] = useState4(false);
|
|
1803
1863
|
const [apneOpsjoner, setApneOpsjoner] = useState4();
|
|
@@ -1831,6 +1891,7 @@ function InnspelProvider({
|
|
|
1831
1891
|
synlig,
|
|
1832
1892
|
...apneOpsjoner ? { apneOpsjoner } : {},
|
|
1833
1893
|
...tenantName ? { tenantName } : {},
|
|
1894
|
+
...imageStepNote ? { imageStepNote } : {},
|
|
1834
1895
|
onLukk: close
|
|
1835
1896
|
}
|
|
1836
1897
|
)
|