@innspel/react-native 0.5.0 → 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/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 };