@flamingo-stack/openframe-frontend-core 0.0.672 → 0.0.673-2406.7239.1
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/{chunk-YNGAJGYB.cjs → chunk-6LWIJJJ6.cjs} +410 -6
- package/dist/{chunk-3PVOF3IB.js.map → chunk-6LWIJJJ6.cjs.map} +1 -1
- package/dist/{chunk-XLJNYTUW.cjs → chunk-6YSDCC3J.cjs} +56 -55
- package/dist/chunk-6YSDCC3J.cjs.map +1 -0
- package/dist/{chunk-GV7R2NTS.cjs → chunk-76DQOFZG.cjs} +23 -23
- package/dist/{chunk-GV7R2NTS.cjs.map → chunk-76DQOFZG.cjs.map} +1 -1
- package/dist/{chunk-UUOBCUHW.cjs → chunk-7ALCRUZ3.cjs} +3 -3
- package/dist/{chunk-UUOBCUHW.cjs.map → chunk-7ALCRUZ3.cjs.map} +1 -1
- package/dist/{chunk-PWPYCJ33.js → chunk-7RQZ2FTF.js} +2 -2
- package/dist/{chunk-XDTU23P4.js → chunk-ALSCESHG.js} +2 -2
- package/dist/{chunk-HVEX4BSC.cjs → chunk-AUQ4UITE.cjs} +60 -45
- package/dist/chunk-AUQ4UITE.cjs.map +1 -0
- package/dist/{chunk-CBCETEB4.cjs → chunk-E6B34U5Q.cjs} +6 -6
- package/dist/{chunk-CBCETEB4.cjs.map → chunk-E6B34U5Q.cjs.map} +1 -1
- package/dist/{chunk-H54F476P.cjs → chunk-FK3VSQ35.cjs} +3 -3
- package/dist/{chunk-H54F476P.cjs.map → chunk-FK3VSQ35.cjs.map} +1 -1
- package/dist/{chunk-HOEVEB7N.cjs → chunk-GCOVKIE7.cjs} +40 -29
- package/dist/chunk-GCOVKIE7.cjs.map +1 -0
- package/dist/{chunk-42OVTTOM.js → chunk-GIYAUKCY.js} +18 -3
- package/dist/{chunk-42OVTTOM.js.map → chunk-GIYAUKCY.js.map} +1 -1
- package/dist/{chunk-TQPKNG2E.js → chunk-INVZNRWB.js} +3 -3
- package/dist/{chunk-ZRIVCLPR.js → chunk-JD5TKRCU.js} +1 -1
- package/dist/chunk-JD5TKRCU.js.map +1 -0
- package/dist/{chunk-IBGHJLNT.js → chunk-JF4ZQZZJ.js} +2 -2
- package/dist/{chunk-SNWAN52K.cjs → chunk-JJDPSYBV.cjs} +3 -3
- package/dist/{chunk-SNWAN52K.cjs.map → chunk-JJDPSYBV.cjs.map} +1 -1
- package/dist/{chunk-D55IENZJ.cjs → chunk-LCMT2GZK.cjs} +1 -1
- package/dist/chunk-LCMT2GZK.cjs.map +1 -0
- package/dist/{chunk-AL4I5HHB.js → chunk-MMDGSGVE.js} +4 -4
- package/dist/{chunk-O5PYXQ6H.js → chunk-N3Q4FMMB.js} +3 -3
- package/dist/{chunk-RD3I5PBB.cjs → chunk-NUVRMZW5.cjs} +15 -15
- package/dist/{chunk-RD3I5PBB.cjs.map → chunk-NUVRMZW5.cjs.map} +1 -1
- package/dist/{chunk-T3KXCOB2.js → chunk-OIE6GKS3.js} +2 -2
- package/dist/{chunk-TFSGYKWG.js → chunk-OZL6FSB2.js} +28 -17
- package/dist/chunk-OZL6FSB2.js.map +1 -0
- package/dist/{chunk-NETIHUEY.cjs → chunk-P2A3KAYW.cjs} +10 -10
- package/dist/{chunk-NETIHUEY.cjs.map → chunk-P2A3KAYW.cjs.map} +1 -1
- package/dist/{chunk-6S2KLT7O.js → chunk-Q4KRZOQR.js} +4 -4
- package/dist/{chunk-BODMICIH.cjs → chunk-S7W7MTBM.cjs} +40 -40
- package/dist/{chunk-BODMICIH.cjs.map → chunk-S7W7MTBM.cjs.map} +1 -1
- package/dist/{chunk-3PVOF3IB.js → chunk-SGK4Q2W2.js} +407 -3
- package/dist/chunk-SGK4Q2W2.js.map +1 -0
- package/dist/{chunk-VZRVQEMT.cjs → chunk-SYTDEWZJ.cjs} +7 -7
- package/dist/{chunk-VZRVQEMT.cjs.map → chunk-SYTDEWZJ.cjs.map} +1 -1
- package/dist/{chunk-Z6E45TJM.js → chunk-TDCIGINK.js} +5 -5
- package/dist/{chunk-UOQRNZIB.cjs → chunk-TQATQ4CX.cjs} +17 -17
- package/dist/{chunk-UOQRNZIB.cjs.map → chunk-TQATQ4CX.cjs.map} +1 -1
- package/dist/{chunk-PSL2WBEO.cjs → chunk-TT6O7BUZ.cjs} +33 -33
- package/dist/{chunk-PSL2WBEO.cjs.map → chunk-TT6O7BUZ.cjs.map} +1 -1
- package/dist/{chunk-JREG4T6K.cjs → chunk-U7BJC4WF.cjs} +3 -3
- package/dist/{chunk-JREG4T6K.cjs.map → chunk-U7BJC4WF.cjs.map} +1 -1
- package/dist/{chunk-EKABOXNB.js → chunk-UIKMPCHW.js} +2 -2
- package/dist/{chunk-7KM34VWL.js → chunk-XMJT3QZ2.js} +3 -3
- package/dist/{chunk-4AZWVS7F.js → chunk-XSOL5ISO.js} +7 -6
- package/dist/{chunk-4AZWVS7F.js.map → chunk-XSOL5ISO.js.map} +1 -1
- package/dist/{chunk-KSBDARII.js → chunk-Y2ASYQ3P.js} +5 -5
- package/dist/components/case-studies/index.cjs +17 -14
- package/dist/components/case-studies/index.cjs.map +1 -1
- package/dist/components/case-studies/index.js +8 -5
- package/dist/components/case-studies/index.js.map +1 -1
- package/dist/components/case-studies/share-experience-section.d.ts.map +1 -1
- package/dist/components/contact/contact-form.d.ts +7 -1
- package/dist/components/contact/contact-form.d.ts.map +1 -1
- package/dist/components/contact/index.cjs +5 -5
- package/dist/components/contact/index.js +4 -4
- package/dist/components/docs/index.cjs +8 -8
- package/dist/components/docs/index.js +7 -7
- package/dist/components/embeds/index.cjs +5 -5
- package/dist/components/embeds/index.js +4 -4
- package/dist/components/faq/index.cjs +5 -5
- package/dist/components/faq/index.js +4 -4
- package/dist/components/features/index.cjs +4 -4
- package/dist/components/features/index.js +3 -3
- package/dist/components/features/waitlist-form.d.ts +7 -2
- package/dist/components/features/waitlist-form.d.ts.map +1 -1
- package/dist/components/help-center-pages/index.cjs +54 -52
- package/dist/components/help-center-pages/index.cjs.map +1 -1
- package/dist/components/help-center-pages/index.js +17 -15
- package/dist/components/help-center-pages/index.js.map +1 -1
- package/dist/components/help-center-pages/trust-center-sections.d.ts.map +1 -1
- package/dist/components/index.cjs +35 -35
- package/dist/components/index.js +14 -14
- package/dist/components/meeting-scheduler/booking-form.d.ts +7 -1
- package/dist/components/meeting-scheduler/booking-form.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/index.cjs +53 -31
- package/dist/components/meeting-scheduler/index.cjs.map +1 -1
- package/dist/components/meeting-scheduler/index.d.ts +5 -1
- package/dist/components/meeting-scheduler/index.d.ts.map +1 -1
- package/dist/components/meeting-scheduler/index.js +31 -9
- package/dist/components/meeting-scheduler/index.js.map +1 -1
- package/dist/components/navigation/index.cjs +7 -7
- package/dist/components/navigation/index.js +6 -6
- package/dist/components/onboarding-guides/index.cjs +7 -7
- package/dist/components/onboarding-guides/index.js +6 -6
- package/dist/components/tickets/help-center-create-form.d.ts.map +1 -1
- package/dist/components/tickets/index.cjs +8 -8
- package/dist/components/tickets/index.js +7 -7
- package/dist/components/ui/index.cjs +4 -4
- package/dist/components/ui/index.js +3 -3
- package/dist/contexts/endpoints-runtime-context.d.ts +5 -0
- package/dist/contexts/endpoints-runtime-context.d.ts.map +1 -1
- package/dist/contexts/index.cjs +2 -2
- package/dist/contexts/index.js +1 -1
- package/dist/hooks/index.cjs +9 -3
- package/dist/hooks/index.cjs.map +1 -1
- package/dist/hooks/index.d.ts +2 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +8 -2
- package/dist/hooks/use-form-rescue.d.ts +43 -0
- package/dist/hooks/use-form-rescue.d.ts.map +1 -0
- package/dist/hooks/use-rescued-form.d.ts +28 -0
- package/dist/hooks/use-rescued-form.d.ts.map +1 -0
- package/dist/index.cjs +60 -8
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +59 -7
- package/dist/index.js.map +1 -1
- package/dist/utils/form-rescue.cjs +142 -0
- package/dist/utils/form-rescue.cjs.map +1 -0
- package/dist/utils/form-rescue.d.ts +133 -0
- package/dist/utils/form-rescue.d.ts.map +1 -0
- package/dist/utils/form-rescue.js +118 -0
- package/dist/utils/form-rescue.js.map +1 -0
- package/dist/utils/index.cjs +138 -0
- package/dist/utils/index.cjs.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +116 -1
- package/dist/utils/index.js.map +1 -1
- package/package.json +7 -1
- package/src/components/case-studies/share-experience-section.tsx +2 -0
- package/src/components/contact/contact-form.tsx +33 -12
- package/src/components/features/waitlist-form.tsx +27 -2
- package/src/components/help-center-pages/trust-center-sections.tsx +2 -0
- package/src/components/meeting-scheduler/booking-form.tsx +30 -2
- package/src/components/meeting-scheduler/index.tsx +10 -1
- package/src/components/tickets/help-center-create-form.tsx +2 -0
- package/src/contexts/endpoints-runtime-context.tsx +5 -0
- package/src/hooks/__tests__/use-form-rescue.test.tsx +189 -0
- package/src/hooks/__tests__/use-rescued-form.test.tsx +91 -0
- package/src/hooks/index.ts +4 -0
- package/src/hooks/use-form-rescue.ts +330 -0
- package/src/hooks/use-rescued-form.ts +71 -0
- package/src/utils/__tests__/form-rescue.test.ts +124 -0
- package/src/utils/form-rescue.ts +237 -0
- package/src/utils/index.ts +5 -0
- package/dist/chunk-D55IENZJ.cjs.map +0 -1
- package/dist/chunk-HOEVEB7N.cjs.map +0 -1
- package/dist/chunk-HVEX4BSC.cjs.map +0 -1
- package/dist/chunk-TFSGYKWG.js.map +0 -1
- package/dist/chunk-XLJNYTUW.cjs.map +0 -1
- package/dist/chunk-YNGAJGYB.cjs.map +0 -1
- package/dist/chunk-ZRIVCLPR.js.map +0 -1
- /package/dist/{chunk-PWPYCJ33.js.map → chunk-7RQZ2FTF.js.map} +0 -0
- /package/dist/{chunk-XDTU23P4.js.map → chunk-ALSCESHG.js.map} +0 -0
- /package/dist/{chunk-TQPKNG2E.js.map → chunk-INVZNRWB.js.map} +0 -0
- /package/dist/{chunk-IBGHJLNT.js.map → chunk-JF4ZQZZJ.js.map} +0 -0
- /package/dist/{chunk-AL4I5HHB.js.map → chunk-MMDGSGVE.js.map} +0 -0
- /package/dist/{chunk-O5PYXQ6H.js.map → chunk-N3Q4FMMB.js.map} +0 -0
- /package/dist/{chunk-T3KXCOB2.js.map → chunk-OIE6GKS3.js.map} +0 -0
- /package/dist/{chunk-6S2KLT7O.js.map → chunk-Q4KRZOQR.js.map} +0 -0
- /package/dist/{chunk-Z6E45TJM.js.map → chunk-TDCIGINK.js.map} +0 -0
- /package/dist/{chunk-EKABOXNB.js.map → chunk-UIKMPCHW.js.map} +0 -0
- /package/dist/{chunk-7KM34VWL.js.map → chunk-XMJT3QZ2.js.map} +0 -0
- /package/dist/{chunk-KSBDARII.js.map → chunk-Y2ASYQ3P.js.map} +0 -0
package/dist/hooks/index.js
CHANGED
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
batchFetchAuthenticatedImages,
|
|
6
6
|
clearParams,
|
|
7
7
|
coerceValue,
|
|
8
|
+
completeFormRescue,
|
|
8
9
|
configureAuthenticatedImage,
|
|
9
10
|
configureBatchImageFetch,
|
|
10
11
|
extractVariablesFromQuery,
|
|
@@ -32,6 +33,7 @@ import {
|
|
|
32
33
|
useDeferredError,
|
|
33
34
|
useDragAndDropEnabled,
|
|
34
35
|
useFocusTrap,
|
|
36
|
+
useFormRescue,
|
|
35
37
|
useHorizontalScrollbar,
|
|
36
38
|
useHumanitySignals,
|
|
37
39
|
useKeyboardCollisionPadding,
|
|
@@ -44,6 +46,7 @@ import {
|
|
|
44
46
|
usePlatformConfig,
|
|
45
47
|
usePreventScroll,
|
|
46
48
|
useQueryParams,
|
|
49
|
+
useRescuedForm,
|
|
47
50
|
useScrollToHash,
|
|
48
51
|
useSearch,
|
|
49
52
|
useTablePagination,
|
|
@@ -54,8 +57,8 @@ import {
|
|
|
54
57
|
validateSchema,
|
|
55
58
|
validateVariables,
|
|
56
59
|
variablesToUrlParams
|
|
57
|
-
} from "../chunk-
|
|
58
|
-
import "../chunk-
|
|
60
|
+
} from "../chunk-SGK4Q2W2.js";
|
|
61
|
+
import "../chunk-JD5TKRCU.js";
|
|
59
62
|
import {
|
|
60
63
|
createSearchParams,
|
|
61
64
|
shouldIncludeInUrl
|
|
@@ -104,6 +107,7 @@ export {
|
|
|
104
107
|
clearAuthedImageCache,
|
|
105
108
|
clearParams as clearVariablesParams,
|
|
106
109
|
coerceValue,
|
|
110
|
+
completeFormRescue,
|
|
107
111
|
configureAuthenticatedImage,
|
|
108
112
|
configureBatchImageFetch,
|
|
109
113
|
createSearchParams,
|
|
@@ -136,6 +140,7 @@ export {
|
|
|
136
140
|
useDeferredError,
|
|
137
141
|
useDragAndDropEnabled,
|
|
138
142
|
useFocusTrap,
|
|
143
|
+
useFormRescue,
|
|
139
144
|
useHeaderHeight,
|
|
140
145
|
useHorizontalScrollbar,
|
|
141
146
|
useHumanitySignals,
|
|
@@ -158,6 +163,7 @@ export {
|
|
|
158
163
|
usePlatformConfig,
|
|
159
164
|
usePreventScroll,
|
|
160
165
|
useQueryParams,
|
|
166
|
+
useRescuedForm,
|
|
161
167
|
useResetOnPageHidden,
|
|
162
168
|
useScrollToHash,
|
|
163
169
|
useSearch,
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { type FormRescueDefinition } from '../utils/form-rescue';
|
|
2
|
+
export interface UseFormRescueOptions {
|
|
3
|
+
/** Which form this is (`defineRescueForm`); `null` turns rescue off. */
|
|
4
|
+
form: FormRescueDefinition | null;
|
|
5
|
+
/** Every field the visitor can see. Hidden fields are never listed, so never sent. */
|
|
6
|
+
fieldNames: readonly string[];
|
|
7
|
+
/** Called once after mount with values from a resume link, else from this device's local draft. */
|
|
8
|
+
onRestore?: (values: Record<string, string>) => void;
|
|
9
|
+
/** The form's humanity signals, so the draft endpoint can run the same bot gate as the submit. */
|
|
10
|
+
getSignals?: () => Record<string, string | number>;
|
|
11
|
+
}
|
|
12
|
+
export interface FormRescueHandle {
|
|
13
|
+
/** Report the form's current values after a change (`lastField` = the field just edited). */
|
|
14
|
+
track: (values: Record<string, unknown>, lastField?: string | null) => void;
|
|
15
|
+
/** Keys to spread into the SUBMIT body so the host closes this attempt's draft. */
|
|
16
|
+
submitFields: () => Record<string, string>;
|
|
17
|
+
/** Call after a successful submit: clears the local draft and starts a fresh attempt. */
|
|
18
|
+
complete: () => void;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Close a rescue attempt after a successful submit, for a form that has already
|
|
22
|
+
* unmounted by then (the meeting scheduler's details-first flow): clears this
|
|
23
|
+
* device's draft and reports the submit. The hook's `complete` calls it too.
|
|
24
|
+
*/
|
|
25
|
+
export declare function completeFormRescue(form: FormRescueDefinition | null, attemptId?: unknown): void;
|
|
26
|
+
/**
|
|
27
|
+
* useFormRescue — saves a public form's progress so a visitor who leaves
|
|
28
|
+
* before submitting can be followed up with, and restores it when they return.
|
|
29
|
+
*
|
|
30
|
+
* Every public lead form calls it the same way (next to `useHumanitySignals`):
|
|
31
|
+
*
|
|
32
|
+
* const rescue = useFormRescue({ form: RESCUE_FORMS.waitlist, fieldNames, onRestore, getSignals })
|
|
33
|
+
* // on change: rescue.track(values, changedField)
|
|
34
|
+
* // submit: body = { ...data, ...getSignals(), ...rescue.submitFields() }
|
|
35
|
+
* // success: rescue.complete()
|
|
36
|
+
*
|
|
37
|
+
* Saves go to the host's `EndpointsRuntime.formDraftsUrl` (debounced, plus one
|
|
38
|
+
* final keepalive save when the tab is hidden). A host that does not provide
|
|
39
|
+
* the url gets the local draft only. Nothing here can block or delay a submit:
|
|
40
|
+
* every network and storage call is fire-and-forget and swallows its errors.
|
|
41
|
+
*/
|
|
42
|
+
export declare function useFormRescue({ form, fieldNames, onRestore, getSignals }: UseFormRescueOptions): FormRescueHandle;
|
|
43
|
+
//# sourceMappingURL=use-form-rescue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-form-rescue.d.ts","sourceRoot":"","sources":["../../src/hooks/use-form-rescue.ts"],"names":[],"mappings":"AAKA,OAAO,EAgBL,KAAK,oBAAoB,EAC1B,MAAM,sBAAsB,CAAC;AAa9B,MAAM,WAAW,oBAAoB;IACnC,wEAAwE;IACxE,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAClC,sFAAsF;IACtF,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,mGAAmG;IACnG,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;IACrD,kGAAkG;IAClG,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,gBAAgB;IAC/B,6FAA6F;IAC7F,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC5E,mFAAmF;IACnF,YAAY,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,yFAAyF;IACzF,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AA0CD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI,EAAE,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAQ/F;AAgBD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,oBAAoB,GAAG,gBAAgB,CA6LjH"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { FieldValues, Path, UseFormReturn } from 'react-hook-form';
|
|
2
|
+
import type { FormRescueDefinition } from '../utils/form-rescue';
|
|
3
|
+
import { type FormRescueHandle } from './use-form-rescue';
|
|
4
|
+
export interface UseRescuedFormOptions<T extends FieldValues> {
|
|
5
|
+
/** The form's definition (`defineRescueForm` / `RESCUE_FORMS`); `null` turns rescue off. */
|
|
6
|
+
rescue: FormRescueDefinition | null;
|
|
7
|
+
/** The fields the visitor can see, by the name a draft stores them under. Hidden fields are never listed. */
|
|
8
|
+
fields: readonly string[];
|
|
9
|
+
/** The form's humanity signals, so draft saves pass the same bot gate as the submit. */
|
|
10
|
+
getSignals?: () => Record<string, string | number>;
|
|
11
|
+
/** Where a stored field lives in the form, when it is nested (`company` → `formFields.company`). Default: the same name. */
|
|
12
|
+
fieldPath?: (name: string) => Path<T>;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* useRescuedForm — form rescue for ANY react-hook-form form, in one call.
|
|
16
|
+
*
|
|
17
|
+
* Wires what every rescued form needs so no form hand-rolls it: every edit is
|
|
18
|
+
* tracked (`watch`), a resume link or this device's draft fills the empty
|
|
19
|
+
* fields (`setValue`), and the handle's `submitFields()` / `complete()` close
|
|
20
|
+
* the attempt on submit. A form that is not react-hook-form uses
|
|
21
|
+
* `useFormRescue` directly.
|
|
22
|
+
*
|
|
23
|
+
* const rescue = useRescuedForm(form, { rescue: RESCUE_FORMS.contact, fields, getSignals })
|
|
24
|
+
* // submit: body = { ...data, ...getSignals(), ...rescue.submitFields() }
|
|
25
|
+
* // success: rescue.complete()
|
|
26
|
+
*/
|
|
27
|
+
export declare function useRescuedForm<T extends FieldValues>(form: Pick<UseFormReturn<T>, 'watch' | 'getValues' | 'setValue'>, { rescue, fields, getSignals, fieldPath }: UseRescuedFormOptions<T>): FormRescueHandle;
|
|
28
|
+
//# sourceMappingURL=use-rescued-form.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use-rescued-form.d.ts","sourceRoot":"","sources":["../../src/hooks/use-rescued-form.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,IAAI,EAAa,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACnF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,EAAiB,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEzE,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,WAAW;IAC1D,4FAA4F;IAC5F,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACpC,6GAA6G;IAC7G,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B,wFAAwF;IACxF,UAAU,CAAC,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;IACnD,4HAA4H;IAC5H,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC;CACvC;AAYD;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,WAAW,EAClD,IAAI,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,WAAW,GAAG,UAAU,CAAC,EAChE,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,EAAE,qBAAqB,CAAC,CAAC,CAAC,GAClE,gBAAgB,CA0BlB"}
|