panelui-native 0.14.0 → 0.19.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 +2 -0
- package/lib/module/components/bottom-sheet/index.js +38 -10
- package/lib/module/components/bottom-sheet/index.js.map +1 -1
- package/lib/module/components/checkbox/index.js +24 -11
- package/lib/module/components/checkbox/index.js.map +1 -1
- package/lib/module/components/direction/index.js +86 -0
- package/lib/module/components/direction/index.js.map +1 -0
- package/lib/module/components/field/index.js +337 -0
- package/lib/module/components/field/index.js.map +1 -0
- package/lib/module/components/flow/flow-paths.js +378 -0
- package/lib/module/components/flow/flow-paths.js.map +1 -0
- package/lib/module/components/flow/index.js +1598 -0
- package/lib/module/components/flow/index.js.map +1 -0
- package/lib/module/components/form/index.js +77 -0
- package/lib/module/components/form/index.js.map +1 -0
- package/lib/module/components/form/use-field.js +50 -0
- package/lib/module/components/form/use-field.js.map +1 -0
- package/lib/module/components/form/use-form.js +217 -0
- package/lib/module/components/form/use-form.js.map +1 -0
- package/lib/module/components/frame/index.js +124 -22
- package/lib/module/components/frame/index.js.map +1 -1
- package/lib/module/components/message/index.js +16 -1
- package/lib/module/components/message/index.js.map +1 -1
- package/lib/module/components/otp-input/index.js +303 -0
- package/lib/module/components/otp-input/index.js.map +1 -0
- package/lib/module/components/signature/index.js +500 -0
- package/lib/module/components/signature/index.js.map +1 -0
- package/lib/module/components/soundwave/index.js +813 -0
- package/lib/module/components/soundwave/index.js.map +1 -0
- package/lib/module/components/typography/index.js +196 -5
- package/lib/module/components/typography/index.js.map +1 -1
- package/lib/module/icons/index.js +287 -0
- package/lib/module/icons/index.js.map +1 -1
- package/lib/module/index.js +8 -1
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/components/bottom-sheet/index.d.ts +15 -1
- package/lib/typescript/src/components/bottom-sheet/index.d.ts.map +1 -1
- package/lib/typescript/src/components/checkbox/index.d.ts +8 -0
- package/lib/typescript/src/components/checkbox/index.d.ts.map +1 -1
- package/lib/typescript/src/components/direction/index.d.ts +64 -0
- package/lib/typescript/src/components/direction/index.d.ts.map +1 -0
- package/lib/typescript/src/components/field/index.d.ts +94 -0
- package/lib/typescript/src/components/field/index.d.ts.map +1 -0
- package/lib/typescript/src/components/flow/flow-paths.d.ts +89 -0
- package/lib/typescript/src/components/flow/flow-paths.d.ts.map +1 -0
- package/lib/typescript/src/components/flow/index.d.ts +310 -0
- package/lib/typescript/src/components/flow/index.d.ts.map +1 -0
- package/lib/typescript/src/components/form/index.d.ts +64 -0
- package/lib/typescript/src/components/form/index.d.ts.map +1 -0
- package/lib/typescript/src/components/form/use-field.d.ts +16 -0
- package/lib/typescript/src/components/form/use-field.d.ts.map +1 -0
- package/lib/typescript/src/components/form/use-form.d.ts +37 -0
- package/lib/typescript/src/components/form/use-form.d.ts.map +1 -0
- package/lib/typescript/src/components/frame/index.d.ts +39 -2
- package/lib/typescript/src/components/frame/index.d.ts.map +1 -1
- package/lib/typescript/src/components/message/index.d.ts.map +1 -1
- package/lib/typescript/src/components/otp-input/index.d.ts +141 -0
- package/lib/typescript/src/components/otp-input/index.d.ts.map +1 -0
- package/lib/typescript/src/components/signature/index.d.ts +254 -0
- package/lib/typescript/src/components/signature/index.d.ts.map +1 -0
- package/lib/typescript/src/components/soundwave/index.d.ts +91 -0
- package/lib/typescript/src/components/soundwave/index.d.ts.map +1 -0
- package/lib/typescript/src/components/typography/index.d.ts +154 -1
- package/lib/typescript/src/components/typography/index.d.ts.map +1 -1
- package/lib/typescript/src/icons/index.d.ts +23 -0
- package/lib/typescript/src/icons/index.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +9 -2
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/package.json +9 -1
- package/src/components/bottom-sheet/index.tsx +50 -12
- package/src/components/checkbox/index.tsx +40 -12
- package/src/components/direction/index.tsx +90 -0
- package/src/components/field/index.tsx +329 -0
- package/src/components/flow/flow-paths.ts +348 -0
- package/src/components/flow/index.tsx +1924 -0
- package/src/components/form/index.tsx +85 -0
- package/src/components/form/use-field.ts +65 -0
- package/src/components/form/use-form.ts +252 -0
- package/src/components/frame/index.tsx +162 -14
- package/src/components/message/index.tsx +17 -1
- package/src/components/otp-input/index.tsx +396 -0
- package/src/components/signature/index.tsx +681 -0
- package/src/components/soundwave/index.tsx +1029 -0
- package/src/components/typography/index.tsx +231 -10
- package/src/icons/index.tsx +195 -0
- package/src/index.ts +87 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","useCallback","useEffect","useMemo","useRef","useState","Pressable","TextInput","View","Animated","cancelAnimation","interpolateColor","useAnimatedStyle","useSharedValue","withRepeat","withSequence","withTiming","ZoomIn","tv","useCSSVariable","Text","jsx","_jsx","jsxs","_jsxs","FOCUS_DURATION","CARET_PERIOD","otpVariants","slots","container","row","cell","char","caret","separator","error","variants","size","sm","md","lg","disabled","true","defaultVariants","OtpCell","active","focused","mask","placeholder","invalid","className","charClassName","caretClassName","restColor","focusColor","errorColor","placeholderColor","resting","activeColor","idle","lit","border","value","duration","borderStyle","borderColor","borderWidth","length","caretStyle","opacity","style","children","entering","pointerEvents","color","sanitize","raw","type","filtered","replace","slice","OtpInput","cellClassName","valueProp","defaultValue","onChangeText","onComplete","groupEvery","isInvalid","errorMessage","accessibilityLabel","onFocus","onBlur","props","ref","controlled","internal","setInternal","setFocused","inputRef","completedRef","setRef","node","current","handleChange","next","focus","activeIndex","Math","min","cells","Array","from","_","i","onPress","accessible","map","editable","keyboardType","textContentType","autoComplete","maxLength","caretHidden","accessibilityState","e","position","top","left","right","bottom","displayName"],"sourceRoot":"../../../../src","sources":["components/otp-input/index.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,500 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Signature — a surface you sign with a finger, and a handle for getting the
|
|
5
|
+
* result back out.
|
|
6
|
+
*
|
|
7
|
+
* ```tsx
|
|
8
|
+
* const pad = useRef<SignatureHandle>(null);
|
|
9
|
+
*
|
|
10
|
+
* <Signature ref={pad} guideline />
|
|
11
|
+
* <Button onPress={() => pad.current?.save({ filename: 'agreement' })}>
|
|
12
|
+
* Finish signing
|
|
13
|
+
* </Button>
|
|
14
|
+
* ```
|
|
15
|
+
*
|
|
16
|
+
* ## Why the stroke never reaches React
|
|
17
|
+
*
|
|
18
|
+
* A finger produces touch events far faster than a component tree can usefully
|
|
19
|
+
* re-render, and a signature is exactly the case where the lag shows: the line
|
|
20
|
+
* trails the fingertip and the whole thing feels like drawing through syrup.
|
|
21
|
+
*
|
|
22
|
+
* So the stroke being drawn lives in a shared value and is turned into an SVG
|
|
23
|
+
* `d` string by a worklet on the UI thread — React is not involved in a single
|
|
24
|
+
* frame of it. When the finger lifts, that one finished string crosses to
|
|
25
|
+
* JavaScript once and becomes a static path. Committed strokes are ordinary
|
|
26
|
+
* elements that never animate again, so the hundredth stroke costs what the
|
|
27
|
+
* first one did.
|
|
28
|
+
*
|
|
29
|
+
* Points closer together than `minDistance` are dropped as they arrive. A slow
|
|
30
|
+
* finger otherwise emits a point per frame in the same spot, which is a longer
|
|
31
|
+
* path describing the same shape.
|
|
32
|
+
*
|
|
33
|
+
* ## Smoothing
|
|
34
|
+
*
|
|
35
|
+
* Raw touch points joined with straight lines look like a seismograph. Each
|
|
36
|
+
* segment is drawn as a quadratic curve through the midpoint between two
|
|
37
|
+
* points instead — the point itself becomes the control handle, the midpoints
|
|
38
|
+
* become the anchors, and consecutive curves meet with a shared tangent. It
|
|
39
|
+
* needs no lookahead, so a point can be appended to a stroke already on screen
|
|
40
|
+
* without redrawing what came before it differently.
|
|
41
|
+
*
|
|
42
|
+
* ## Getting it out
|
|
43
|
+
*
|
|
44
|
+
* `toSVG()` is pure string building and always works. Writing a file needs
|
|
45
|
+
* `expo-file-system`, and rasterising to PNG needs `react-native-view-shot` as
|
|
46
|
+
* well; both are optional and both are resolved lazily, so a project that only
|
|
47
|
+
* ever reads the SVG installs neither. Asking for something the missing
|
|
48
|
+
* package provides throws with its name in the message rather than failing
|
|
49
|
+
* somewhere further down.
|
|
50
|
+
*/
|
|
51
|
+
import { forwardRef, useCallback, useEffect, useImperativeHandle, useMemo, useRef, useState } from 'react';
|
|
52
|
+
import { View } from 'react-native';
|
|
53
|
+
import { useCSSVariable } from 'uniwind';
|
|
54
|
+
import { Gesture, GestureDetector } from 'react-native-gesture-handler';
|
|
55
|
+
import Animated, { runOnJS, useAnimatedProps, useSharedValue } from 'react-native-reanimated';
|
|
56
|
+
import Svg, { Path } from 'react-native-svg';
|
|
57
|
+
import { tv } from 'tailwind-variants';
|
|
58
|
+
import { PencilIcon, RotateCcwIcon, TrashIcon } from "../../icons/index.js";
|
|
59
|
+
import { AnimatedPressable } from "../../primitives/animated-pressable.js";
|
|
60
|
+
import { Text } from "../../primitives/text.js";
|
|
61
|
+
import { cn } from "../../utils/cn.js";
|
|
62
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
63
|
+
const AnimatedPath = Animated.createAnimatedComponent(Path);
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* `expo-file-system`, or null when it is not installed. Resolved once at module
|
|
67
|
+
* load, the way every optional dependency in the library is.
|
|
68
|
+
*/
|
|
69
|
+
const FileSystem = (() => {
|
|
70
|
+
try {
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
72
|
+
return require('expo-file-system');
|
|
73
|
+
} catch {
|
|
74
|
+
return null;
|
|
75
|
+
}
|
|
76
|
+
})();
|
|
77
|
+
|
|
78
|
+
/** `react-native-view-shot`'s capture function, or null. PNG export only. */
|
|
79
|
+
const captureRef = (() => {
|
|
80
|
+
try {
|
|
81
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
82
|
+
const mod = require('react-native-view-shot');
|
|
83
|
+
return mod?.captureRef ?? null;
|
|
84
|
+
} catch {
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
})();
|
|
88
|
+
|
|
89
|
+
/** True when a signature can be written to a file. */
|
|
90
|
+
export const hasSignatureFileSystem = FileSystem !== null;
|
|
91
|
+
|
|
92
|
+
/** True when a signature can be rasterised to PNG. */
|
|
93
|
+
export const hasSignatureRaster = captureRef !== null;
|
|
94
|
+
const signatureVariants = tv({
|
|
95
|
+
slots: {
|
|
96
|
+
root: 'overflow-hidden rounded-2xl border border-border bg-card',
|
|
97
|
+
pad: 'flex-1',
|
|
98
|
+
placeholder: 'absolute inset-0 items-center justify-center gap-2',
|
|
99
|
+
guide: 'absolute inset-x-6 flex-row items-center gap-3',
|
|
100
|
+
toolbar: 'flex-row items-center justify-between gap-2 px-3 py-2'
|
|
101
|
+
},
|
|
102
|
+
variants: {
|
|
103
|
+
size: {
|
|
104
|
+
sm: {
|
|
105
|
+
root: 'h-32'
|
|
106
|
+
},
|
|
107
|
+
md: {
|
|
108
|
+
root: 'h-48'
|
|
109
|
+
},
|
|
110
|
+
lg: {
|
|
111
|
+
root: 'h-64'
|
|
112
|
+
},
|
|
113
|
+
/** Fills whatever it is given — for a full-screen signing surface. */
|
|
114
|
+
full: {
|
|
115
|
+
root: 'h-auto flex-1 rounded-none border-0'
|
|
116
|
+
}
|
|
117
|
+
},
|
|
118
|
+
disabled: {
|
|
119
|
+
true: {
|
|
120
|
+
root: 'opacity-[0.64]'
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
defaultVariants: {
|
|
125
|
+
size: 'md'
|
|
126
|
+
}
|
|
127
|
+
});
|
|
128
|
+
/**
|
|
129
|
+
* Turns a flat `[x, y, x, y, …]` buffer into a path, curving through the
|
|
130
|
+
* midpoint between each pair of points.
|
|
131
|
+
*
|
|
132
|
+
* A worklet, because it runs against the live stroke on the UI thread — and
|
|
133
|
+
* because the same function has to produce the committed string once the
|
|
134
|
+
* finger lifts, so the line does not shift the instant it stops being live.
|
|
135
|
+
*/
|
|
136
|
+
function strokePath(points) {
|
|
137
|
+
'worklet';
|
|
138
|
+
|
|
139
|
+
const count = points.length / 2;
|
|
140
|
+
if (count === 0) return '';
|
|
141
|
+
|
|
142
|
+
// A tap is a dot. Without this it would be an empty path and the touch would
|
|
143
|
+
// leave no mark at all, which reads as the pad having missed it.
|
|
144
|
+
if (count === 1) {
|
|
145
|
+
return `M${points[0]},${points[1]} l0.01,0`;
|
|
146
|
+
}
|
|
147
|
+
let d = `M${points[0]},${points[1]}`;
|
|
148
|
+
for (let i = 1; i < count; i += 1) {
|
|
149
|
+
const px = points[(i - 1) * 2];
|
|
150
|
+
const py = points[(i - 1) * 2 + 1];
|
|
151
|
+
const x = points[i * 2];
|
|
152
|
+
const y = points[i * 2 + 1];
|
|
153
|
+
// The point is the control handle and the midpoint is the anchor, so the
|
|
154
|
+
// curve leaving this segment shares a tangent with the one entering the
|
|
155
|
+
// next and the join is invisible.
|
|
156
|
+
d += ` Q${px},${py} ${(px + x) / 2},${(py + y) / 2}`;
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// Finish at the real last point rather than at the midpoint before it, or
|
|
160
|
+
// the stroke stops visibly short of where the finger lifted.
|
|
161
|
+
d += ` L${points[(count - 1) * 2]},${points[(count - 1) * 2 + 1]}`;
|
|
162
|
+
return d;
|
|
163
|
+
}
|
|
164
|
+
function SignatureRoot({
|
|
165
|
+
className,
|
|
166
|
+
size = 'md',
|
|
167
|
+
strokeColor,
|
|
168
|
+
strokeWidth = 2.5,
|
|
169
|
+
minDistance = 1.5,
|
|
170
|
+
guideline = false,
|
|
171
|
+
guidelineLabel,
|
|
172
|
+
placeholder,
|
|
173
|
+
disabled = false,
|
|
174
|
+
onBegin,
|
|
175
|
+
onEnd,
|
|
176
|
+
onChange,
|
|
177
|
+
padClassName,
|
|
178
|
+
placeholderClassName,
|
|
179
|
+
guideClassName,
|
|
180
|
+
...props
|
|
181
|
+
}, ref) {
|
|
182
|
+
const slots = signatureVariants({
|
|
183
|
+
size,
|
|
184
|
+
disabled
|
|
185
|
+
});
|
|
186
|
+
const [strokes, setStrokes] = useState([]);
|
|
187
|
+
const [undone, setUndone] = useState([]);
|
|
188
|
+
const [layout, setLayout] = useState({
|
|
189
|
+
width: 0,
|
|
190
|
+
height: 0
|
|
191
|
+
});
|
|
192
|
+
|
|
193
|
+
// The live stroke: a flat buffer so the worklet reads numbers rather than
|
|
194
|
+
// objects, which is what keeps the per-frame cost flat.
|
|
195
|
+
const live = useSharedValue([]);
|
|
196
|
+
const padRef = useRef(null);
|
|
197
|
+
const inkToken = useCSSVariable('--color-foreground');
|
|
198
|
+
const ink = strokeColor ?? (typeof inkToken === 'string' ? inkToken : '#0a0a0a');
|
|
199
|
+
|
|
200
|
+
// Latest-props refs, so the gesture is built once and still calls the
|
|
201
|
+
// handlers the component was last rendered with.
|
|
202
|
+
const changeRef = useRef(onChange);
|
|
203
|
+
changeRef.current = onChange;
|
|
204
|
+
const beginRef = useRef(onBegin);
|
|
205
|
+
beginRef.current = onBegin;
|
|
206
|
+
const endRef = useRef(onEnd);
|
|
207
|
+
endRef.current = onEnd;
|
|
208
|
+
|
|
209
|
+
// `onChange` fires from an effect rather than from inside a state updater.
|
|
210
|
+
// An updater can be replayed during a render, and calling a parent's setState
|
|
211
|
+
// from there is the "cannot update a component while rendering a different
|
|
212
|
+
// component" warning — earned, not spurious.
|
|
213
|
+
const reported = useRef(0);
|
|
214
|
+
useEffect(() => {
|
|
215
|
+
if (reported.current === strokes.length) return;
|
|
216
|
+
reported.current = strokes.length;
|
|
217
|
+
changeRef.current?.(strokes.length);
|
|
218
|
+
}, [strokes.length]);
|
|
219
|
+
const commit = useCallback(d => {
|
|
220
|
+
setStrokes(current => [...current, d]);
|
|
221
|
+
// Drawing again is a new branch of history, so what was undone is gone.
|
|
222
|
+
setUndone([]);
|
|
223
|
+
endRef.current?.();
|
|
224
|
+
}, []);
|
|
225
|
+
const begin = useCallback(() => beginRef.current?.(), []);
|
|
226
|
+
const pan = useMemo(() => Gesture.Pan()
|
|
227
|
+
// Without this a signature's first, shortest stroke — the dot on an
|
|
228
|
+
// i, a full stop — never activates the gesture and is simply lost.
|
|
229
|
+
.minDistance(0).averageTouches(true).enabled(!disabled).onBegin(event => {
|
|
230
|
+
'worklet';
|
|
231
|
+
|
|
232
|
+
live.value = [event.x, event.y];
|
|
233
|
+
runOnJS(begin)();
|
|
234
|
+
}).onUpdate(event => {
|
|
235
|
+
'worklet';
|
|
236
|
+
|
|
237
|
+
const points = live.value;
|
|
238
|
+
const last = points.length;
|
|
239
|
+
if (last >= 2) {
|
|
240
|
+
const dx = event.x - points[last - 2];
|
|
241
|
+
const dy = event.y - points[last - 1];
|
|
242
|
+
if (dx * dx + dy * dy < minDistance * minDistance) return;
|
|
243
|
+
}
|
|
244
|
+
// A new array, not a push: a shared value only notifies on
|
|
245
|
+
// assignment, and mutating in place leaves the path stale.
|
|
246
|
+
live.value = [...points, event.x, event.y];
|
|
247
|
+
}).onFinalize(() => {
|
|
248
|
+
'worklet';
|
|
249
|
+
|
|
250
|
+
const points = live.value;
|
|
251
|
+
live.value = [];
|
|
252
|
+
if (points.length === 0) return;
|
|
253
|
+
runOnJS(commit)(strokePath(points));
|
|
254
|
+
}), [begin, commit, disabled, live, minDistance]);
|
|
255
|
+
const liveProps = useAnimatedProps(() => ({
|
|
256
|
+
d: strokePath(live.value)
|
|
257
|
+
}));
|
|
258
|
+
const svgDocument = useCallback(() => {
|
|
259
|
+
const width = Math.round(layout.width) || 1;
|
|
260
|
+
const height = Math.round(layout.height) || 1;
|
|
261
|
+
const paths = strokes.map(d => `<path d="${d}" fill="none" stroke="${ink}" stroke-width="${strokeWidth}" ` + 'stroke-linecap="round" stroke-linejoin="round"/>').join('');
|
|
262
|
+
return `<svg xmlns="http://www.w3.org/2000/svg" width="${width}" height="${height}" ` + `viewBox="0 0 ${width} ${height}">${paths}</svg>`;
|
|
263
|
+
}, [ink, layout.height, layout.width, strokeWidth, strokes]);
|
|
264
|
+
const rasterise = useCallback(async scale => {
|
|
265
|
+
if (!captureRef) {
|
|
266
|
+
throw new Error('Signature: PNG export needs the optional `react-native-view-shot` package. ' + 'Install it, or export SVG instead.');
|
|
267
|
+
}
|
|
268
|
+
return captureRef(padRef.current, {
|
|
269
|
+
format: 'png',
|
|
270
|
+
quality: 1,
|
|
271
|
+
result: 'tmpfile',
|
|
272
|
+
width: Math.round(layout.width * scale),
|
|
273
|
+
height: Math.round(layout.height * scale)
|
|
274
|
+
});
|
|
275
|
+
}, [layout.height, layout.width]);
|
|
276
|
+
useImperativeHandle(ref, () => ({
|
|
277
|
+
// These read the current arrays and set flat values rather than nesting
|
|
278
|
+
// one updater inside another — a nested updater runs during the render
|
|
279
|
+
// pass, which is not a safe place to schedule another component's update.
|
|
280
|
+
clear() {
|
|
281
|
+
setStrokes([]);
|
|
282
|
+
setUndone([]);
|
|
283
|
+
},
|
|
284
|
+
undo() {
|
|
285
|
+
const last = strokes[strokes.length - 1];
|
|
286
|
+
if (last === undefined) return;
|
|
287
|
+
setUndone(stack => [...stack, last]);
|
|
288
|
+
setStrokes(strokes.slice(0, -1));
|
|
289
|
+
},
|
|
290
|
+
redo() {
|
|
291
|
+
const restored = undone[undone.length - 1];
|
|
292
|
+
if (restored === undefined) return;
|
|
293
|
+
setUndone(undone.slice(0, -1));
|
|
294
|
+
setStrokes([...strokes, restored]);
|
|
295
|
+
},
|
|
296
|
+
isEmpty: () => strokes.length === 0,
|
|
297
|
+
strokeCount: () => strokes.length,
|
|
298
|
+
toSVG: svgDocument,
|
|
299
|
+
async toDataURL(format = 'svg') {
|
|
300
|
+
if (format === 'svg') {
|
|
301
|
+
// encodeURIComponent rather than base64: no polyfill needed, and the
|
|
302
|
+
// result is legible in a log, which matters when debugging a save.
|
|
303
|
+
return `data:image/svg+xml;utf8,${encodeURIComponent(svgDocument())}`;
|
|
304
|
+
}
|
|
305
|
+
const uri = await rasterise(2);
|
|
306
|
+
if (!FileSystem) {
|
|
307
|
+
throw new Error('Signature: reading a PNG back as a data URI needs the optional ' + '`expo-file-system` package. The file itself is at ' + `${uri} — pass that to an <Image> instead.`);
|
|
308
|
+
}
|
|
309
|
+
const read = FileSystem.readAsStringAsync;
|
|
310
|
+
if (!read) throw new Error('Signature: `expo-file-system` has no readAsStringAsync.');
|
|
311
|
+
const base64 = await read(uri, {
|
|
312
|
+
encoding: 'base64'
|
|
313
|
+
});
|
|
314
|
+
return `data:image/png;base64,${base64}`;
|
|
315
|
+
},
|
|
316
|
+
async save(options = {}) {
|
|
317
|
+
const {
|
|
318
|
+
directory,
|
|
319
|
+
filename,
|
|
320
|
+
format = 'svg',
|
|
321
|
+
scale = 2
|
|
322
|
+
} = options;
|
|
323
|
+
if (!FileSystem) {
|
|
324
|
+
throw new Error('Signature: save() needs the optional `expo-file-system` package. ' + 'Install it, or use toSVG() and write the string yourself.');
|
|
325
|
+
}
|
|
326
|
+
const base = directory ?? FileSystem.documentDirectory ?? FileSystem.Paths?.document?.uri;
|
|
327
|
+
if (!base) {
|
|
328
|
+
throw new Error('Signature: no document directory available — pass `directory` explicitly.');
|
|
329
|
+
}
|
|
330
|
+
const name = filename ?? `signature-${Date.now()}`;
|
|
331
|
+
const dir = base.endsWith('/') ? base : `${base}/`;
|
|
332
|
+
const uri = `${dir}${name}.${format}`;
|
|
333
|
+
if (format === 'png') {
|
|
334
|
+
const temporary = await rasterise(scale);
|
|
335
|
+
const copy = FileSystem.copyAsync;
|
|
336
|
+
if (!copy) {
|
|
337
|
+
throw new Error('Signature: `expo-file-system` has no copyAsync.');
|
|
338
|
+
}
|
|
339
|
+
await copy({
|
|
340
|
+
from: temporary,
|
|
341
|
+
to: uri
|
|
342
|
+
});
|
|
343
|
+
} else if (FileSystem.File) {
|
|
344
|
+
// The current file-object API. Tried first: `writeAsStringAsync` is
|
|
345
|
+
// the legacy one and warns on every call in recent versions.
|
|
346
|
+
const file = new FileSystem.File(uri);
|
|
347
|
+
file.create({
|
|
348
|
+
overwrite: true
|
|
349
|
+
});
|
|
350
|
+
file.write(svgDocument());
|
|
351
|
+
} else if (FileSystem.writeAsStringAsync) {
|
|
352
|
+
await FileSystem.writeAsStringAsync(uri, svgDocument());
|
|
353
|
+
} else {
|
|
354
|
+
throw new Error('Signature: `expo-file-system` exposes neither writeAsStringAsync nor File.');
|
|
355
|
+
}
|
|
356
|
+
return {
|
|
357
|
+
uri,
|
|
358
|
+
format,
|
|
359
|
+
width: Math.round(layout.width),
|
|
360
|
+
height: Math.round(layout.height)
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
}), [layout.height, layout.width, rasterise, strokes, undone, svgDocument]);
|
|
364
|
+
const empty = strokes.length === 0;
|
|
365
|
+
return /*#__PURE__*/_jsx(View, {
|
|
366
|
+
className: slots.root({
|
|
367
|
+
className
|
|
368
|
+
}),
|
|
369
|
+
...props,
|
|
370
|
+
children: /*#__PURE__*/_jsx(GestureDetector, {
|
|
371
|
+
gesture: pan,
|
|
372
|
+
children: /*#__PURE__*/_jsxs(View, {
|
|
373
|
+
ref: padRef,
|
|
374
|
+
collapsable: false,
|
|
375
|
+
className: slots.pad({
|
|
376
|
+
className: padClassName
|
|
377
|
+
}),
|
|
378
|
+
onLayout: event => setLayout(event.nativeEvent.layout),
|
|
379
|
+
accessible: true,
|
|
380
|
+
accessibilityRole: "image",
|
|
381
|
+
accessibilityLabel: "Signature pad",
|
|
382
|
+
accessibilityHint: "Draw your signature with your finger",
|
|
383
|
+
accessibilityState: {
|
|
384
|
+
disabled
|
|
385
|
+
},
|
|
386
|
+
children: [guideline && layout.height > 0 ? /*#__PURE__*/_jsxs(View, {
|
|
387
|
+
className: slots.guide({
|
|
388
|
+
className: guideClassName
|
|
389
|
+
}),
|
|
390
|
+
style: {
|
|
391
|
+
top: layout.height * 0.72
|
|
392
|
+
},
|
|
393
|
+
pointerEvents: "none",
|
|
394
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
395
|
+
size: "lg",
|
|
396
|
+
muted: true,
|
|
397
|
+
children: "\u2715"
|
|
398
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
399
|
+
className: "h-px flex-1 bg-border"
|
|
400
|
+
}), guidelineLabel ? /*#__PURE__*/_jsx(Text, {
|
|
401
|
+
size: "xs",
|
|
402
|
+
muted: true,
|
|
403
|
+
children: guidelineLabel
|
|
404
|
+
}) : null]
|
|
405
|
+
}) : null, /*#__PURE__*/_jsxs(Svg, {
|
|
406
|
+
width: "100%",
|
|
407
|
+
height: "100%",
|
|
408
|
+
pointerEvents: "none",
|
|
409
|
+
children: [strokes.map((d, index) => /*#__PURE__*/_jsx(Path
|
|
410
|
+
// Strokes are only ever appended or dropped from the end, so
|
|
411
|
+
// the index is stable for the life of each one.
|
|
412
|
+
, {
|
|
413
|
+
d: d,
|
|
414
|
+
fill: "none",
|
|
415
|
+
stroke: ink,
|
|
416
|
+
strokeWidth: strokeWidth,
|
|
417
|
+
strokeLinecap: "round",
|
|
418
|
+
strokeLinejoin: "round"
|
|
419
|
+
}, index)), /*#__PURE__*/_jsx(AnimatedPath, {
|
|
420
|
+
animatedProps: liveProps,
|
|
421
|
+
fill: "none",
|
|
422
|
+
stroke: ink,
|
|
423
|
+
strokeWidth: strokeWidth,
|
|
424
|
+
strokeLinecap: "round",
|
|
425
|
+
strokeLinejoin: "round"
|
|
426
|
+
})]
|
|
427
|
+
}), empty && placeholder !== null ? /*#__PURE__*/_jsx(View, {
|
|
428
|
+
className: slots.placeholder({
|
|
429
|
+
className: placeholderClassName
|
|
430
|
+
}),
|
|
431
|
+
pointerEvents: "none",
|
|
432
|
+
children: placeholder ?? /*#__PURE__*/_jsxs(_Fragment, {
|
|
433
|
+
children: [/*#__PURE__*/_jsx(PencilIcon, {
|
|
434
|
+
size: 20
|
|
435
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
436
|
+
size: "sm",
|
|
437
|
+
muted: true,
|
|
438
|
+
children: "Sign here"
|
|
439
|
+
})]
|
|
440
|
+
})
|
|
441
|
+
}) : null]
|
|
442
|
+
})
|
|
443
|
+
})
|
|
444
|
+
});
|
|
445
|
+
}
|
|
446
|
+
const SignatureForwarded = /*#__PURE__*/forwardRef(SignatureRoot);
|
|
447
|
+
SignatureForwarded.displayName = 'Signature';
|
|
448
|
+
/** A row of controls under or over the pad. Purely layout. */
|
|
449
|
+
function SignatureToolbar({
|
|
450
|
+
className,
|
|
451
|
+
...props
|
|
452
|
+
}) {
|
|
453
|
+
return /*#__PURE__*/_jsx(View, {
|
|
454
|
+
className: cn('flex-row items-center justify-between gap-2', className),
|
|
455
|
+
...props
|
|
456
|
+
});
|
|
457
|
+
}
|
|
458
|
+
SignatureToolbar.displayName = 'Signature.Toolbar';
|
|
459
|
+
/**
|
|
460
|
+
* The two pad controls are the same round button with a different icon and a
|
|
461
|
+
* different spoken name, so they are built rather than written twice.
|
|
462
|
+
*/
|
|
463
|
+
function circleButton(Icon, label, displayName) {
|
|
464
|
+
function Control({
|
|
465
|
+
className,
|
|
466
|
+
disabled,
|
|
467
|
+
children,
|
|
468
|
+
accessibilityLabel,
|
|
469
|
+
...props
|
|
470
|
+
}) {
|
|
471
|
+
return /*#__PURE__*/_jsx(AnimatedPressable, {
|
|
472
|
+
accessibilityRole: "button",
|
|
473
|
+
accessibilityLabel: accessibilityLabel ?? label,
|
|
474
|
+
accessibilityState: {
|
|
475
|
+
disabled
|
|
476
|
+
},
|
|
477
|
+
disabled: disabled,
|
|
478
|
+
hitSlop: 8,
|
|
479
|
+
className: cn('h-9 w-9 items-center justify-center rounded-full bg-muted', disabled && 'opacity-[0.48]', className),
|
|
480
|
+
...props,
|
|
481
|
+
children: children ?? /*#__PURE__*/_jsx(Icon, {
|
|
482
|
+
size: 16
|
|
483
|
+
})
|
|
484
|
+
});
|
|
485
|
+
}
|
|
486
|
+
Control.displayName = displayName;
|
|
487
|
+
return Control;
|
|
488
|
+
}
|
|
489
|
+
|
|
490
|
+
/** Removes the last stroke. Wire it to `ref.current?.undo()`. */
|
|
491
|
+
const SignatureUndo = circleButton(RotateCcwIcon, 'Undo last stroke', 'Signature.Undo');
|
|
492
|
+
|
|
493
|
+
/** Drops every stroke. Wire it to `ref.current?.clear()`. */
|
|
494
|
+
const SignatureClear = circleButton(TrashIcon, 'Clear signature', 'Signature.Clear');
|
|
495
|
+
export const Signature = Object.assign(SignatureForwarded, {
|
|
496
|
+
Toolbar: SignatureToolbar,
|
|
497
|
+
Undo: SignatureUndo,
|
|
498
|
+
Clear: SignatureClear
|
|
499
|
+
});
|
|
500
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["forwardRef","useCallback","useEffect","useImperativeHandle","useMemo","useRef","useState","View","useCSSVariable","Gesture","GestureDetector","Animated","runOnJS","useAnimatedProps","useSharedValue","Svg","Path","tv","PencilIcon","RotateCcwIcon","TrashIcon","AnimatedPressable","Text","cn","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","AnimatedPath","createAnimatedComponent","FileSystem","require","captureRef","mod","hasSignatureFileSystem","hasSignatureRaster","signatureVariants","slots","root","pad","placeholder","guide","toolbar","variants","size","sm","md","lg","full","disabled","true","defaultVariants","strokePath","points","count","length","d","i","px","py","x","y","SignatureRoot","className","strokeColor","strokeWidth","minDistance","guideline","guidelineLabel","onBegin","onEnd","onChange","padClassName","placeholderClassName","guideClassName","props","ref","strokes","setStrokes","undone","setUndone","layout","setLayout","width","height","live","padRef","inkToken","ink","changeRef","current","beginRef","endRef","reported","commit","begin","pan","Pan","averageTouches","enabled","event","value","onUpdate","last","dx","dy","onFinalize","liveProps","svgDocument","Math","round","paths","map","join","rasterise","scale","Error","format","quality","result","clear","undo","undefined","stack","slice","redo","restored","isEmpty","strokeCount","toSVG","toDataURL","encodeURIComponent","uri","read","readAsStringAsync","base64","encoding","save","options","directory","filename","base","documentDirectory","Paths","document","name","Date","now","dir","endsWith","temporary","copy","copyAsync","from","to","File","file","create","overwrite","write","writeAsStringAsync","empty","children","gesture","collapsable","onLayout","nativeEvent","accessible","accessibilityRole","accessibilityLabel","accessibilityHint","accessibilityState","style","top","pointerEvents","muted","index","fill","stroke","strokeLinecap","strokeLinejoin","animatedProps","SignatureForwarded","displayName","SignatureToolbar","circleButton","Icon","label","Control","hitSlop","SignatureUndo","SignatureClear","Signature","Object","assign","Toolbar","Undo","Clear"],"sourceRoot":"../../../../src","sources":["components/signature/index.tsx"],"mappings":"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","ignoreList":[]}
|