@innspel/react-native 0.1.0 → 0.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 +46 -4
- package/dist/index.cjs +585 -150
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +116 -9
- package/dist/index.d.ts +116 -9
- package/dist/index.js +502 -69
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/index.d.cts
CHANGED
|
@@ -1,9 +1,61 @@
|
|
|
1
|
-
import { InnspelClient, OpenFeedbackOptions, InnspelStorage, SubmissionStatus, SubmissionType } from '@innspel/core';
|
|
2
|
-
export { CaptureInput, ContextInput, InnspelClient, InnspelOptions, InnspelStorage, MySubmission, OpenFeedbackOptions, SubmissionStatusView } from '@innspel/core';
|
|
3
|
-
import React from 'react';
|
|
1
|
+
import { MaskRect, InnspelClient, OpenFeedbackOptions, InnspelStorage, SubmissionStatus, SubmissionType } from '@innspel/core';
|
|
2
|
+
export { AttachmentInput, AttachmentOutcome, CaptureInput, ContextInput, InnspelClient, InnspelOptions, InnspelStorage, MySubmission, OpenFeedbackOptions, SubmissionStatusView } from '@innspel/core';
|
|
3
|
+
import React, { RefObject, ComponentRef } from 'react';
|
|
4
|
+
import { View, StyleProp, ViewStyle } from 'react-native';
|
|
4
5
|
|
|
6
|
+
/** Host-elementet bak en `View` — det som kan måles og fanges. RN 0.87: `View` er en funksjonskomponent, så typen hentes herfra. */
|
|
7
|
+
type ViewRef = ComponentRef<typeof View>;
|
|
5
8
|
/**
|
|
6
|
-
*
|
|
9
|
+
* Fangst av skjermbilde er det ene stedet widgeten trenger noe React Native
|
|
10
|
+
* ikke har innebygd. Pakken tar INGEN avhengighet på det (K19, samme mønster som
|
|
11
|
+
* `createStorage`): verten sender inn `captureRef` fra `react-native-view-shot`,
|
|
12
|
+
* og uten adapter finnes ikke skjermbilde-steget (DD-26) — ikke som en grå
|
|
13
|
+
* knapp, det finnes ikke.
|
|
14
|
+
*
|
|
15
|
+
* Alt som rører plattformen går gjennom adapteren, også måling og fillesing, så
|
|
16
|
+
* widgeten kan testes med en fake og maskeringen bevises uten native kode.
|
|
17
|
+
*/
|
|
18
|
+
interface ScreenshotCapture {
|
|
19
|
+
/** Fil-URI fra fangsten. Forlater aldri enheten før den er maskert og rekomponert. */
|
|
20
|
+
uri: string;
|
|
21
|
+
/** Bitmapens størrelse i piksler. */
|
|
22
|
+
width: number;
|
|
23
|
+
height: number;
|
|
24
|
+
}
|
|
25
|
+
interface CaptureOptions {
|
|
26
|
+
format: 'jpg' | 'png';
|
|
27
|
+
/** 0–1, kun JPEG. */
|
|
28
|
+
quality: number;
|
|
29
|
+
}
|
|
30
|
+
interface ScreenshotAdapter {
|
|
31
|
+
/** Fanger viewen bak referansen til en fil. Kalles ved «Legg ved skjermbilde» (K4), og igjen på forhåndsvisningen for å rekomponere. */
|
|
32
|
+
capture(ref: RefObject<ViewRef | null>, options: CaptureOptions): Promise<ScreenshotCapture>;
|
|
33
|
+
/** Viewens rektangel i vinduskoordinater, i punkter. Null når den ikke er montert. */
|
|
34
|
+
measure(ref: RefObject<ViewRef | null>): Promise<MaskRect | null>;
|
|
35
|
+
/** Leser en fangst som Blob for opplasting. */
|
|
36
|
+
read(uri: string): Promise<Blob>;
|
|
37
|
+
}
|
|
38
|
+
/** Signaturen til `captureRef` i react-native-view-shot — det eneste verten trenger å sende inn. */
|
|
39
|
+
type CaptureRefFn = (ref: RefObject<ViewRef | null> | ViewRef, options: {
|
|
40
|
+
format: 'jpg' | 'png';
|
|
41
|
+
quality: number;
|
|
42
|
+
result: 'tmpfile';
|
|
43
|
+
}) => Promise<string>;
|
|
44
|
+
/**
|
|
45
|
+
* Lager adapteren av vertens `captureRef`. Dimensjonene hentes med `Image.getSize`,
|
|
46
|
+
* målingen med `measureInWindow`, og fila leses med `fetch(uri).blob()` — alt fra
|
|
47
|
+
* React Native selv.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```tsx
|
|
51
|
+
* import { captureRef } from 'react-native-view-shot';
|
|
52
|
+
* <InnspelProvider client={innspel} screenshot={createScreenshotAdapter(captureRef)}>
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
declare function createScreenshotAdapter(captureRef: CaptureRefFn): ScreenshotAdapter;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* tokens.ts — GENERERT fra theme/theme.ts (avtrykk 96a5d02e08c9).
|
|
7
59
|
* Rediger aldri denne filen. Endre temaet i kilden og kjør
|
|
8
60
|
* `node scripts/generate-tokens.ts`, som CI verifiserer med `--check`.
|
|
9
61
|
*
|
|
@@ -194,6 +246,8 @@ declare const screenRules: {
|
|
|
194
246
|
readonly autoMaskFill: "#101114";
|
|
195
247
|
readonly autoMaskStroke: "#E5007D";
|
|
196
248
|
readonly previewBackdrop: "#000000";
|
|
249
|
+
readonly brushWidth: 28;
|
|
250
|
+
readonly textBlurRadius: 24;
|
|
197
251
|
};
|
|
198
252
|
/** Formen widgeten tar imot. Verten sender et delvis tema; resten faller tilbake hit. */
|
|
199
253
|
type InnspelTheme = typeof t;
|
|
@@ -249,9 +303,11 @@ interface InnspelKontekst {
|
|
|
249
303
|
/**
|
|
250
304
|
* Pakk appen i denne, og widgeten finnes.
|
|
251
305
|
*
|
|
252
|
-
* Provideren gjør
|
|
306
|
+
* Provideren gjør fire ting: den registrerer visningen hos kjernen (så
|
|
253
307
|
* `client.openFeedback()` virker hvor som helst i appen, også utenfor React),
|
|
254
|
-
* den holder temaet,
|
|
308
|
+
* den holder temaet, den rendrer selve arket — og den pakker vertsappen i én
|
|
309
|
+
* `View` med referanse, som er det skjermbildet tas av (K4). Modalen ligger
|
|
310
|
+
* utenfor den viewen og kommer aldri med på bildet.
|
|
255
311
|
*
|
|
256
312
|
* @example
|
|
257
313
|
* ```tsx
|
|
@@ -259,14 +315,14 @@ interface InnspelKontekst {
|
|
|
259
315
|
*
|
|
260
316
|
* export default function App() {
|
|
261
317
|
* return (
|
|
262
|
-
* <InnspelProvider client={innspel}>
|
|
318
|
+
* <InnspelProvider client={innspel} screenshot={createScreenshotAdapter(captureRef)}>
|
|
263
319
|
* <MinApp />
|
|
264
320
|
* </InnspelProvider>
|
|
265
321
|
* );
|
|
266
322
|
* }
|
|
267
323
|
* ```
|
|
268
324
|
*/
|
|
269
|
-
declare function InnspelProvider({ client, children, theme, colorScheme, tenantName, }: {
|
|
325
|
+
declare function InnspelProvider({ client, children, theme, colorScheme, tenantName, screenshot, }: {
|
|
270
326
|
client: InnspelClient;
|
|
271
327
|
children?: React.ReactNode;
|
|
272
328
|
/** Vertens egne tokens. Alt som utelates faller tilbake på Innspels tema. */
|
|
@@ -274,6 +330,12 @@ declare function InnspelProvider({ client, children, theme, colorScheme, tenantN
|
|
|
274
330
|
colorScheme?: 'dark' | 'light';
|
|
275
331
|
/** Navnet som står på svaret i «Mine innspill» — leietakerens, ikke Innspels. */
|
|
276
332
|
tenantName?: string;
|
|
333
|
+
/**
|
|
334
|
+
* Fangst av skjermbilde, typisk `createScreenshotAdapter(captureRef)` fra
|
|
335
|
+
* react-native-view-shot. Uten den finnes ikke skjermbilde-steget (DD-26) —
|
|
336
|
+
* og det finnes uansett ikke når `screenshotsEnabled` er av (K18).
|
|
337
|
+
*/
|
|
338
|
+
screenshot?: ScreenshotAdapter;
|
|
277
339
|
}): React.JSX.Element;
|
|
278
340
|
/**
|
|
279
341
|
* Klienten og `open` fra nærmeste {@link InnspelProvider}.
|
|
@@ -284,6 +346,24 @@ declare function InnspelProvider({ client, children, theme, colorScheme, tenantN
|
|
|
284
346
|
*/
|
|
285
347
|
declare function useInnspel(): InnspelKontekst;
|
|
286
348
|
|
|
349
|
+
/**
|
|
350
|
+
* Merk det som aldri skal være med på et skjermbilde (DD-39): navn i en liste,
|
|
351
|
+
* et kontonummer, en samtale. Pakk det inn, og widgeten maskerer det FØR
|
|
352
|
+
* innsenderen ser forhåndsvisningen — som «Maskert av appen», og penselen kan
|
|
353
|
+
* ikke oppheve det. Din kode er sannheten, ikke brukerens presisjon.
|
|
354
|
+
*
|
|
355
|
+
* Uten skjermbilde-adapter gjør komponenten ingenting utover å rendre barna.
|
|
356
|
+
*
|
|
357
|
+
* @example
|
|
358
|
+
* ```tsx
|
|
359
|
+
* <InnspelPrivate><Text>{bruker.navn}</Text></InnspelPrivate>
|
|
360
|
+
* ```
|
|
361
|
+
*/
|
|
362
|
+
declare function InnspelPrivate({ children, style }: {
|
|
363
|
+
children?: React.ReactNode;
|
|
364
|
+
style?: StyleProp<ViewStyle>;
|
|
365
|
+
}): React.JSX.Element;
|
|
366
|
+
|
|
287
367
|
/**
|
|
288
368
|
* Formen på lagringspakkene i React Native-økosystemet: AsyncStorage, MMKV med
|
|
289
369
|
* async-fasade, expo-secure-store. Alle tre har disse tre metodene.
|
|
@@ -388,6 +468,26 @@ declare const tekst: {
|
|
|
388
468
|
readonly kontekstAldri: "Aldri: navn, e-post, telefon, posisjon eller det som står på skjermen.";
|
|
389
469
|
readonly lenketTil: (tittel: string) => string;
|
|
390
470
|
readonly fjernLenke: "Fjern lenken til den kjente feilen";
|
|
471
|
+
readonly leggVedSkjermbilde: "Legg ved skjermbilde";
|
|
472
|
+
readonly leggVedHint: "Bildet tas først når du trykker — du ser det før det sendes.";
|
|
473
|
+
readonly skjermbildeTittel: "Se over bildet";
|
|
474
|
+
readonly skjermbildeUnder: "Bildet ble tatt da du trykket. Det du maskerer, ser vi aldri.";
|
|
475
|
+
readonly maskering: "Maskering";
|
|
476
|
+
readonly maskerFelt: "Masker felt";
|
|
477
|
+
readonly tegnOver: "Tegn over";
|
|
478
|
+
readonly maskerAllTekst: "Masker all tekst";
|
|
479
|
+
readonly maskertAvAppen: "Maskert av appen";
|
|
480
|
+
readonly maskertAvAppenHint: "Registrert privat view. Penselen kan ikke oppheve den.";
|
|
481
|
+
readonly dittStrok: "▲ ditt strøk — maskert (kan angres med ett trykk)";
|
|
482
|
+
readonly allTekstHint: "Hele bildet er gjort uskarpt så tekst ikke kan leses. Layouten er synlig.";
|
|
483
|
+
readonly fjernBildet: "Fjern bildet";
|
|
484
|
+
readonly leggVedOgFortsett: "Legg ved og fortsett";
|
|
485
|
+
readonly leggVedHintDD42: "Teksten sendes først; bildet lastes opp for seg.";
|
|
486
|
+
readonly skjermbildeLagtVed: "Skjermbilde lagt ved — maskert";
|
|
487
|
+
readonly fjernSkjermbilde: "Fjern skjermbildet";
|
|
488
|
+
readonly sendHintMedBilde: "Teksten sendes først; bildet lastes opp for seg.";
|
|
489
|
+
readonly skjermbildeFeilet: "kunne ikke ta skjermbilde. Du kan sende uten.";
|
|
490
|
+
readonly skjermbildeA11y: (auto: number, egne: number, uskarpt: boolean) => string;
|
|
391
491
|
readonly monsterSpm: {
|
|
392
492
|
readonly email: "Dette ser ut som en e-postadresse. Vil du fjerne den?";
|
|
393
493
|
readonly phone: "Dette ser ut som et telefonnummer. Vil du fjerne det?";
|
|
@@ -405,9 +505,16 @@ declare const tekst: {
|
|
|
405
505
|
readonly kvitteringJaOgsa: "Du får beskjed når den er rettet.";
|
|
406
506
|
readonly saksnummer: (nr: string) => string;
|
|
407
507
|
readonly tilbakeTilAppen: "Tilbake til appen";
|
|
508
|
+
/** DD-42: saken er sendt, bildet kom ikke med — aldri en blokkert innsending. */
|
|
509
|
+
readonly kvitteringVedleggFeilet: "Sendt — skjermbildet kunne ikke legges ved";
|
|
510
|
+
readonly tekstenErLagret: "Teksten din er lagret.";
|
|
511
|
+
readonly vedleggFeiletBanner: "Bildet ble ikke lastet opp. Saken er sendt uten det — vil du, kan du sende et nytt innspill med bilde.";
|
|
512
|
+
readonly saksnummerUtenVedlegg: (nr: string) => string;
|
|
408
513
|
readonly offlineTittel: "Ingen nett";
|
|
409
514
|
readonly offlineBanner: "Ingen nett. Lagres og sendes automatisk — du ser det under «Mine innspill» til det er sendt.";
|
|
410
515
|
readonly offlineLagre: "Lagre — sendes automatisk";
|
|
516
|
+
/** DD-41: et skjermbilde køes aldri. */
|
|
517
|
+
readonly offlineUtenBilde: "Skjermbilde kan ikke legges ved uten nett. Teksten sendes; bildet ble ikke lagret.";
|
|
411
518
|
readonly sendefeilBanner: (arsak: string) => string;
|
|
412
519
|
readonly provIgjen: "Prøv igjen";
|
|
413
520
|
readonly mineTittel: "Mine innspill";
|
|
@@ -441,4 +548,4 @@ declare const lofte: {
|
|
|
441
548
|
readonly avvist: "Vi har svart på denne.";
|
|
442
549
|
};
|
|
443
550
|
|
|
444
|
-
export { type AsyncStorageLike, type InnspelColors, InnspelProvider, type InnspelTheme, type PartialTheme, type StatusVisning, type Tema, byggTema, createMemoryStorage, createStorage, t as darkTokens, light, lofte, screenRules, statusVisning, tekst, useInnspel, useTema, venterVisning };
|
|
551
|
+
export { type AsyncStorageLike, type CaptureOptions, type CaptureRefFn, type InnspelColors, InnspelPrivate, 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 };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,61 @@
|
|
|
1
|
-
import { InnspelClient, OpenFeedbackOptions, InnspelStorage, SubmissionStatus, SubmissionType } from '@innspel/core';
|
|
2
|
-
export { CaptureInput, ContextInput, InnspelClient, InnspelOptions, InnspelStorage, MySubmission, OpenFeedbackOptions, SubmissionStatusView } from '@innspel/core';
|
|
3
|
-
import React from 'react';
|
|
1
|
+
import { MaskRect, InnspelClient, OpenFeedbackOptions, InnspelStorage, SubmissionStatus, SubmissionType } from '@innspel/core';
|
|
2
|
+
export { AttachmentInput, AttachmentOutcome, CaptureInput, ContextInput, InnspelClient, InnspelOptions, InnspelStorage, MySubmission, OpenFeedbackOptions, SubmissionStatusView } from '@innspel/core';
|
|
3
|
+
import React, { RefObject, ComponentRef } from 'react';
|
|
4
|
+
import { View, StyleProp, ViewStyle } from 'react-native';
|
|
4
5
|
|
|
6
|
+
/** Host-elementet bak en `View` — det som kan måles og fanges. RN 0.87: `View` er en funksjonskomponent, så typen hentes herfra. */
|
|
7
|
+
type ViewRef = ComponentRef<typeof View>;
|
|
5
8
|
/**
|
|
6
|
-
*
|
|
9
|
+
* Fangst av skjermbilde er det ene stedet widgeten trenger noe React Native
|
|
10
|
+
* ikke har innebygd. Pakken tar INGEN avhengighet på det (K19, samme mønster som
|
|
11
|
+
* `createStorage`): verten sender inn `captureRef` fra `react-native-view-shot`,
|
|
12
|
+
* og uten adapter finnes ikke skjermbilde-steget (DD-26) — ikke som en grå
|
|
13
|
+
* knapp, det finnes ikke.
|
|
14
|
+
*
|
|
15
|
+
* Alt som rører plattformen går gjennom adapteren, også måling og fillesing, så
|
|
16
|
+
* widgeten kan testes med en fake og maskeringen bevises uten native kode.
|
|
17
|
+
*/
|
|
18
|
+
interface ScreenshotCapture {
|
|
19
|
+
/** Fil-URI fra fangsten. Forlater aldri enheten før den er maskert og rekomponert. */
|
|
20
|
+
uri: string;
|
|
21
|
+
/** Bitmapens størrelse i piksler. */
|
|
22
|
+
width: number;
|
|
23
|
+
height: number;
|
|
24
|
+
}
|
|
25
|
+
interface CaptureOptions {
|
|
26
|
+
format: 'jpg' | 'png';
|
|
27
|
+
/** 0–1, kun JPEG. */
|
|
28
|
+
quality: number;
|
|
29
|
+
}
|
|
30
|
+
interface ScreenshotAdapter {
|
|
31
|
+
/** Fanger viewen bak referansen til en fil. Kalles ved «Legg ved skjermbilde» (K4), og igjen på forhåndsvisningen for å rekomponere. */
|
|
32
|
+
capture(ref: RefObject<ViewRef | null>, options: CaptureOptions): Promise<ScreenshotCapture>;
|
|
33
|
+
/** Viewens rektangel i vinduskoordinater, i punkter. Null når den ikke er montert. */
|
|
34
|
+
measure(ref: RefObject<ViewRef | null>): Promise<MaskRect | null>;
|
|
35
|
+
/** Leser en fangst som Blob for opplasting. */
|
|
36
|
+
read(uri: string): Promise<Blob>;
|
|
37
|
+
}
|
|
38
|
+
/** Signaturen til `captureRef` i react-native-view-shot — det eneste verten trenger å sende inn. */
|
|
39
|
+
type CaptureRefFn = (ref: RefObject<ViewRef | null> | ViewRef, options: {
|
|
40
|
+
format: 'jpg' | 'png';
|
|
41
|
+
quality: number;
|
|
42
|
+
result: 'tmpfile';
|
|
43
|
+
}) => Promise<string>;
|
|
44
|
+
/**
|
|
45
|
+
* Lager adapteren av vertens `captureRef`. Dimensjonene hentes med `Image.getSize`,
|
|
46
|
+
* målingen med `measureInWindow`, og fila leses med `fetch(uri).blob()` — alt fra
|
|
47
|
+
* React Native selv.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```tsx
|
|
51
|
+
* import { captureRef } from 'react-native-view-shot';
|
|
52
|
+
* <InnspelProvider client={innspel} screenshot={createScreenshotAdapter(captureRef)}>
|
|
53
|
+
* ```
|
|
54
|
+
*/
|
|
55
|
+
declare function createScreenshotAdapter(captureRef: CaptureRefFn): ScreenshotAdapter;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* tokens.ts — GENERERT fra theme/theme.ts (avtrykk 96a5d02e08c9).
|
|
7
59
|
* Rediger aldri denne filen. Endre temaet i kilden og kjør
|
|
8
60
|
* `node scripts/generate-tokens.ts`, som CI verifiserer med `--check`.
|
|
9
61
|
*
|
|
@@ -194,6 +246,8 @@ declare const screenRules: {
|
|
|
194
246
|
readonly autoMaskFill: "#101114";
|
|
195
247
|
readonly autoMaskStroke: "#E5007D";
|
|
196
248
|
readonly previewBackdrop: "#000000";
|
|
249
|
+
readonly brushWidth: 28;
|
|
250
|
+
readonly textBlurRadius: 24;
|
|
197
251
|
};
|
|
198
252
|
/** Formen widgeten tar imot. Verten sender et delvis tema; resten faller tilbake hit. */
|
|
199
253
|
type InnspelTheme = typeof t;
|
|
@@ -249,9 +303,11 @@ interface InnspelKontekst {
|
|
|
249
303
|
/**
|
|
250
304
|
* Pakk appen i denne, og widgeten finnes.
|
|
251
305
|
*
|
|
252
|
-
* Provideren gjør
|
|
306
|
+
* Provideren gjør fire ting: den registrerer visningen hos kjernen (så
|
|
253
307
|
* `client.openFeedback()` virker hvor som helst i appen, også utenfor React),
|
|
254
|
-
* den holder temaet,
|
|
308
|
+
* den holder temaet, den rendrer selve arket — og den pakker vertsappen i én
|
|
309
|
+
* `View` med referanse, som er det skjermbildet tas av (K4). Modalen ligger
|
|
310
|
+
* utenfor den viewen og kommer aldri med på bildet.
|
|
255
311
|
*
|
|
256
312
|
* @example
|
|
257
313
|
* ```tsx
|
|
@@ -259,14 +315,14 @@ interface InnspelKontekst {
|
|
|
259
315
|
*
|
|
260
316
|
* export default function App() {
|
|
261
317
|
* return (
|
|
262
|
-
* <InnspelProvider client={innspel}>
|
|
318
|
+
* <InnspelProvider client={innspel} screenshot={createScreenshotAdapter(captureRef)}>
|
|
263
319
|
* <MinApp />
|
|
264
320
|
* </InnspelProvider>
|
|
265
321
|
* );
|
|
266
322
|
* }
|
|
267
323
|
* ```
|
|
268
324
|
*/
|
|
269
|
-
declare function InnspelProvider({ client, children, theme, colorScheme, tenantName, }: {
|
|
325
|
+
declare function InnspelProvider({ client, children, theme, colorScheme, tenantName, screenshot, }: {
|
|
270
326
|
client: InnspelClient;
|
|
271
327
|
children?: React.ReactNode;
|
|
272
328
|
/** Vertens egne tokens. Alt som utelates faller tilbake på Innspels tema. */
|
|
@@ -274,6 +330,12 @@ declare function InnspelProvider({ client, children, theme, colorScheme, tenantN
|
|
|
274
330
|
colorScheme?: 'dark' | 'light';
|
|
275
331
|
/** Navnet som står på svaret i «Mine innspill» — leietakerens, ikke Innspels. */
|
|
276
332
|
tenantName?: string;
|
|
333
|
+
/**
|
|
334
|
+
* Fangst av skjermbilde, typisk `createScreenshotAdapter(captureRef)` fra
|
|
335
|
+
* react-native-view-shot. Uten den finnes ikke skjermbilde-steget (DD-26) —
|
|
336
|
+
* og det finnes uansett ikke når `screenshotsEnabled` er av (K18).
|
|
337
|
+
*/
|
|
338
|
+
screenshot?: ScreenshotAdapter;
|
|
277
339
|
}): React.JSX.Element;
|
|
278
340
|
/**
|
|
279
341
|
* Klienten og `open` fra nærmeste {@link InnspelProvider}.
|
|
@@ -284,6 +346,24 @@ declare function InnspelProvider({ client, children, theme, colorScheme, tenantN
|
|
|
284
346
|
*/
|
|
285
347
|
declare function useInnspel(): InnspelKontekst;
|
|
286
348
|
|
|
349
|
+
/**
|
|
350
|
+
* Merk det som aldri skal være med på et skjermbilde (DD-39): navn i en liste,
|
|
351
|
+
* et kontonummer, en samtale. Pakk det inn, og widgeten maskerer det FØR
|
|
352
|
+
* innsenderen ser forhåndsvisningen — som «Maskert av appen», og penselen kan
|
|
353
|
+
* ikke oppheve det. Din kode er sannheten, ikke brukerens presisjon.
|
|
354
|
+
*
|
|
355
|
+
* Uten skjermbilde-adapter gjør komponenten ingenting utover å rendre barna.
|
|
356
|
+
*
|
|
357
|
+
* @example
|
|
358
|
+
* ```tsx
|
|
359
|
+
* <InnspelPrivate><Text>{bruker.navn}</Text></InnspelPrivate>
|
|
360
|
+
* ```
|
|
361
|
+
*/
|
|
362
|
+
declare function InnspelPrivate({ children, style }: {
|
|
363
|
+
children?: React.ReactNode;
|
|
364
|
+
style?: StyleProp<ViewStyle>;
|
|
365
|
+
}): React.JSX.Element;
|
|
366
|
+
|
|
287
367
|
/**
|
|
288
368
|
* Formen på lagringspakkene i React Native-økosystemet: AsyncStorage, MMKV med
|
|
289
369
|
* async-fasade, expo-secure-store. Alle tre har disse tre metodene.
|
|
@@ -388,6 +468,26 @@ declare const tekst: {
|
|
|
388
468
|
readonly kontekstAldri: "Aldri: navn, e-post, telefon, posisjon eller det som står på skjermen.";
|
|
389
469
|
readonly lenketTil: (tittel: string) => string;
|
|
390
470
|
readonly fjernLenke: "Fjern lenken til den kjente feilen";
|
|
471
|
+
readonly leggVedSkjermbilde: "Legg ved skjermbilde";
|
|
472
|
+
readonly leggVedHint: "Bildet tas først når du trykker — du ser det før det sendes.";
|
|
473
|
+
readonly skjermbildeTittel: "Se over bildet";
|
|
474
|
+
readonly skjermbildeUnder: "Bildet ble tatt da du trykket. Det du maskerer, ser vi aldri.";
|
|
475
|
+
readonly maskering: "Maskering";
|
|
476
|
+
readonly maskerFelt: "Masker felt";
|
|
477
|
+
readonly tegnOver: "Tegn over";
|
|
478
|
+
readonly maskerAllTekst: "Masker all tekst";
|
|
479
|
+
readonly maskertAvAppen: "Maskert av appen";
|
|
480
|
+
readonly maskertAvAppenHint: "Registrert privat view. Penselen kan ikke oppheve den.";
|
|
481
|
+
readonly dittStrok: "▲ ditt strøk — maskert (kan angres med ett trykk)";
|
|
482
|
+
readonly allTekstHint: "Hele bildet er gjort uskarpt så tekst ikke kan leses. Layouten er synlig.";
|
|
483
|
+
readonly fjernBildet: "Fjern bildet";
|
|
484
|
+
readonly leggVedOgFortsett: "Legg ved og fortsett";
|
|
485
|
+
readonly leggVedHintDD42: "Teksten sendes først; bildet lastes opp for seg.";
|
|
486
|
+
readonly skjermbildeLagtVed: "Skjermbilde lagt ved — maskert";
|
|
487
|
+
readonly fjernSkjermbilde: "Fjern skjermbildet";
|
|
488
|
+
readonly sendHintMedBilde: "Teksten sendes først; bildet lastes opp for seg.";
|
|
489
|
+
readonly skjermbildeFeilet: "kunne ikke ta skjermbilde. Du kan sende uten.";
|
|
490
|
+
readonly skjermbildeA11y: (auto: number, egne: number, uskarpt: boolean) => string;
|
|
391
491
|
readonly monsterSpm: {
|
|
392
492
|
readonly email: "Dette ser ut som en e-postadresse. Vil du fjerne den?";
|
|
393
493
|
readonly phone: "Dette ser ut som et telefonnummer. Vil du fjerne det?";
|
|
@@ -405,9 +505,16 @@ declare const tekst: {
|
|
|
405
505
|
readonly kvitteringJaOgsa: "Du får beskjed når den er rettet.";
|
|
406
506
|
readonly saksnummer: (nr: string) => string;
|
|
407
507
|
readonly tilbakeTilAppen: "Tilbake til appen";
|
|
508
|
+
/** DD-42: saken er sendt, bildet kom ikke med — aldri en blokkert innsending. */
|
|
509
|
+
readonly kvitteringVedleggFeilet: "Sendt — skjermbildet kunne ikke legges ved";
|
|
510
|
+
readonly tekstenErLagret: "Teksten din er lagret.";
|
|
511
|
+
readonly vedleggFeiletBanner: "Bildet ble ikke lastet opp. Saken er sendt uten det — vil du, kan du sende et nytt innspill med bilde.";
|
|
512
|
+
readonly saksnummerUtenVedlegg: (nr: string) => string;
|
|
408
513
|
readonly offlineTittel: "Ingen nett";
|
|
409
514
|
readonly offlineBanner: "Ingen nett. Lagres og sendes automatisk — du ser det under «Mine innspill» til det er sendt.";
|
|
410
515
|
readonly offlineLagre: "Lagre — sendes automatisk";
|
|
516
|
+
/** DD-41: et skjermbilde køes aldri. */
|
|
517
|
+
readonly offlineUtenBilde: "Skjermbilde kan ikke legges ved uten nett. Teksten sendes; bildet ble ikke lagret.";
|
|
411
518
|
readonly sendefeilBanner: (arsak: string) => string;
|
|
412
519
|
readonly provIgjen: "Prøv igjen";
|
|
413
520
|
readonly mineTittel: "Mine innspill";
|
|
@@ -441,4 +548,4 @@ declare const lofte: {
|
|
|
441
548
|
readonly avvist: "Vi har svart på denne.";
|
|
442
549
|
};
|
|
443
550
|
|
|
444
|
-
export { type AsyncStorageLike, type InnspelColors, InnspelProvider, type InnspelTheme, type PartialTheme, type StatusVisning, type Tema, byggTema, createMemoryStorage, createStorage, t as darkTokens, light, lofte, screenRules, statusVisning, tekst, useInnspel, useTema, venterVisning };
|
|
551
|
+
export { type AsyncStorageLike, type CaptureOptions, type CaptureRefFn, type InnspelColors, InnspelPrivate, 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 };
|