@panneau/fields 5.0.0-alpha.6 → 5.0.0-alpha.8
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/boolean/BooleanField.d.ts +1 -1
- package/dist/boolean/BooleanField.js +78 -17
- package/dist/boolean/BooleanField.js.map +1 -1
- package/dist/boolean/index.d.ts +1 -1
- package/dist/color/ColorField.d.ts +2 -2
- package/dist/color/ColorField.js.map +1 -1
- package/dist/color/index.d.ts +1 -1
- package/dist/date/DateField.d.ts +1 -1
- package/dist/date/DateField.js.map +1 -1
- package/dist/date/index.d.ts +1 -1
- package/dist/datetime/DateTimeField.d.ts +1 -1
- package/dist/datetime/DateTimeField.js +107 -20
- package/dist/datetime/DateTimeField.js.map +1 -1
- package/dist/datetime/index.d.ts +1 -1
- package/dist/duration/DurationField.d.ts +1 -1
- package/dist/duration/DurationField.js +126 -41
- package/dist/duration/DurationField.js.map +1 -1
- package/dist/duration/index.d.ts +1 -1
- package/dist/email/EmailField.d.ts +2 -2
- package/dist/email/EmailField.js.map +1 -1
- package/dist/email/index.d.ts +1 -1
- package/dist/embed/EmbedField.d.ts +2 -2
- package/dist/embed/EmbedField.js +185 -69
- package/dist/embed/EmbedField.js.map +1 -1
- package/dist/embed/index.d.ts +2 -2
- package/dist/file/FileField.d.ts +2 -2
- package/dist/file/FileField.d.ts.map +1 -1
- package/dist/file/FileField.js +167 -77
- package/dist/file/FileField.js.map +1 -1
- package/dist/file/index.d.ts +2 -2
- package/dist/group/GroupField.d.ts +1 -1
- package/dist/group/GroupField.js.map +1 -1
- package/dist/group/index.d.ts +1 -1
- package/dist/index.d.ts +18 -18
- package/dist/json/JsonField.d.ts +1 -1
- package/dist/json/JsonField.js +104 -22
- package/dist/json/JsonField.js.map +1 -1
- package/dist/json/index.d.ts +1 -1
- package/dist/locales/index.js.map +1 -1
- package/dist/localized/LocalizedField.d.ts +1 -1
- package/dist/localized/LocalizedField.js.map +1 -1
- package/dist/localized/index.d.ts +1 -1
- package/dist/location/LocationField.d.ts +3 -3
- package/dist/location/LocationField.d.ts.map +1 -1
- package/dist/location/LocationField.js +351 -138
- package/dist/location/LocationField.js.map +1 -1
- package/dist/location/LocationMap.d.ts +1 -1
- package/dist/location/LocationMap.d.ts.map +1 -1
- package/dist/location/LocationMap.js +155 -65
- package/dist/location/LocationMap.js.map +1 -1
- package/dist/location/index.d.ts +4 -4
- package/dist/location/leafletCss.js.map +1 -1
- package/dist/location/nominatim.d.ts +1 -1
- package/dist/location/nominatim.js.map +1 -1
- package/dist/missing/MissingField.d.ts +4 -3
- package/dist/missing/MissingField.d.ts.map +1 -1
- package/dist/missing/MissingField.js +3 -2
- package/dist/missing/MissingField.js.map +1 -1
- package/dist/number/NumberField.d.ts +1 -1
- package/dist/number/NumberField.js.map +1 -1
- package/dist/number/index.d.ts +1 -1
- package/dist/range/RangeField.d.ts +1 -1
- package/dist/range/RangeField.js +82 -11
- package/dist/range/RangeField.js.map +1 -1
- package/dist/range/index.d.ts +1 -1
- package/dist/relation/RelationField.d.ts +2 -2
- package/dist/relation/RelationField.js +485 -145
- package/dist/relation/RelationField.js.map +1 -1
- package/dist/relation/index.d.ts +2 -2
- package/dist/repeater/RepeaterField.d.ts +1 -1
- package/dist/repeater/RepeaterField.js +118 -34
- package/dist/repeater/RepeaterField.js.map +1 -1
- package/dist/repeater/index.d.ts +1 -1
- package/dist/select/SelectField.d.ts +1 -1
- package/dist/select/SelectField.js.map +1 -1
- package/dist/select/index.d.ts +1 -1
- package/dist/shared/DefinitionField.d.ts +1 -1
- package/dist/shared/DefinitionField.js.map +1 -1
- package/dist/shared/builtIn.d.ts +1 -1
- package/dist/shared/builtIn.js.map +1 -1
- package/dist/shared/check.js.map +1 -1
- package/dist/shared/context.d.ts +6 -6
- package/dist/shared/context.js.map +1 -1
- package/dist/shared/cx.js.map +1 -1
- package/dist/shared/dates.js.map +1 -1
- package/dist/shared/embed.js.map +1 -1
- package/dist/shared/entry.d.ts +1 -1
- package/dist/shared/entry.js.map +1 -1
- package/dist/shared/relation.js.map +1 -1
- package/dist/slug/SlugField.d.ts +2 -2
- package/dist/slug/SlugField.d.ts.map +1 -1
- package/dist/slug/SlugField.js +184 -36
- package/dist/slug/SlugField.js.map +1 -1
- package/dist/slug/index.d.ts +1 -1
- package/dist/tags/TagsField.d.ts +1 -1
- package/dist/tags/TagsField.js.map +1 -1
- package/dist/tags/index.d.ts +1 -1
- package/dist/tel/TelField.d.ts +2 -2
- package/dist/tel/TelField.js.map +1 -1
- package/dist/tel/index.d.ts +1 -1
- package/dist/text/TextField.d.ts +1 -1
- package/dist/text/TextField.js.map +1 -1
- package/dist/text/index.d.ts +1 -1
- package/dist/textarea/TextAreaField.d.ts +1 -1
- package/dist/textarea/TextAreaField.js.map +1 -1
- package/dist/textarea/index.d.ts +1 -1
- package/dist/time/TimeField.d.ts +1 -1
- package/dist/time/TimeField.js +64 -10
- package/dist/time/TimeField.js.map +1 -1
- package/dist/time/index.d.ts +1 -1
- package/dist/upload/FilePicker.js +107 -24
- package/dist/upload/FilePicker.js.map +1 -1
- package/dist/upload/UploadList.d.ts +1 -1
- package/dist/upload/UploadList.js.map +1 -1
- package/dist/upload/files.js.map +1 -1
- package/dist/upload/useRejectionMessage.d.ts +1 -1
- package/dist/upload/useRejectionMessage.js.map +1 -1
- package/dist/upload/useUploads.d.ts +1 -1
- package/dist/upload/useUploads.js.map +1 -1
- package/dist/uppy/index.d.ts +2 -2
- package/dist/uppy/uploader.d.ts +1 -1
- package/dist/uppy/uploader.js.map +1 -1
- package/dist/url/UrlField.d.ts +2 -2
- package/dist/url/UrlField.js +69 -14
- package/dist/url/UrlField.js.map +1 -1
- package/dist/url/index.d.ts +1 -1
- package/package.json +6 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DurationField.js","names":["part","next","
|
|
1
|
+
{"version":3,"file":"DurationField.js","names":["Fieldset","NumberInput","usePanneauIntl","getFieldProps","getSetting","isNumber","isString","messages","FieldEntryProps","FieldProps","styles","DurationFieldProps","precision","splitDuration","seconds","hours","minutes","total","Math","max","round","floor","formatDuration","parts","shown","filter","part","length","join","DurationField","t0","$","_c","value","onChange","onBlur","t1","label","description","errors","disabled","readOnly","required","name","className","undefined","intl","T0","t10","t11","t2","t3","t4","t5","t6","t7","t8","t9","change","next","updated","input","part_0","formatMessage","next_0","maxValue","maximumFractionDigits","t12","t13","DurationFieldEntry","props","field","fieldProps","placeholder","_placeholder","_c","styles"],"sources":["../../src/duration/DurationField.tsx"],"sourcesContent":["import { Fieldset, NumberInput, usePanneauIntl } from '@panneau/ui';\n\nimport { getFieldProps, getSetting, isNumber, isString } from '../shared/entry';\nimport { messages } from '../shared/messages';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\nimport styles from './DurationField.module.css';\n\nexport interface DurationFieldProps extends FieldProps<number> {\n /** `seconds` (the default) shows hours, minutes and seconds; `minutes` hides the seconds. */\n precision?: 'seconds' | 'minutes';\n}\n\n/** Hours, minutes and seconds of a number of seconds. */\nexport function splitDuration(seconds: number): {\n hours: number;\n minutes: number;\n seconds: number;\n} {\n const total = Math.max(0, Math.round(seconds));\n return {\n hours: Math.floor(total / 3600),\n minutes: Math.floor((total % 3600) / 60),\n seconds: total % 60,\n };\n}\n\n/**\n * A duration with its units, without the empty ones: `1 h 5 min 30 s`, `3 min`. With a precision\n * of minutes, the seconds are rounded away.\n */\nexport function formatDuration(\n seconds: number,\n { precision = 'seconds' }: { precision?: 'seconds' | 'minutes' } = {},\n): string {\n const parts = splitDuration(precision === 'minutes' ? Math.round(seconds / 60) * 60 : seconds);\n const shown = [\n parts.hours > 0 ? `${parts.hours} h` : null,\n parts.minutes > 0 ? `${parts.minutes} min` : null,\n precision === 'seconds' && parts.seconds > 0 ? `${parts.seconds} s` : null,\n ].filter((part) => part !== null);\n return shown.length > 0 ? shown.join(' ') : precision === 'minutes' ? '0 min' : '0 s';\n}\n\n/**\n * A duration, in seconds, typed in hours, minutes and seconds. It is `null` while every part is\n * empty.\n */\nexport function DurationField({\n value,\n onChange,\n onBlur,\n precision = 'seconds',\n label,\n description,\n errors,\n disabled,\n readOnly,\n required,\n name,\n className,\n}: DurationFieldProps) {\n const intl = usePanneauIntl();\n const parts = value !== null && value !== undefined ? splitDuration(value) : null;\n const change = (part: 'hours' | 'minutes' | 'seconds', next: number | null) => {\n const updated = { ...(parts ?? { hours: 0, minutes: 0, seconds: 0 }), [part]: next ?? 0 };\n const total = updated.hours * 3600 + updated.minutes * 60 + updated.seconds;\n // Clearing the last part that had a value empties the field\n onChange?.(total === 0 && next === null ? null : total);\n };\n const input = (part: 'hours' | 'minutes' | 'seconds') => (\n <NumberInput\n aria-label={intl.formatMessage(messages[part])}\n value={parts?.[part] ?? null}\n onChange={(next) => change(part, next)}\n onBlur={() => onBlur?.()}\n minValue={0}\n {...(part !== 'hours' ? { maxValue: 59 } : {})}\n formatOptions={{ maximumFractionDigits: 0 }}\n suffix={intl.formatMessage(messages[`${part}Unit`])}\n isDisabled={disabled}\n isReadOnly={readOnly}\n {...(name !== undefined ? { name: `${name}[${part}]` } : {})}\n className={styles.part}\n />\n );\n return (\n <Fieldset\n legend={label}\n description={description}\n errors={errors}\n isRequired={required}\n isDisabled={disabled}\n className={className}\n >\n <div className={styles.parts}>\n {input('hours')}\n {input('minutes')}\n {precision === 'seconds' ? input('seconds') : null}\n </div>\n </Fieldset>\n );\n}\n\n/** The `duration` type: a number of seconds, with setting `precision` (`seconds` or `minutes`). */\nexport function DurationFieldEntry(props: FieldEntryProps) {\n const precision = getSetting(props.field, 'precision', isString);\n const { placeholder: _placeholder, ...fieldProps } = getFieldProps(props);\n return (\n <DurationField\n {...fieldProps}\n value={isNumber(props.value) ? props.value : null}\n onChange={props.onChange}\n {...(precision === 'minutes' || precision === 'seconds' ? { precision } : {})}\n />\n );\n}\n"],"mappings":"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"}
|
package/dist/duration/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { DurationField, DurationFieldEntry, type DurationFieldProps, formatDuration, splitDuration, } from './DurationField';
|
|
1
|
+
export { DurationField, DurationFieldEntry, type DurationFieldProps, formatDuration, splitDuration, } from './DurationField.js';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { FieldEntryProps } from '../shared/types';
|
|
2
|
-
import { type TextFieldProps } from '../text/TextField';
|
|
1
|
+
import type { FieldEntryProps } from '../shared/types.js';
|
|
2
|
+
import { type TextFieldProps } from '../text/TextField.js';
|
|
3
3
|
export type EmailFieldProps = Omit<TextFieldProps, 'type' | 'inputMode'>;
|
|
4
4
|
/** An email address, with the email keyboard on phones. Spaces around it are removed on blur. */
|
|
5
5
|
export declare function EmailField({ value, onChange, onBlur, ...props }: EmailFieldProps): import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmailField.js","names":["
|
|
1
|
+
{"version":3,"file":"EmailField.js","names":["getFieldProps","isString","FieldEntryProps","TextField","TextFieldProps","EmailFieldProps","Omit","EmailField","t0","$","_c","onBlur","onChange","props","value","t1","trimmed","trim","t2","EmailFieldEntry","_c"],"sources":["../../src/email/EmailField.tsx"],"sourcesContent":["import { getFieldProps, isString } from '../shared/entry';\nimport type { FieldEntryProps } from '../shared/types';\nimport { TextField, type TextFieldProps } from '../text/TextField';\n\nexport type EmailFieldProps = Omit<TextFieldProps, 'type' | 'inputMode'>;\n\n/** An email address, with the email keyboard on phones. Spaces around it are removed on blur. */\nexport function EmailField({ value, onChange, onBlur, ...props }: EmailFieldProps) {\n return (\n <TextField\n autoComplete=\"off\"\n {...props}\n type=\"email\"\n inputMode=\"email\"\n value={value}\n onChange={onChange}\n onBlur={() => {\n const trimmed = value?.trim() ?? null;\n if (trimmed !== value) {\n onChange?.(trimmed === '' ? null : trimmed);\n }\n onBlur?.();\n }}\n />\n );\n}\n\n/** The `email` type. */\nexport function EmailFieldEntry(props: FieldEntryProps) {\n return (\n <EmailField\n {...getFieldProps(props)}\n value={isString(props.value) ? props.value : null}\n onChange={props.onChange}\n />\n );\n}\n"],"mappings":";;;;;;AAOA,SAAOO,WAAAC,IAAA;CAAA,MAAAC,IAAAC,EAAA,EAAA;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAC;CAAA,IAAAL,EAAA,OAAAD,IAAA;EAAoB,CAAA,CAAAM,OAAAF,UAAAD,QAAA,GAAAE,SAAAL;EAAsDC,EAAA,KAAAD;EAAAC,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAI;EAAAJ,EAAA,KAAAK;CAAA,OAAA;EAAAH,SAAAF,EAAA;EAAAG,WAAAH,EAAA;EAAAI,QAAAJ,EAAA;EAAAK,QAAAL,EAAA;CAAA;CAAA,IAAAM;CAAA,IAAAN,EAAA,OAAAE,UAAAF,EAAA,OAAAG,YAAAH,EAAA,OAAAK,OAAA;EAS7DC,WAAA;GACJ,MAAAC,UAAgBF,OAAKG,KAAe,KAApB;GAChB,IAAID,YAAYF,OACZF,WAAWI,YAAY,KAAZ,OAAAA,OAA+B;GAE9CL,SAAS;EAAC;EACbF,EAAA,KAAAE;EAAAF,EAAA,KAAAG;EAAAH,EAAA,KAAAK;EAAAL,EAAA,KAAAM;CAAA,OAAAA,KAAAN,EAAA;CAAA,IAAAS;CAAA,IAAAT,EAAA,OAAAG,YAAAH,EAAA,QAAAI,SAAAJ,EAAA,QAAAM,MAAAN,EAAA,QAAAK,OAAA;EAbLI,KAAA,oBAAC,WAAD;GACiB,cAAA;GAAK,GACdL;GACC,MAAA;GACK,WAAA;GACHC;GACGF;GACF,QAAAG;EAMP,CAAA;EACHN,EAAA,KAAAG;EAAAH,EAAA,MAAAI;EAAAJ,EAAA,MAAAM;EAAAN,EAAA,MAAAK;EAAAL,EAAA,MAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,OAdFS;AAcE;;AAKV,SAAOC,gBAAAN,OAAA;CAAA,MAAAJ,IAAAC,EAAA,CAAA;CAAA,IAAAF;CAAA,IAAAC,EAAA,OAAAI,OAAA;EAGSL,KAAAR,cAAca,KAAK;EAACJ,EAAA,KAAAI;EAAAJ,EAAA,KAAAD;CAAA,OAAAA,KAAAC,EAAA;CACjB,MAAAM,KAAAd,SAASY,MAAKC,KAA2B,IAAjBD,MAAKC,QAA7B;CAA0C,IAAAI;CAAA,IAAAT,EAAA,OAAAI,MAAAD,YAAAH,EAAA,OAAAD,MAAAC,EAAA,OAAAM,IAAA;EAFrDG,KAAA,oBAAC,YAAD;GAAW,GACHV;GACG,OAAAO;GACG,UAAAF,MAAKD;EAAS,CAAA;EAC1BH,EAAA,KAAAI,MAAAD;EAAAH,EAAA,KAAAD;EAAAC,EAAA,KAAAM;EAAAN,EAAA,KAAAS;CAAA,OAAAA,KAAAT,EAAA;CAAA,OAJFS;AAIE"}
|
package/dist/email/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { EmailField, EmailFieldEntry, type EmailFieldProps } from './EmailField';
|
|
1
|
+
export { EmailField, EmailFieldEntry, type EmailFieldProps } from './EmailField.js';
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { EmbedValue } from '@panneau/protocol';
|
|
2
|
-
import type { EmbedSource } from '../shared/embed';
|
|
3
|
-
import type { FieldEntryProps, FieldProps } from '../shared/types';
|
|
2
|
+
import type { EmbedSource } from '../shared/embed.js';
|
|
3
|
+
import type { FieldEntryProps, FieldProps } from '../shared/types.js';
|
|
4
4
|
export type { EmbedValue };
|
|
5
5
|
export interface EmbedFieldProps extends FieldProps<EmbedValue> {
|
|
6
6
|
placeholder?: string;
|
package/dist/embed/EmbedField.js
CHANGED
|
@@ -4,7 +4,7 @@ import { messages } from "../shared/messages.js";
|
|
|
4
4
|
import EmbedField_module_default from "./EmbedField.module.js";
|
|
5
5
|
import { c } from "react/compiler-runtime";
|
|
6
6
|
import { Spinner, TextInput, usePanneauIntl } from "@panneau/ui";
|
|
7
|
-
import { useEffect, useState } from "react";
|
|
7
|
+
import { useEffect, useEffectEvent, useState } from "react";
|
|
8
8
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
9
9
|
//#region src/embed/EmbedField.tsx
|
|
10
10
|
var RESOLVE_DELAY = 500;
|
|
@@ -21,84 +21,200 @@ function isResolved(value) {
|
|
|
21
21
|
* oEmbed: its thumbnail, title and provider. The URL is kept as soon as it is typed, and its
|
|
22
22
|
* preview follows. Without an embed source, the value is the URL alone.
|
|
23
23
|
*/
|
|
24
|
-
function EmbedField(
|
|
24
|
+
function EmbedField(t0) {
|
|
25
|
+
const $ = c(47);
|
|
26
|
+
let disabled;
|
|
27
|
+
let embedSourceProp;
|
|
28
|
+
let onBlur;
|
|
29
|
+
let onChange;
|
|
30
|
+
let props;
|
|
31
|
+
let readOnly;
|
|
32
|
+
let required;
|
|
33
|
+
let t1;
|
|
34
|
+
let value;
|
|
35
|
+
if ($[0] !== t0) {
|
|
36
|
+
({value, onChange, onBlur, embedSource: embedSourceProp, errors: t1, disabled, readOnly, required, ...props} = t0);
|
|
37
|
+
$[0] = t0;
|
|
38
|
+
$[1] = disabled;
|
|
39
|
+
$[2] = embedSourceProp;
|
|
40
|
+
$[3] = onBlur;
|
|
41
|
+
$[4] = onChange;
|
|
42
|
+
$[5] = props;
|
|
43
|
+
$[6] = readOnly;
|
|
44
|
+
$[7] = required;
|
|
45
|
+
$[8] = t1;
|
|
46
|
+
$[9] = value;
|
|
47
|
+
} else {
|
|
48
|
+
disabled = $[1];
|
|
49
|
+
embedSourceProp = $[2];
|
|
50
|
+
onBlur = $[3];
|
|
51
|
+
onChange = $[4];
|
|
52
|
+
props = $[5];
|
|
53
|
+
readOnly = $[6];
|
|
54
|
+
required = $[7];
|
|
55
|
+
t1 = $[8];
|
|
56
|
+
value = $[9];
|
|
57
|
+
}
|
|
58
|
+
let t2;
|
|
59
|
+
if ($[10] !== t1) {
|
|
60
|
+
t2 = t1 === void 0 ? [] : t1;
|
|
61
|
+
$[10] = t1;
|
|
62
|
+
$[11] = t2;
|
|
63
|
+
} else t2 = $[11];
|
|
64
|
+
const errors = t2;
|
|
25
65
|
const intl = usePanneauIntl();
|
|
26
66
|
const context = useFieldsContext();
|
|
27
67
|
const embedSource = embedSourceProp === void 0 ? context.embedSource : embedSourceProp;
|
|
28
68
|
const url = value?.url ?? "";
|
|
29
69
|
const [status, setStatus] = useState(null);
|
|
30
70
|
const pending = value !== null && value !== void 0 && !isResolved(value) ? value.url : null;
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
}).catch(() => {
|
|
46
|
-
if (!controller.signal.aborted) setStatus({
|
|
71
|
+
let t3;
|
|
72
|
+
if ($[12] !== onChange) {
|
|
73
|
+
t3 = (embed) => onChange?.(embed);
|
|
74
|
+
$[12] = onChange;
|
|
75
|
+
$[13] = t3;
|
|
76
|
+
} else t3 = $[13];
|
|
77
|
+
const resolved = useEffectEvent(t3);
|
|
78
|
+
let t4;
|
|
79
|
+
if ($[14] !== embedSource || $[15] !== pending || $[16] !== resolved) {
|
|
80
|
+
t4 = () => {
|
|
81
|
+
if (embedSource === null || pending === null || !URL.canParse(pending)) return;
|
|
82
|
+
const controller = new AbortController();
|
|
83
|
+
const timeout = window.setTimeout(() => {
|
|
84
|
+
setStatus({
|
|
47
85
|
url: pending,
|
|
48
|
-
state: "
|
|
86
|
+
state: "loading"
|
|
87
|
+
});
|
|
88
|
+
embedSource.resolve(pending, { signal: controller.signal }).then((embed_0) => {
|
|
89
|
+
setStatus(null);
|
|
90
|
+
resolved({
|
|
91
|
+
...embed_0,
|
|
92
|
+
url: pending
|
|
93
|
+
});
|
|
94
|
+
}).catch(() => {
|
|
95
|
+
if (!controller.signal.aborted) setStatus({
|
|
96
|
+
url: pending,
|
|
97
|
+
state: "failed"
|
|
98
|
+
});
|
|
49
99
|
});
|
|
50
|
-
});
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
100
|
+
}, RESOLVE_DELAY);
|
|
101
|
+
return () => {
|
|
102
|
+
window.clearTimeout(timeout);
|
|
103
|
+
controller.abort();
|
|
104
|
+
};
|
|
55
105
|
};
|
|
56
|
-
|
|
106
|
+
$[14] = embedSource;
|
|
107
|
+
$[15] = pending;
|
|
108
|
+
$[16] = resolved;
|
|
109
|
+
$[17] = t4;
|
|
110
|
+
} else t4 = $[17];
|
|
111
|
+
let t5;
|
|
112
|
+
if ($[18] !== embedSource || $[19] !== pending) {
|
|
113
|
+
t5 = [embedSource, pending];
|
|
114
|
+
$[18] = embedSource;
|
|
115
|
+
$[19] = pending;
|
|
116
|
+
$[20] = t5;
|
|
117
|
+
} else t5 = $[20];
|
|
118
|
+
useEffect(t4, t5);
|
|
57
119
|
const current = status !== null && status.url === url ? status.state : null;
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
]
|
|
101
|
-
|
|
120
|
+
let t6;
|
|
121
|
+
if ($[21] !== current || $[22] !== errors || $[23] !== intl) {
|
|
122
|
+
t6 = current === "failed" && errors.length === 0 ? [intl.formatMessage(messages.embedFailed)] : errors;
|
|
123
|
+
$[21] = current;
|
|
124
|
+
$[22] = errors;
|
|
125
|
+
$[23] = intl;
|
|
126
|
+
$[24] = t6;
|
|
127
|
+
} else t6 = $[24];
|
|
128
|
+
const shownErrors = t6;
|
|
129
|
+
let t7;
|
|
130
|
+
if ($[25] !== onChange) {
|
|
131
|
+
t7 = (next) => onChange?.(next.trim() === "" ? null : { url: next.trim() });
|
|
132
|
+
$[25] = onChange;
|
|
133
|
+
$[26] = t7;
|
|
134
|
+
} else t7 = $[26];
|
|
135
|
+
let t8;
|
|
136
|
+
if ($[27] !== onBlur) {
|
|
137
|
+
t8 = () => onBlur?.();
|
|
138
|
+
$[27] = onBlur;
|
|
139
|
+
$[28] = t8;
|
|
140
|
+
} else t8 = $[28];
|
|
141
|
+
let t9;
|
|
142
|
+
if ($[29] !== disabled || $[30] !== props || $[31] !== readOnly || $[32] !== required || $[33] !== shownErrors || $[34] !== t7 || $[35] !== t8 || $[36] !== url) {
|
|
143
|
+
t9 = /* @__PURE__ */ jsx(TextInput, {
|
|
144
|
+
...props,
|
|
145
|
+
type: "url",
|
|
146
|
+
inputMode: "url",
|
|
147
|
+
autoComplete: "off",
|
|
148
|
+
value: url,
|
|
149
|
+
onChange: t7,
|
|
150
|
+
onBlur: t8,
|
|
151
|
+
errors: shownErrors,
|
|
152
|
+
isDisabled: disabled,
|
|
153
|
+
isReadOnly: readOnly,
|
|
154
|
+
isRequired: required
|
|
155
|
+
});
|
|
156
|
+
$[29] = disabled;
|
|
157
|
+
$[30] = props;
|
|
158
|
+
$[31] = readOnly;
|
|
159
|
+
$[32] = required;
|
|
160
|
+
$[33] = shownErrors;
|
|
161
|
+
$[34] = t7;
|
|
162
|
+
$[35] = t8;
|
|
163
|
+
$[36] = url;
|
|
164
|
+
$[37] = t9;
|
|
165
|
+
} else t9 = $[37];
|
|
166
|
+
let t10;
|
|
167
|
+
if ($[38] !== current || $[39] !== intl) {
|
|
168
|
+
t10 = current === "loading" ? /* @__PURE__ */ jsxs("div", {
|
|
169
|
+
className: EmbedField_module_default.status,
|
|
170
|
+
role: "status",
|
|
171
|
+
children: [/* @__PURE__ */ jsx(Spinner, { size: "sm" }), intl.formatMessage(messages.embedLoading)]
|
|
172
|
+
}) : null;
|
|
173
|
+
$[38] = current;
|
|
174
|
+
$[39] = intl;
|
|
175
|
+
$[40] = t10;
|
|
176
|
+
} else t10 = $[40];
|
|
177
|
+
let t11;
|
|
178
|
+
if ($[41] !== value) {
|
|
179
|
+
t11 = value !== null && value !== void 0 && isResolved(value) ? /* @__PURE__ */ jsxs("a", {
|
|
180
|
+
className: EmbedField_module_default.preview,
|
|
181
|
+
href: value.url,
|
|
182
|
+
target: "_blank",
|
|
183
|
+
rel: "noreferrer",
|
|
184
|
+
children: [value.thumbnailUrl !== void 0 ? /* @__PURE__ */ jsx("img", {
|
|
185
|
+
className: EmbedField_module_default.thumbnail,
|
|
186
|
+
src: value.thumbnailUrl,
|
|
187
|
+
alt: ""
|
|
188
|
+
}) : null, /* @__PURE__ */ jsxs("span", {
|
|
189
|
+
className: EmbedField_module_default.text,
|
|
190
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
191
|
+
className: EmbedField_module_default.title,
|
|
192
|
+
children: value.title ?? value.url
|
|
193
|
+
}), value.provider !== void 0 ? /* @__PURE__ */ jsx("span", {
|
|
194
|
+
className: EmbedField_module_default.provider,
|
|
195
|
+
children: value.provider
|
|
196
|
+
}) : null]
|
|
197
|
+
})]
|
|
198
|
+
}) : null;
|
|
199
|
+
$[41] = value;
|
|
200
|
+
$[42] = t11;
|
|
201
|
+
} else t11 = $[42];
|
|
202
|
+
let t12;
|
|
203
|
+
if ($[43] !== t10 || $[44] !== t11 || $[45] !== t9) {
|
|
204
|
+
t12 = /* @__PURE__ */ jsxs("div", {
|
|
205
|
+
className: EmbedField_module_default.embed,
|
|
206
|
+
children: [
|
|
207
|
+
t9,
|
|
208
|
+
t10,
|
|
209
|
+
t11
|
|
210
|
+
]
|
|
211
|
+
});
|
|
212
|
+
$[43] = t10;
|
|
213
|
+
$[44] = t11;
|
|
214
|
+
$[45] = t9;
|
|
215
|
+
$[46] = t12;
|
|
216
|
+
} else t12 = $[46];
|
|
217
|
+
return t12;
|
|
102
218
|
}
|
|
103
219
|
/** The `embed` type: its preview comes from the embed source of the `FieldsProvider`. */
|
|
104
220
|
function EmbedFieldEntry(props) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EmbedField.js","names":["styles","_c"],"sources":["../../src/embed/EmbedField.tsx"],"sourcesContent":["import { useEffect, useState } from 'react';\n\nimport type { EmbedValue } from '@panneau/protocol';\nimport { Spinner, TextInput, usePanneauIntl } from '@panneau/ui';\n\nimport { useFieldsContext } from '../shared/context';\nimport type { EmbedSource } from '../shared/embed';\nimport { getFieldProps, isString } from '../shared/entry';\nimport { messages } from '../shared/messages';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\nimport styles from './EmbedField.module.css';\n\nexport type { EmbedValue };\n\nconst RESOLVE_DELAY = 500;\n\nexport interface EmbedFieldProps extends FieldProps<EmbedValue> {\n placeholder?: string;\n /** Where the preview comes from. Defaults to that of the `FieldsProvider`. */\n embedSource?: EmbedSource | null;\n}\n\n/** Whether a value is an embed: an object with a `url`. */\nexport function isEmbed(value: unknown): value is EmbedValue {\n return (\n value !== null &&\n typeof value === 'object' &&\n isString((value as Record<string, unknown>).url)\n );\n}\n\n/** Whether a value has been resolved: it has more than its URL. */\nfunction isResolved(value: EmbedValue): boolean {\n return Object.keys(value).some((key) => key !== 'url');\n}\n\n/**\n * A URL of a video, a sound or a post, with the preview the backend gets from its provider's\n * oEmbed: its thumbnail, title and provider. The URL is kept as soon as it is typed, and its\n * preview follows. Without an embed source, the value is the URL alone.\n */\nexport function EmbedField({\n value,\n onChange,\n onBlur,\n embedSource: embedSourceProp,\n errors = [],\n disabled,\n readOnly,\n required,\n ...props\n}: EmbedFieldProps) {\n const intl = usePanneauIntl();\n const context = useFieldsContext();\n const embedSource = embedSourceProp === undefined ? context.embedSource : embedSourceProp;\n const url = value?.url ?? '';\n const [status, setStatus] = useState<{ url: string; state: 'loading' | 'failed' } | null>(null);\n\n // Resolves a URL that hasn't been, after a pause in typing\n const pending = value !== null && value !== undefined && !isResolved(value) ? value.url : null;\n useEffect(() => {\n if (embedSource === null || pending === null || !URL.canParse(pending)) {\n return undefined;\n }\n const controller = new AbortController();\n const timeout = window.setTimeout(() => {\n setStatus({ url: pending, state: 'loading' });\n embedSource\n .resolve(pending, { signal: controller.signal })\n .then((embed) => {\n setStatus(null);\n onChange?.({ ...embed, url: pending });\n })\n .catch(() => {\n if (!controller.signal.aborted) {\n setStatus({ url: pending, state: 'failed' });\n }\n });\n }, RESOLVE_DELAY);\n return () => {\n window.clearTimeout(timeout);\n controller.abort();\n };\n // `onChange` changes on every render of a form\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [embedSource, pending]);\n\n const current = status !== null && status.url === url ? status.state : null;\n const shownErrors =\n current === 'failed' && errors.length === 0\n ? [intl.formatMessage(messages.embedFailed)]\n : errors;\n return (\n <div className={styles.embed}>\n <TextInput\n {...props}\n type=\"url\"\n inputMode=\"url\"\n autoComplete=\"off\"\n value={url}\n onChange={(next) => onChange?.(next.trim() === '' ? null : { url: next.trim() })}\n onBlur={() => onBlur?.()}\n errors={shownErrors}\n isDisabled={disabled}\n isReadOnly={readOnly}\n isRequired={required}\n />\n {current === 'loading' ? (\n <div className={styles.status} role=\"status\">\n <Spinner size=\"sm\" />\n {intl.formatMessage(messages.embedLoading)}\n </div>\n ) : null}\n {value !== null && value !== undefined && isResolved(value) ? (\n <a className={styles.preview} href={value.url} target=\"_blank\" rel=\"noreferrer\">\n {value.thumbnailUrl !== undefined ? (\n <img className={styles.thumbnail} src={value.thumbnailUrl} alt=\"\" />\n ) : null}\n <span className={styles.text}>\n <span className={styles.title}>{value.title ?? value.url}</span>\n {value.provider !== undefined ? (\n <span className={styles.provider}>{value.provider}</span>\n ) : null}\n </span>\n </a>\n ) : null}\n </div>\n );\n}\n\n/** The `embed` type: its preview comes from the embed source of the `FieldsProvider`. */\nexport function EmbedFieldEntry(props: FieldEntryProps) {\n return (\n <EmbedField\n {...getFieldProps(props)}\n value={isEmbed(props.value) ? props.value : null}\n onChange={props.onChange}\n />\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EmbedField.js","names":["useEffect","useEffectEvent","useState","EmbedValue","Spinner","TextInput","usePanneauIntl","useFieldsContext","EmbedSource","getFieldProps","isString","messages","FieldEntryProps","FieldProps","styles","RESOLVE_DELAY","EmbedFieldProps","placeholder","embedSource","isEmbed","value","Record","url","isResolved","Object","keys","some","key","EmbedField","t0","$","_c","disabled","embedSourceProp","onBlur","onChange","props","readOnly","required","t1","errors","t2","undefined","intl","context","status","setStatus","pending","t3","embed","resolved","t4","URL","canParse","controller","AbortController","timeout","window","setTimeout","state","resolve","signal","then","embed_0","catch","aborted","clearTimeout","abort","t5","current","t6","length","formatMessage","embedFailed","shownErrors","t7","next","trim","t8","t9","t10","embedLoading","t11","preview","thumbnailUrl","thumbnail","text","title","provider","t12","EmbedFieldEntry","_c","styles"],"sources":["../../src/embed/EmbedField.tsx"],"sourcesContent":["import { useEffect, useEffectEvent, useState } from 'react';\n\nimport type { EmbedValue } from '@panneau/protocol';\nimport { Spinner, TextInput, usePanneauIntl } from '@panneau/ui';\n\nimport { useFieldsContext } from '../shared/context';\nimport type { EmbedSource } from '../shared/embed';\nimport { getFieldProps, isString } from '../shared/entry';\nimport { messages } from '../shared/messages';\nimport type { FieldEntryProps, FieldProps } from '../shared/types';\nimport styles from './EmbedField.module.css';\n\nexport type { EmbedValue };\n\nconst RESOLVE_DELAY = 500;\n\nexport interface EmbedFieldProps extends FieldProps<EmbedValue> {\n placeholder?: string;\n /** Where the preview comes from. Defaults to that of the `FieldsProvider`. */\n embedSource?: EmbedSource | null;\n}\n\n/** Whether a value is an embed: an object with a `url`. */\nexport function isEmbed(value: unknown): value is EmbedValue {\n return (\n value !== null &&\n typeof value === 'object' &&\n isString((value as Record<string, unknown>).url)\n );\n}\n\n/** Whether a value has been resolved: it has more than its URL. */\nfunction isResolved(value: EmbedValue): boolean {\n return Object.keys(value).some((key) => key !== 'url');\n}\n\n/**\n * A URL of a video, a sound or a post, with the preview the backend gets from its provider's\n * oEmbed: its thumbnail, title and provider. The URL is kept as soon as it is typed, and its\n * preview follows. Without an embed source, the value is the URL alone.\n */\nexport function EmbedField({\n value,\n onChange,\n onBlur,\n embedSource: embedSourceProp,\n errors = [],\n disabled,\n readOnly,\n required,\n ...props\n}: EmbedFieldProps) {\n const intl = usePanneauIntl();\n const context = useFieldsContext();\n const embedSource = embedSourceProp === undefined ? context.embedSource : embedSourceProp;\n const url = value?.url ?? '';\n const [status, setStatus] = useState<{ url: string; state: 'loading' | 'failed' } | null>(null);\n\n // Resolves a URL that hasn't been, after a pause in typing\n const pending = value !== null && value !== undefined && !isResolved(value) ? value.url : null;\n // `onChange` changes on every render of a form: the latest one gets the preview\n const resolved = useEffectEvent((embed: EmbedValue) => onChange?.(embed));\n useEffect(() => {\n if (embedSource === null || pending === null || !URL.canParse(pending)) {\n return undefined;\n }\n const controller = new AbortController();\n const timeout = window.setTimeout(() => {\n setStatus({ url: pending, state: 'loading' });\n embedSource\n .resolve(pending, { signal: controller.signal })\n .then((embed) => {\n setStatus(null);\n resolved({ ...embed, url: pending });\n })\n .catch(() => {\n if (!controller.signal.aborted) {\n setStatus({ url: pending, state: 'failed' });\n }\n });\n }, RESOLVE_DELAY);\n return () => {\n window.clearTimeout(timeout);\n controller.abort();\n };\n }, [embedSource, pending]);\n\n const current = status !== null && status.url === url ? status.state : null;\n const shownErrors =\n current === 'failed' && errors.length === 0\n ? [intl.formatMessage(messages.embedFailed)]\n : errors;\n return (\n <div className={styles.embed}>\n <TextInput\n {...props}\n type=\"url\"\n inputMode=\"url\"\n autoComplete=\"off\"\n value={url}\n onChange={(next) => onChange?.(next.trim() === '' ? null : { url: next.trim() })}\n onBlur={() => onBlur?.()}\n errors={shownErrors}\n isDisabled={disabled}\n isReadOnly={readOnly}\n isRequired={required}\n />\n {current === 'loading' ? (\n <div className={styles.status} role=\"status\">\n <Spinner size=\"sm\" />\n {intl.formatMessage(messages.embedLoading)}\n </div>\n ) : null}\n {value !== null && value !== undefined && isResolved(value) ? (\n <a className={styles.preview} href={value.url} target=\"_blank\" rel=\"noreferrer\">\n {value.thumbnailUrl !== undefined ? (\n <img className={styles.thumbnail} src={value.thumbnailUrl} alt=\"\" />\n ) : null}\n <span className={styles.text}>\n <span className={styles.title}>{value.title ?? value.url}</span>\n {value.provider !== undefined ? (\n <span className={styles.provider}>{value.provider}</span>\n ) : null}\n </span>\n </a>\n ) : null}\n </div>\n );\n}\n\n/** The `embed` type: its preview comes from the embed source of the `FieldsProvider`. */\nexport function EmbedFieldEntry(props: FieldEntryProps) {\n return (\n <EmbedField\n {...getFieldProps(props)}\n value={isEmbed(props.value) ? props.value : null}\n onChange={props.onChange}\n />\n );\n}\n"],"mappings":"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"}
|
package/dist/embed/index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { EmbedField, EmbedFieldEntry, type EmbedFieldProps, type EmbedValue, isEmbed, } from './EmbedField';
|
|
2
|
-
export { type EmbedAdapter, type EmbedSource, createEmbedSource } from '../shared/embed';
|
|
1
|
+
export { EmbedField, EmbedFieldEntry, type EmbedFieldProps, type EmbedValue, isEmbed, } from './EmbedField.js';
|
|
2
|
+
export { type EmbedAdapter, type EmbedSource, createEmbedSource } from '../shared/embed.js';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/file/FileField.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { StoredFile } from '@panneau/protocol';
|
|
2
|
-
import type { FieldEntryProps, FieldProps } from '../shared/types';
|
|
3
|
-
import type { UploadSource, UploadedFile } from '../upload/types';
|
|
2
|
+
import type { FieldEntryProps, FieldProps } from '../shared/types.js';
|
|
3
|
+
import type { UploadSource, UploadedFile } from '../upload/types.js';
|
|
4
4
|
/**
|
|
5
5
|
* A file of a `file` value: a stored file, as items give it; an upload, once the browser sent the
|
|
6
6
|
* file to storage; or the file itself, sent in a multipart request without direct uploads.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FileField.d.ts","sourceRoot":"","sources":["../../src/file/FileField.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAInE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAKlE;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,IAAI,CAAC;AAEzD,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACrF,mGAAmG;IACnG,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAClC,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;OAIG;IACH,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC5D,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAC9D,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAAC;IACpC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,sBAAsB,CAAC;AAY3E,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAS9D;AAED,gDAAgD;AAChD,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,CAKnD;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+
|
|
1
|
+
{"version":3,"file":"FileField.d.ts","sourceRoot":"","sources":["../../src/file/FileField.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAMpD,OAAO,KAAK,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAInE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAKlE;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,IAAI,CAAC;AAEzD,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IACrF,mGAAmG;IACnG,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,IAAI,CAAC;IAClC,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB;;;;OAIG;IACH,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,oBAAqB,SAAQ,kBAAkB;IAC5D,QAAQ,CAAC,EAAE,KAAK,CAAC;IACjB,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;CAChD;AAED,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAC9D,QAAQ,EAAE,IAAI,CAAC;IACf,KAAK,CAAC,EAAE,SAAS,SAAS,EAAE,GAAG,IAAI,CAAC;IACpC,sDAAsD;IACtD,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,MAAM,cAAc,GAAG,oBAAoB,GAAG,sBAAsB,CAAC;AAY3E,mDAAmD;AACnD,wBAAgB,WAAW,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAS9D;AAED,gDAAgD;AAChD,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,SAAS,EAAE,CAKnD;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,+BAiI9C;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,eAAe,+BAYpD"}
|