@websolutespa/bom-llm 0.0.37 → 0.0.39
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/CHANGELOG.md +13 -0
- package/dist/index.d.ts +1 -0
- package/dist/umd/index.js +1080 -1064
- package/dist/umd/index.js.map +1 -1
- package/package.json +1 -1
package/dist/umd/index.js
CHANGED
|
@@ -8127,7 +8127,7 @@
|
|
|
8127
8127
|
}
|
|
8128
8128
|
return context;
|
|
8129
8129
|
};
|
|
8130
|
-
return [useGenericContext, genericContext.Provider];
|
|
8130
|
+
return [useGenericContext, genericContext.Provider, genericContext];
|
|
8131
8131
|
};
|
|
8132
8132
|
|
|
8133
8133
|
const [useLayout, LayoutContextProvider] = createGenericContext();
|
|
@@ -8143,6 +8143,15 @@
|
|
|
8143
8143
|
});
|
|
8144
8144
|
}
|
|
8145
8145
|
|
|
8146
|
+
function useAutosizeTextArea(textAreaRef, value) {
|
|
8147
|
+
reactExports.useEffect(() => {
|
|
8148
|
+
if (textAreaRef) {
|
|
8149
|
+
textAreaRef.style.height = '0px';
|
|
8150
|
+
textAreaRef.style.height = textAreaRef.scrollHeight + 1 + 'px';
|
|
8151
|
+
}
|
|
8152
|
+
}, [textAreaRef, value]);
|
|
8153
|
+
}
|
|
8154
|
+
|
|
8146
8155
|
const useIsomorphicLayoutEffect$2 = isBrowser$1 ? reactExports.useLayoutEffect : reactExports.useEffect;
|
|
8147
8156
|
|
|
8148
8157
|
// Window Event based useEventListener interface
|
|
@@ -8199,70 +8208,6 @@
|
|
|
8199
8208
|
return windowSize;
|
|
8200
8209
|
}
|
|
8201
8210
|
|
|
8202
|
-
function useNumber(options, locale) {
|
|
8203
|
-
const layout = useLayout();
|
|
8204
|
-
const currentLocale = locale || layout.locale;
|
|
8205
|
-
const flatOptions = options ? Object.entries(options).map(_ref => {
|
|
8206
|
-
let [k, v] = _ref;
|
|
8207
|
-
return `${k}:${v}`;
|
|
8208
|
-
}).join('') : undefined;
|
|
8209
|
-
const formatter = reactExports.useMemo(() => {
|
|
8210
|
-
const formatter = new Intl.NumberFormat(currentLocale, options).format;
|
|
8211
|
-
return formatter;
|
|
8212
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
8213
|
-
}, [currentLocale, flatOptions]);
|
|
8214
|
-
return formatter;
|
|
8215
|
-
}
|
|
8216
|
-
|
|
8217
|
-
function useCurrency(currency, locale) {
|
|
8218
|
-
if (currency === void 0) {
|
|
8219
|
-
currency = 'EUR';
|
|
8220
|
-
}
|
|
8221
|
-
return useNumber({
|
|
8222
|
-
style: 'currency',
|
|
8223
|
-
currency,
|
|
8224
|
-
minimumFractionDigits: 2,
|
|
8225
|
-
maximumFractionDigits: 2
|
|
8226
|
-
}, locale);
|
|
8227
|
-
}
|
|
8228
|
-
|
|
8229
|
-
/*
|
|
8230
|
-
import { useMemo } from 'react';
|
|
8231
|
-
import { useNumber } from '../useNumber/useNumber';
|
|
8232
|
-
import { useLayout } from '../useLayout/useLayout';
|
|
8233
|
-
|
|
8234
|
-
export function useCurrency(currency: string = 'EUR', locale?: string): (value: number) => string {
|
|
8235
|
-
const layout = useLayout();
|
|
8236
|
-
const currentLocale = locale || layout.locale;
|
|
8237
|
-
|
|
8238
|
-
const formatter = useMemo(() => {
|
|
8239
|
-
const options = { style: 'currency', currency };
|
|
8240
|
-
const formatter = new Intl.NumberFormat(currentLocale, options).format;
|
|
8241
|
-
return formatter;
|
|
8242
|
-
}, [currency, currentLocale]);
|
|
8243
|
-
|
|
8244
|
-
return formatter;
|
|
8245
|
-
}
|
|
8246
|
-
|
|
8247
|
-
*/
|
|
8248
|
-
|
|
8249
|
-
/*
|
|
8250
|
-
|
|
8251
|
-
export function useCurrency(value: number, currency: string = 'EUR', locale?: string): string {
|
|
8252
|
-
|
|
8253
|
-
const layout = useLayout();
|
|
8254
|
-
|
|
8255
|
-
const currentLocale = locale || layout.locale;
|
|
8256
|
-
|
|
8257
|
-
return useMemo(() => {
|
|
8258
|
-
const options = { style: 'currency', currency };
|
|
8259
|
-
const formattedValue = new Intl.NumberFormat(currentLocale, options).format(value);
|
|
8260
|
-
return formattedValue;
|
|
8261
|
-
}, [value, currency, currentLocale]);
|
|
8262
|
-
}
|
|
8263
|
-
|
|
8264
|
-
*/
|
|
8265
|
-
|
|
8266
8211
|
const createStoreImpl = (createState) => {
|
|
8267
8212
|
let state;
|
|
8268
8213
|
const listeners = /* @__PURE__ */ new Set();
|
|
@@ -8466,542 +8411,977 @@
|
|
|
8466
8411
|
return slice;
|
|
8467
8412
|
}
|
|
8468
8413
|
|
|
8469
|
-
|
|
8470
|
-
|
|
8471
|
-
|
|
8472
|
-
|
|
8473
|
-
|
|
8474
|
-
|
|
8475
|
-
|
|
8476
|
-
|
|
8477
|
-
|
|
8478
|
-
|
|
8414
|
+
function createJSONStorage(getStorage, options) {
|
|
8415
|
+
let storage;
|
|
8416
|
+
try {
|
|
8417
|
+
storage = getStorage();
|
|
8418
|
+
} catch (e) {
|
|
8419
|
+
return;
|
|
8420
|
+
}
|
|
8421
|
+
const persistStorage = {
|
|
8422
|
+
getItem: (name) => {
|
|
8423
|
+
var _a;
|
|
8424
|
+
const parse = (str2) => {
|
|
8425
|
+
if (str2 === null) {
|
|
8426
|
+
return null;
|
|
8427
|
+
}
|
|
8428
|
+
return JSON.parse(str2, options == null ? void 0 : options.reviver);
|
|
8429
|
+
};
|
|
8430
|
+
const str = (_a = storage.getItem(name)) != null ? _a : null;
|
|
8431
|
+
if (str instanceof Promise) {
|
|
8432
|
+
return str.then(parse);
|
|
8433
|
+
}
|
|
8434
|
+
return parse(str);
|
|
8435
|
+
},
|
|
8436
|
+
setItem: (name, newValue) => storage.setItem(
|
|
8437
|
+
name,
|
|
8438
|
+
JSON.stringify(newValue, options == null ? void 0 : options.replacer)
|
|
8439
|
+
),
|
|
8440
|
+
removeItem: (name) => storage.removeItem(name)
|
|
8441
|
+
};
|
|
8442
|
+
return persistStorage;
|
|
8479
8443
|
}
|
|
8480
|
-
|
|
8481
|
-
|
|
8482
|
-
|
|
8483
|
-
|
|
8484
|
-
|
|
8485
|
-
|
|
8486
|
-
|
|
8487
|
-
|
|
8488
|
-
|
|
8489
|
-
|
|
8490
|
-
|
|
8491
|
-
|
|
8492
|
-
|
|
8493
|
-
|
|
8494
|
-
|
|
8495
|
-
|
|
8496
|
-
|
|
8497
|
-
|
|
8498
|
-
|
|
8499
|
-
|
|
8500
|
-
|
|
8501
|
-
|
|
8502
|
-
|
|
8503
|
-
|
|
8504
|
-
KeyCode[KeyCode["End"] = 35] = "End";
|
|
8505
|
-
KeyCode[KeyCode["Home"] = 36] = "Home";
|
|
8506
|
-
KeyCode[KeyCode["LeftArrow"] = 37] = "LeftArrow";
|
|
8507
|
-
KeyCode[KeyCode["UpArrow"] = 38] = "UpArrow";
|
|
8508
|
-
KeyCode[KeyCode["RightArrow"] = 39] = "RightArrow";
|
|
8509
|
-
KeyCode[KeyCode["DownArrow"] = 40] = "DownArrow";
|
|
8510
|
-
KeyCode[KeyCode["Insert"] = 45] = "Insert";
|
|
8511
|
-
KeyCode[KeyCode["Delete"] = 46] = "Delete";
|
|
8512
|
-
KeyCode[KeyCode["KEY_0"] = 48] = "KEY_0";
|
|
8513
|
-
KeyCode[KeyCode["KEY_1"] = 49] = "KEY_1";
|
|
8514
|
-
KeyCode[KeyCode["KEY_2"] = 50] = "KEY_2";
|
|
8515
|
-
KeyCode[KeyCode["KEY_3"] = 51] = "KEY_3";
|
|
8516
|
-
KeyCode[KeyCode["KEY_4"] = 52] = "KEY_4";
|
|
8517
|
-
KeyCode[KeyCode["KEY_5"] = 53] = "KEY_5";
|
|
8518
|
-
KeyCode[KeyCode["KEY_6"] = 54] = "KEY_6";
|
|
8519
|
-
KeyCode[KeyCode["KEY_7"] = 55] = "KEY_7";
|
|
8520
|
-
KeyCode[KeyCode["KEY_8"] = 56] = "KEY_8";
|
|
8521
|
-
KeyCode[KeyCode["KEY_9"] = 57] = "KEY_9";
|
|
8522
|
-
KeyCode[KeyCode["KEY_A"] = 65] = "KEY_A";
|
|
8523
|
-
KeyCode[KeyCode["KEY_B"] = 66] = "KEY_B";
|
|
8524
|
-
KeyCode[KeyCode["KEY_C"] = 67] = "KEY_C";
|
|
8525
|
-
KeyCode[KeyCode["KEY_D"] = 68] = "KEY_D";
|
|
8526
|
-
KeyCode[KeyCode["KEY_E"] = 69] = "KEY_E";
|
|
8527
|
-
KeyCode[KeyCode["KEY_F"] = 70] = "KEY_F";
|
|
8528
|
-
KeyCode[KeyCode["KEY_G"] = 71] = "KEY_G";
|
|
8529
|
-
KeyCode[KeyCode["KEY_H"] = 72] = "KEY_H";
|
|
8530
|
-
KeyCode[KeyCode["KEY_I"] = 73] = "KEY_I";
|
|
8531
|
-
KeyCode[KeyCode["KEY_J"] = 74] = "KEY_J";
|
|
8532
|
-
KeyCode[KeyCode["KEY_K"] = 75] = "KEY_K";
|
|
8533
|
-
KeyCode[KeyCode["KEY_L"] = 76] = "KEY_L";
|
|
8534
|
-
KeyCode[KeyCode["KEY_M"] = 77] = "KEY_M";
|
|
8535
|
-
KeyCode[KeyCode["KEY_N"] = 78] = "KEY_N";
|
|
8536
|
-
KeyCode[KeyCode["KEY_O"] = 79] = "KEY_O";
|
|
8537
|
-
KeyCode[KeyCode["KEY_P"] = 80] = "KEY_P";
|
|
8538
|
-
KeyCode[KeyCode["KEY_Q"] = 81] = "KEY_Q";
|
|
8539
|
-
KeyCode[KeyCode["KEY_R"] = 82] = "KEY_R";
|
|
8540
|
-
KeyCode[KeyCode["KEY_S"] = 83] = "KEY_S";
|
|
8541
|
-
KeyCode[KeyCode["KEY_T"] = 84] = "KEY_T";
|
|
8542
|
-
KeyCode[KeyCode["KEY_U"] = 85] = "KEY_U";
|
|
8543
|
-
KeyCode[KeyCode["KEY_V"] = 86] = "KEY_V";
|
|
8544
|
-
KeyCode[KeyCode["KEY_W"] = 87] = "KEY_W";
|
|
8545
|
-
KeyCode[KeyCode["KEY_X"] = 88] = "KEY_X";
|
|
8546
|
-
KeyCode[KeyCode["KEY_Y"] = 89] = "KEY_Y";
|
|
8547
|
-
KeyCode[KeyCode["KEY_Z"] = 90] = "KEY_Z";
|
|
8548
|
-
KeyCode[KeyCode["Meta"] = 91] = "Meta";
|
|
8549
|
-
KeyCode[KeyCode["F1"] = 112] = "F1";
|
|
8550
|
-
KeyCode[KeyCode["F2"] = 113] = "F2";
|
|
8551
|
-
KeyCode[KeyCode["F3"] = 114] = "F3";
|
|
8552
|
-
KeyCode[KeyCode["F4"] = 115] = "F4";
|
|
8553
|
-
KeyCode[KeyCode["F5"] = 116] = "F5";
|
|
8554
|
-
KeyCode[KeyCode["F6"] = 117] = "F6";
|
|
8555
|
-
KeyCode[KeyCode["F7"] = 118] = "F7";
|
|
8556
|
-
KeyCode[KeyCode["F8"] = 119] = "F8";
|
|
8557
|
-
KeyCode[KeyCode["F9"] = 120] = "F9";
|
|
8558
|
-
KeyCode[KeyCode["F10"] = 121] = "F10";
|
|
8559
|
-
KeyCode[KeyCode["F11"] = 122] = "F11";
|
|
8560
|
-
KeyCode[KeyCode["F12"] = 123] = "F12";
|
|
8561
|
-
KeyCode[KeyCode["NumLock"] = 144] = "NumLock";
|
|
8562
|
-
KeyCode[KeyCode["ScrollLock"] = 145] = "ScrollLock";
|
|
8563
|
-
KeyCode[KeyCode["Equal"] = 187] = "Equal";
|
|
8564
|
-
KeyCode[KeyCode["Minus"] = 189] = "Minus";
|
|
8565
|
-
KeyCode[KeyCode["Backquote"] = 192] = "Backquote";
|
|
8566
|
-
KeyCode[KeyCode["Backslash"] = 220] = "Backslash";
|
|
8567
|
-
return KeyCode;
|
|
8568
|
-
}({});
|
|
8569
|
-
let KeyMod = /*#__PURE__*/function (KeyMod) {
|
|
8570
|
-
KeyMod[KeyMod["CtrlCmd"] = 2048] = "CtrlCmd";
|
|
8571
|
-
KeyMod[KeyMod["Shift"] = 1024] = "Shift";
|
|
8572
|
-
KeyMod[KeyMod["Alt"] = 512] = "Alt";
|
|
8573
|
-
KeyMod[KeyMod["WinCtrl"] = 256] = "WinCtrl";
|
|
8574
|
-
return KeyMod;
|
|
8575
|
-
}({});
|
|
8576
|
-
|
|
8577
|
-
const detectIsBrowser = () => {
|
|
8578
|
-
return Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);
|
|
8444
|
+
const toThenable = (fn) => (input) => {
|
|
8445
|
+
try {
|
|
8446
|
+
const result = fn(input);
|
|
8447
|
+
if (result instanceof Promise) {
|
|
8448
|
+
return result;
|
|
8449
|
+
}
|
|
8450
|
+
return {
|
|
8451
|
+
then(onFulfilled) {
|
|
8452
|
+
return toThenable(onFulfilled)(result);
|
|
8453
|
+
},
|
|
8454
|
+
catch(_onRejected) {
|
|
8455
|
+
return this;
|
|
8456
|
+
}
|
|
8457
|
+
};
|
|
8458
|
+
} catch (e) {
|
|
8459
|
+
return {
|
|
8460
|
+
then(_onFulfilled) {
|
|
8461
|
+
return this;
|
|
8462
|
+
},
|
|
8463
|
+
catch(onRejected) {
|
|
8464
|
+
return toThenable(onRejected)(e);
|
|
8465
|
+
}
|
|
8466
|
+
};
|
|
8467
|
+
}
|
|
8579
8468
|
};
|
|
8580
|
-
|
|
8581
|
-
|
|
8582
|
-
|
|
8583
|
-
|
|
8584
|
-
|
|
8585
|
-
|
|
8586
|
-
|
|
8587
|
-
|
|
8469
|
+
const oldImpl = (config, baseOptions) => (set, get, api) => {
|
|
8470
|
+
let options = {
|
|
8471
|
+
getStorage: () => localStorage,
|
|
8472
|
+
serialize: JSON.stringify,
|
|
8473
|
+
deserialize: JSON.parse,
|
|
8474
|
+
partialize: (state) => state,
|
|
8475
|
+
version: 0,
|
|
8476
|
+
merge: (persistedState, currentState) => ({
|
|
8477
|
+
...currentState,
|
|
8478
|
+
...persistedState
|
|
8479
|
+
}),
|
|
8480
|
+
...baseOptions
|
|
8588
8481
|
};
|
|
8589
|
-
|
|
8590
|
-
|
|
8591
|
-
|
|
8592
|
-
|
|
8593
|
-
|
|
8594
|
-
|
|
8595
|
-
}
|
|
8596
|
-
}
|
|
8597
|
-
function getActiveModMap(bindings) {
|
|
8598
|
-
const modBindings = bindings.filter(item => !!KeyMod[item]);
|
|
8599
|
-
const activeModMap = {
|
|
8600
|
-
CtrlCmd: false,
|
|
8601
|
-
Shift: false,
|
|
8602
|
-
Alt: false,
|
|
8603
|
-
WinCtrl: false
|
|
8604
|
-
};
|
|
8605
|
-
modBindings.forEach(code => {
|
|
8606
|
-
const modKey = KeyMod[code];
|
|
8607
|
-
activeModMap[modKey] = true;
|
|
8608
|
-
});
|
|
8609
|
-
return activeModMap;
|
|
8610
|
-
}
|
|
8611
|
-
function isMac() {
|
|
8612
|
-
if (!detectIsBrowser()) {
|
|
8613
|
-
return false;
|
|
8482
|
+
let hasHydrated = false;
|
|
8483
|
+
const hydrationListeners = /* @__PURE__ */ new Set();
|
|
8484
|
+
const finishHydrationListeners = /* @__PURE__ */ new Set();
|
|
8485
|
+
let storage;
|
|
8486
|
+
try {
|
|
8487
|
+
storage = options.getStorage();
|
|
8488
|
+
} catch (e) {
|
|
8614
8489
|
}
|
|
8615
|
-
|
|
8616
|
-
|
|
8617
|
-
|
|
8618
|
-
|
|
8619
|
-
|
|
8620
|
-
|
|
8490
|
+
if (!storage) {
|
|
8491
|
+
return config(
|
|
8492
|
+
(...args) => {
|
|
8493
|
+
console.warn(
|
|
8494
|
+
`[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`
|
|
8495
|
+
);
|
|
8496
|
+
set(...args);
|
|
8497
|
+
},
|
|
8498
|
+
get,
|
|
8499
|
+
api
|
|
8500
|
+
);
|
|
8621
8501
|
}
|
|
8622
|
-
const
|
|
8623
|
-
const {
|
|
8624
|
-
|
|
8625
|
-
|
|
8626
|
-
|
|
8627
|
-
|
|
8628
|
-
|
|
8629
|
-
|
|
8630
|
-
|
|
8631
|
-
|
|
8632
|
-
|
|
8633
|
-
CtrlCmd,
|
|
8634
|
-
WinCtrl
|
|
8635
|
-
} = getCtrlKeysByPlatform();
|
|
8636
|
-
const eventHandler = event => {
|
|
8637
|
-
if (activeModMap.Shift && !event.shiftKey) return;
|
|
8638
|
-
if (activeModMap.Alt && !event.altKey) return;
|
|
8639
|
-
if (activeModMap.CtrlCmd && !event[CtrlCmd]) return;
|
|
8640
|
-
if (activeModMap.WinCtrl && !event[WinCtrl]) return;
|
|
8641
|
-
const hitOne = keyCode.find(k => k === event.keyCode);
|
|
8642
|
-
if (keyCode && !hitOne) return;
|
|
8643
|
-
if (stopPropagation) {
|
|
8644
|
-
event.stopPropagation();
|
|
8645
|
-
}
|
|
8646
|
-
if (preventDefault) {
|
|
8647
|
-
event.preventDefault();
|
|
8502
|
+
const thenableSerialize = toThenable(options.serialize);
|
|
8503
|
+
const setItem = () => {
|
|
8504
|
+
const state = options.partialize({ ...get() });
|
|
8505
|
+
let errorInSync;
|
|
8506
|
+
const thenable = thenableSerialize({ state, version: options.version }).then(
|
|
8507
|
+
(serializedValue) => storage.setItem(options.name, serializedValue)
|
|
8508
|
+
).catch((e) => {
|
|
8509
|
+
errorInSync = e;
|
|
8510
|
+
});
|
|
8511
|
+
if (errorInSync) {
|
|
8512
|
+
throw errorInSync;
|
|
8648
8513
|
}
|
|
8649
|
-
|
|
8514
|
+
return thenable;
|
|
8650
8515
|
};
|
|
8651
|
-
|
|
8652
|
-
|
|
8653
|
-
|
|
8654
|
-
|
|
8655
|
-
return () => {
|
|
8656
|
-
document.removeEventListener(event, eventHandler);
|
|
8657
|
-
};
|
|
8658
|
-
}, [disableGlobalEvent]);
|
|
8659
|
-
const elementBindingHandler = function (elementEventType, isCapture) {
|
|
8660
|
-
if (isCapture === void 0) {
|
|
8661
|
-
isCapture = false;
|
|
8662
|
-
}
|
|
8663
|
-
if (elementEventType !== event) return () => {};
|
|
8664
|
-
if (isCapture !== capture) return () => {};
|
|
8665
|
-
return e => eventHandler(e);
|
|
8516
|
+
const savedSetState = api.setState;
|
|
8517
|
+
api.setState = (state, replace) => {
|
|
8518
|
+
savedSetState(state, replace);
|
|
8519
|
+
void setItem();
|
|
8666
8520
|
};
|
|
8667
|
-
|
|
8668
|
-
|
|
8669
|
-
|
|
8670
|
-
|
|
8671
|
-
|
|
8672
|
-
|
|
8673
|
-
|
|
8674
|
-
|
|
8521
|
+
const configResult = config(
|
|
8522
|
+
(...args) => {
|
|
8523
|
+
set(...args);
|
|
8524
|
+
void setItem();
|
|
8525
|
+
},
|
|
8526
|
+
get,
|
|
8527
|
+
api
|
|
8528
|
+
);
|
|
8529
|
+
let stateFromStorage;
|
|
8530
|
+
const hydrate = () => {
|
|
8531
|
+
var _a;
|
|
8532
|
+
if (!storage)
|
|
8533
|
+
return;
|
|
8534
|
+
hasHydrated = false;
|
|
8535
|
+
hydrationListeners.forEach((cb) => cb(get()));
|
|
8536
|
+
const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get())) || void 0;
|
|
8537
|
+
return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {
|
|
8538
|
+
if (storageValue) {
|
|
8539
|
+
return options.deserialize(storageValue);
|
|
8540
|
+
}
|
|
8541
|
+
}).then((deserializedStorageValue) => {
|
|
8542
|
+
if (deserializedStorageValue) {
|
|
8543
|
+
if (typeof deserializedStorageValue.version === "number" && deserializedStorageValue.version !== options.version) {
|
|
8544
|
+
if (options.migrate) {
|
|
8545
|
+
return options.migrate(
|
|
8546
|
+
deserializedStorageValue.state,
|
|
8547
|
+
deserializedStorageValue.version
|
|
8548
|
+
);
|
|
8549
|
+
}
|
|
8550
|
+
console.error(
|
|
8551
|
+
`State loaded from storage couldn't be migrated since no migrate function was provided`
|
|
8552
|
+
);
|
|
8553
|
+
} else {
|
|
8554
|
+
return deserializedStorageValue.state;
|
|
8555
|
+
}
|
|
8556
|
+
}
|
|
8557
|
+
}).then((migratedState) => {
|
|
8558
|
+
var _a2;
|
|
8559
|
+
stateFromStorage = options.merge(
|
|
8560
|
+
migratedState,
|
|
8561
|
+
(_a2 = get()) != null ? _a2 : configResult
|
|
8562
|
+
);
|
|
8563
|
+
set(stateFromStorage, true);
|
|
8564
|
+
return setItem();
|
|
8565
|
+
}).then(() => {
|
|
8566
|
+
postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);
|
|
8567
|
+
hasHydrated = true;
|
|
8568
|
+
finishHydrationListeners.forEach((cb) => cb(stateFromStorage));
|
|
8569
|
+
}).catch((e) => {
|
|
8570
|
+
postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);
|
|
8571
|
+
});
|
|
8572
|
+
};
|
|
8573
|
+
api.persist = {
|
|
8574
|
+
setOptions: (newOptions) => {
|
|
8575
|
+
options = {
|
|
8576
|
+
...options,
|
|
8577
|
+
...newOptions
|
|
8578
|
+
};
|
|
8579
|
+
if (newOptions.getStorage) {
|
|
8580
|
+
storage = newOptions.getStorage();
|
|
8581
|
+
}
|
|
8582
|
+
},
|
|
8583
|
+
clearStorage: () => {
|
|
8584
|
+
storage == null ? void 0 : storage.removeItem(options.name);
|
|
8585
|
+
},
|
|
8586
|
+
getOptions: () => options,
|
|
8587
|
+
rehydrate: () => hydrate(),
|
|
8588
|
+
hasHydrated: () => hasHydrated,
|
|
8589
|
+
onHydrate: (cb) => {
|
|
8590
|
+
hydrationListeners.add(cb);
|
|
8591
|
+
return () => {
|
|
8592
|
+
hydrationListeners.delete(cb);
|
|
8593
|
+
};
|
|
8594
|
+
},
|
|
8595
|
+
onFinishHydration: (cb) => {
|
|
8596
|
+
finishHydrationListeners.add(cb);
|
|
8597
|
+
return () => {
|
|
8598
|
+
finishHydrationListeners.delete(cb);
|
|
8599
|
+
};
|
|
8675
8600
|
}
|
|
8676
8601
|
};
|
|
8602
|
+
hydrate();
|
|
8603
|
+
return stateFromStorage || configResult;
|
|
8677
8604
|
};
|
|
8678
|
-
|
|
8679
|
-
|
|
8680
|
-
|
|
8681
|
-
|
|
8682
|
-
|
|
8683
|
-
|
|
8684
|
-
|
|
8685
|
-
|
|
8686
|
-
|
|
8687
|
-
|
|
8688
|
-
const labelService = new LabelService(labels);
|
|
8689
|
-
const getLabel = (key, params) => {
|
|
8690
|
-
return labelService.getLabel(key, params);
|
|
8605
|
+
const newImpl = (config, baseOptions) => (set, get, api) => {
|
|
8606
|
+
let options = {
|
|
8607
|
+
storage: createJSONStorage(() => localStorage),
|
|
8608
|
+
partialize: (state) => state,
|
|
8609
|
+
version: 0,
|
|
8610
|
+
merge: (persistedState, currentState) => ({
|
|
8611
|
+
...currentState,
|
|
8612
|
+
...persistedState
|
|
8613
|
+
}),
|
|
8614
|
+
...baseOptions
|
|
8691
8615
|
};
|
|
8692
|
-
|
|
8693
|
-
|
|
8694
|
-
|
|
8695
|
-
|
|
8696
|
-
|
|
8697
|
-
|
|
8698
|
-
|
|
8699
|
-
|
|
8700
|
-
|
|
8701
|
-
|
|
8702
|
-
|
|
8703
|
-
|
|
8704
|
-
|
|
8705
|
-
|
|
8706
|
-
|
|
8707
|
-
const label = dictionary[key] != null ? dictionary[key] : key;
|
|
8708
|
-
if (params) {
|
|
8709
|
-
return parseParams(label, params);
|
|
8616
|
+
let hasHydrated = false;
|
|
8617
|
+
const hydrationListeners = /* @__PURE__ */ new Set();
|
|
8618
|
+
const finishHydrationListeners = /* @__PURE__ */ new Set();
|
|
8619
|
+
let storage = options.storage;
|
|
8620
|
+
if (!storage) {
|
|
8621
|
+
return config(
|
|
8622
|
+
(...args) => {
|
|
8623
|
+
console.warn(
|
|
8624
|
+
`[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`
|
|
8625
|
+
);
|
|
8626
|
+
set(...args);
|
|
8627
|
+
},
|
|
8628
|
+
get,
|
|
8629
|
+
api
|
|
8630
|
+
);
|
|
8710
8631
|
}
|
|
8711
|
-
|
|
8712
|
-
|
|
8713
|
-
|
|
8714
|
-
|
|
8715
|
-
|
|
8716
|
-
|
|
8717
|
-
|
|
8718
|
-
|
|
8632
|
+
const setItem = () => {
|
|
8633
|
+
const state = options.partialize({ ...get() });
|
|
8634
|
+
return storage.setItem(options.name, {
|
|
8635
|
+
state,
|
|
8636
|
+
version: options.version
|
|
8637
|
+
});
|
|
8638
|
+
};
|
|
8639
|
+
const savedSetState = api.setState;
|
|
8640
|
+
api.setState = (state, replace) => {
|
|
8641
|
+
savedSetState(state, replace);
|
|
8642
|
+
void setItem();
|
|
8643
|
+
};
|
|
8644
|
+
const configResult = config(
|
|
8645
|
+
(...args) => {
|
|
8646
|
+
set(...args);
|
|
8647
|
+
void setItem();
|
|
8648
|
+
},
|
|
8649
|
+
get,
|
|
8650
|
+
api
|
|
8651
|
+
);
|
|
8652
|
+
api.getInitialState = () => configResult;
|
|
8653
|
+
let stateFromStorage;
|
|
8654
|
+
const hydrate = () => {
|
|
8655
|
+
var _a, _b;
|
|
8656
|
+
if (!storage)
|
|
8657
|
+
return;
|
|
8658
|
+
hasHydrated = false;
|
|
8659
|
+
hydrationListeners.forEach((cb) => {
|
|
8660
|
+
var _a2;
|
|
8661
|
+
return cb((_a2 = get()) != null ? _a2 : configResult);
|
|
8662
|
+
});
|
|
8663
|
+
const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;
|
|
8664
|
+
return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {
|
|
8665
|
+
if (deserializedStorageValue) {
|
|
8666
|
+
if (typeof deserializedStorageValue.version === "number" && deserializedStorageValue.version !== options.version) {
|
|
8667
|
+
if (options.migrate) {
|
|
8668
|
+
return options.migrate(
|
|
8669
|
+
deserializedStorageValue.state,
|
|
8670
|
+
deserializedStorageValue.version
|
|
8671
|
+
);
|
|
8672
|
+
}
|
|
8673
|
+
console.error(
|
|
8674
|
+
`State loaded from storage couldn't be migrated since no migrate function was provided`
|
|
8675
|
+
);
|
|
8676
|
+
} else {
|
|
8677
|
+
return deserializedStorageValue.state;
|
|
8678
|
+
}
|
|
8679
|
+
}
|
|
8680
|
+
}).then((migratedState) => {
|
|
8681
|
+
var _a2;
|
|
8682
|
+
stateFromStorage = options.merge(
|
|
8683
|
+
migratedState,
|
|
8684
|
+
(_a2 = get()) != null ? _a2 : configResult
|
|
8685
|
+
);
|
|
8686
|
+
set(stateFromStorage, true);
|
|
8687
|
+
return setItem();
|
|
8688
|
+
}).then(() => {
|
|
8689
|
+
postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);
|
|
8690
|
+
stateFromStorage = get();
|
|
8691
|
+
hasHydrated = true;
|
|
8692
|
+
finishHydrationListeners.forEach((cb) => cb(stateFromStorage));
|
|
8693
|
+
}).catch((e) => {
|
|
8694
|
+
postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);
|
|
8695
|
+
});
|
|
8696
|
+
};
|
|
8697
|
+
api.persist = {
|
|
8698
|
+
setOptions: (newOptions) => {
|
|
8699
|
+
options = {
|
|
8700
|
+
...options,
|
|
8701
|
+
...newOptions
|
|
8702
|
+
};
|
|
8703
|
+
if (newOptions.storage) {
|
|
8704
|
+
storage = newOptions.storage;
|
|
8705
|
+
}
|
|
8706
|
+
},
|
|
8707
|
+
clearStorage: () => {
|
|
8708
|
+
storage == null ? void 0 : storage.removeItem(options.name);
|
|
8709
|
+
},
|
|
8710
|
+
getOptions: () => options,
|
|
8711
|
+
rehydrate: () => hydrate(),
|
|
8712
|
+
hasHydrated: () => hasHydrated,
|
|
8713
|
+
onHydrate: (cb) => {
|
|
8714
|
+
hydrationListeners.add(cb);
|
|
8715
|
+
return () => {
|
|
8716
|
+
hydrationListeners.delete(cb);
|
|
8717
|
+
};
|
|
8718
|
+
},
|
|
8719
|
+
onFinishHydration: (cb) => {
|
|
8720
|
+
finishHydrationListeners.add(cb);
|
|
8721
|
+
return () => {
|
|
8722
|
+
finishHydrationListeners.delete(cb);
|
|
8723
|
+
};
|
|
8724
|
+
}
|
|
8725
|
+
};
|
|
8726
|
+
if (!options.skipHydration) {
|
|
8727
|
+
hydrate();
|
|
8728
|
+
}
|
|
8729
|
+
return stateFromStorage || configResult;
|
|
8730
|
+
};
|
|
8731
|
+
const persistImpl = (config, baseOptions) => {
|
|
8732
|
+
if ("getStorage" in baseOptions || "serialize" in baseOptions || "deserialize" in baseOptions) {
|
|
8733
|
+
if ((undefined ? undefined.MODE : void 0) !== "production") {
|
|
8734
|
+
console.warn(
|
|
8735
|
+
"[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead."
|
|
8736
|
+
);
|
|
8737
|
+
}
|
|
8738
|
+
return oldImpl(config, baseOptions);
|
|
8739
|
+
}
|
|
8740
|
+
return newImpl(config, baseOptions);
|
|
8741
|
+
};
|
|
8742
|
+
const persist = persistImpl;
|
|
8743
|
+
|
|
8744
|
+
function useNumber(options, locale) {
|
|
8745
|
+
const layout = useLayout();
|
|
8746
|
+
const currentLocale = locale || layout.locale;
|
|
8747
|
+
const flatOptions = options ? Object.entries(options).map(_ref => {
|
|
8748
|
+
let [k, v] = _ref;
|
|
8749
|
+
return `${k}:${v}`;
|
|
8750
|
+
}).join('') : undefined;
|
|
8751
|
+
const formatter = reactExports.useMemo(() => {
|
|
8752
|
+
const formatter = new Intl.NumberFormat(currentLocale, options).format;
|
|
8753
|
+
return formatter;
|
|
8754
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
8755
|
+
}, [currentLocale, flatOptions]);
|
|
8756
|
+
return formatter;
|
|
8757
|
+
}
|
|
8758
|
+
|
|
8759
|
+
function useCurrency(currency, locale) {
|
|
8760
|
+
if (currency === void 0) {
|
|
8761
|
+
currency = 'EUR';
|
|
8762
|
+
}
|
|
8763
|
+
return useNumber({
|
|
8764
|
+
style: 'currency',
|
|
8765
|
+
currency,
|
|
8766
|
+
minimumFractionDigits: 2,
|
|
8767
|
+
maximumFractionDigits: 2
|
|
8768
|
+
}, locale);
|
|
8719
8769
|
}
|
|
8720
8770
|
|
|
8721
8771
|
/*
|
|
8722
|
-
import {
|
|
8772
|
+
import { useMemo } from 'react';
|
|
8773
|
+
import { useNumber } from '../useNumber/useNumber';
|
|
8774
|
+
import { useLayout } from '../useLayout/useLayout';
|
|
8723
8775
|
|
|
8724
|
-
export function
|
|
8725
|
-
const
|
|
8726
|
-
const
|
|
8727
|
-
|
|
8728
|
-
|
|
8729
|
-
|
|
8730
|
-
|
|
8731
|
-
|
|
8732
|
-
}, []);
|
|
8733
|
-
|
|
8776
|
+
export function useCurrency(currency: string = 'EUR', locale?: string): (value: number) => string {
|
|
8777
|
+
const layout = useLayout();
|
|
8778
|
+
const currentLocale = locale || layout.locale;
|
|
8779
|
+
|
|
8780
|
+
const formatter = useMemo(() => {
|
|
8781
|
+
const options = { style: 'currency', currency };
|
|
8782
|
+
const formatter = new Intl.NumberFormat(currentLocale, options).format;
|
|
8783
|
+
return formatter;
|
|
8784
|
+
}, [currency, currentLocale]);
|
|
8785
|
+
|
|
8786
|
+
return formatter;
|
|
8734
8787
|
}
|
|
8788
|
+
|
|
8735
8789
|
*/
|
|
8736
8790
|
|
|
8737
|
-
|
|
8738
|
-
|
|
8739
|
-
|
|
8740
|
-
|
|
8741
|
-
|
|
8742
|
-
|
|
8743
|
-
|
|
8791
|
+
/*
|
|
8792
|
+
|
|
8793
|
+
export function useCurrency(value: number, currency: string = 'EUR', locale?: string): string {
|
|
8794
|
+
|
|
8795
|
+
const layout = useLayout();
|
|
8796
|
+
|
|
8797
|
+
const currentLocale = locale || layout.locale;
|
|
8798
|
+
|
|
8799
|
+
return useMemo(() => {
|
|
8800
|
+
const options = { style: 'currency', currency };
|
|
8801
|
+
const formattedValue = new Intl.NumberFormat(currentLocale, options).format(value);
|
|
8802
|
+
return formattedValue;
|
|
8803
|
+
}, [value, currency, currentLocale]);
|
|
8804
|
+
}
|
|
8805
|
+
|
|
8806
|
+
*/
|
|
8744
8807
|
|
|
8745
|
-
const [
|
|
8746
|
-
function
|
|
8808
|
+
const [useExtra, ExtraContextProvider] = createGenericContext({});
|
|
8809
|
+
function ExtraProvider(_ref) {
|
|
8747
8810
|
let {
|
|
8748
8811
|
children,
|
|
8749
|
-
|
|
8812
|
+
extra
|
|
8750
8813
|
} = _ref;
|
|
8751
|
-
|
|
8752
|
-
|
|
8753
|
-
value: page,
|
|
8814
|
+
return /*#__PURE__*/jsxRuntimeExports.jsx(ExtraContextProvider, {
|
|
8815
|
+
value: extra,
|
|
8754
8816
|
children: children
|
|
8755
8817
|
});
|
|
8756
8818
|
}
|
|
8757
8819
|
|
|
8758
|
-
|
|
8759
|
-
|
|
8760
|
-
|
|
8761
|
-
name = getUID();
|
|
8820
|
+
function useFocusTrap(ref, options) {
|
|
8821
|
+
if (options === void 0) {
|
|
8822
|
+
options = {};
|
|
8762
8823
|
}
|
|
8763
|
-
const
|
|
8764
|
-
|
|
8765
|
-
|
|
8766
|
-
|
|
8767
|
-
|
|
8768
|
-
|
|
8769
|
-
|
|
8770
|
-
|
|
8771
|
-
|
|
8772
|
-
|
|
8773
|
-
|
|
8824
|
+
const selectors = options.selectors || 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';
|
|
8825
|
+
const [state, setState] = reactExports.useState(!options.disabled);
|
|
8826
|
+
useIsomorphicLayoutEffect$2(() => {
|
|
8827
|
+
const element = ref.current;
|
|
8828
|
+
if (element) {
|
|
8829
|
+
const elements = element.querySelectorAll(selectors);
|
|
8830
|
+
const first = elements[0];
|
|
8831
|
+
const last = elements[elements.length - 1];
|
|
8832
|
+
const onKeyDown = event => {
|
|
8833
|
+
// console.log(event.key, event.code, event.keyCode);
|
|
8834
|
+
const isTabPressed = event.key === 'Tab';
|
|
8835
|
+
if (!isTabPressed) {
|
|
8836
|
+
return;
|
|
8837
|
+
}
|
|
8838
|
+
if (event.shiftKey) {
|
|
8839
|
+
// shift + tab
|
|
8840
|
+
if (document.activeElement === first) {
|
|
8841
|
+
last.focus();
|
|
8842
|
+
event.preventDefault();
|
|
8843
|
+
}
|
|
8844
|
+
} else {
|
|
8845
|
+
// tab
|
|
8846
|
+
if (document.activeElement === last) {
|
|
8847
|
+
first.focus();
|
|
8848
|
+
event.preventDefault();
|
|
8849
|
+
}
|
|
8850
|
+
}
|
|
8851
|
+
};
|
|
8852
|
+
element.addEventListener('keydown', onKeyDown);
|
|
8853
|
+
return () => {
|
|
8854
|
+
element.removeEventListener('keydown', onKeyDown);
|
|
8855
|
+
};
|
|
8774
8856
|
}
|
|
8775
|
-
|
|
8776
|
-
}, []);
|
|
8777
|
-
return
|
|
8778
|
-
}
|
|
8779
|
-
function createElementWithId(id) {
|
|
8780
|
-
const element = document.createElement('div');
|
|
8781
|
-
element.setAttribute('id', id);
|
|
8782
|
-
return element;
|
|
8783
|
-
}
|
|
8784
|
-
function getUID() {
|
|
8785
|
-
return Math.random().toString(32).slice(2, 10);
|
|
8786
|
-
}
|
|
8787
|
-
|
|
8788
|
-
/**
|
|
8789
|
-
* @public
|
|
8790
|
-
*/
|
|
8791
|
-
const MotionConfigContext = reactExports.createContext({
|
|
8792
|
-
transformPagePoint: (p) => p,
|
|
8793
|
-
isStatic: false,
|
|
8794
|
-
reducedMotion: "never",
|
|
8795
|
-
});
|
|
8796
|
-
|
|
8797
|
-
const MotionContext = reactExports.createContext({});
|
|
8798
|
-
function useVisualElementContext() {
|
|
8799
|
-
return reactExports.useContext(MotionContext).visualElement;
|
|
8857
|
+
return () => {};
|
|
8858
|
+
}, [ref.current]);
|
|
8859
|
+
return [state, setState];
|
|
8800
8860
|
}
|
|
8801
8861
|
|
|
8802
|
-
/**
|
|
8803
|
-
*
|
|
8862
|
+
/**
|
|
8863
|
+
* KeyBinding Codes
|
|
8864
|
+
* The content of this file is based on the design of the open source project "microsoft/vscode",
|
|
8865
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
8866
|
+
*
|
|
8867
|
+
* We inherit the KeyMod values from "microsoft/vscode",
|
|
8868
|
+
* but use the Browser's KeyboardEvent event implementation, and all values are used only as identification.
|
|
8804
8869
|
*/
|
|
8805
|
-
const PresenceContext = reactExports.createContext(null);
|
|
8806
|
-
|
|
8807
|
-
const isBrowser = typeof document !== "undefined";
|
|
8808
|
-
|
|
8809
|
-
const useIsomorphicLayoutEffect$1 = isBrowser ? reactExports.useLayoutEffect : reactExports.useEffect;
|
|
8810
|
-
|
|
8811
|
-
const LazyContext = reactExports.createContext({ strict: false });
|
|
8812
|
-
|
|
8813
|
-
function useVisualElement(Component, visualState, props, createVisualElement) {
|
|
8814
|
-
const parent = useVisualElementContext();
|
|
8815
|
-
const lazyContext = reactExports.useContext(LazyContext);
|
|
8816
|
-
const presenceContext = reactExports.useContext(PresenceContext);
|
|
8817
|
-
const reducedMotionConfig = reactExports.useContext(MotionConfigContext).reducedMotion;
|
|
8818
|
-
const visualElementRef = reactExports.useRef();
|
|
8819
|
-
/**
|
|
8820
|
-
* If we haven't preloaded a renderer, check to see if we have one lazy-loaded
|
|
8821
|
-
*/
|
|
8822
|
-
createVisualElement = createVisualElement || lazyContext.renderer;
|
|
8823
|
-
if (!visualElementRef.current && createVisualElement) {
|
|
8824
|
-
visualElementRef.current = createVisualElement(Component, {
|
|
8825
|
-
visualState,
|
|
8826
|
-
parent,
|
|
8827
|
-
props,
|
|
8828
|
-
presenceId: presenceContext ? presenceContext.id : undefined,
|
|
8829
|
-
blockInitialAnimation: presenceContext
|
|
8830
|
-
? presenceContext.initial === false
|
|
8831
|
-
: false,
|
|
8832
|
-
reducedMotionConfig,
|
|
8833
|
-
});
|
|
8834
|
-
}
|
|
8835
|
-
const visualElement = visualElementRef.current;
|
|
8836
|
-
useIsomorphicLayoutEffect$1(() => {
|
|
8837
|
-
visualElement && visualElement.render();
|
|
8838
|
-
});
|
|
8839
|
-
/**
|
|
8840
|
-
* If we have optimised appear animations to handoff from, trigger animateChanges
|
|
8841
|
-
* from a synchronous useLayoutEffect to ensure there's no flash of incorrectly
|
|
8842
|
-
* styled component in the event of a hydration error.
|
|
8843
|
-
*/
|
|
8844
|
-
useIsomorphicLayoutEffect$1(() => {
|
|
8845
|
-
if (visualElement && visualElement.animationState) {
|
|
8846
|
-
visualElement.animationState.animateChanges();
|
|
8847
|
-
}
|
|
8848
|
-
});
|
|
8849
|
-
useIsomorphicLayoutEffect$1(() => () => visualElement && visualElement.notify("Unmount"), []);
|
|
8850
|
-
return visualElement;
|
|
8851
|
-
}
|
|
8852
|
-
|
|
8853
|
-
function isRefObject(ref) {
|
|
8854
|
-
return (typeof ref === "object" &&
|
|
8855
|
-
Object.prototype.hasOwnProperty.call(ref, "current"));
|
|
8856
|
-
}
|
|
8857
8870
|
|
|
8858
|
-
|
|
8859
|
-
|
|
8860
|
-
|
|
8861
|
-
|
|
8862
|
-
|
|
8863
|
-
|
|
8864
|
-
|
|
8865
|
-
|
|
8866
|
-
|
|
8867
|
-
|
|
8868
|
-
|
|
8869
|
-
|
|
8870
|
-
|
|
8871
|
-
|
|
8872
|
-
|
|
8873
|
-
|
|
8874
|
-
|
|
8875
|
-
|
|
8876
|
-
|
|
8877
|
-
|
|
8878
|
-
|
|
8879
|
-
|
|
8880
|
-
|
|
8881
|
-
|
|
8882
|
-
|
|
8883
|
-
|
|
8884
|
-
|
|
8885
|
-
|
|
8871
|
+
let KeyCode = /*#__PURE__*/function (KeyCode) {
|
|
8872
|
+
KeyCode[KeyCode["Unknown"] = 0] = "Unknown";
|
|
8873
|
+
KeyCode[KeyCode["Backspace"] = 8] = "Backspace";
|
|
8874
|
+
KeyCode[KeyCode["Tab"] = 9] = "Tab";
|
|
8875
|
+
KeyCode[KeyCode["Enter"] = 13] = "Enter";
|
|
8876
|
+
KeyCode[KeyCode["Shift"] = 16] = "Shift";
|
|
8877
|
+
KeyCode[KeyCode["Ctrl"] = 17] = "Ctrl";
|
|
8878
|
+
KeyCode[KeyCode["Alt"] = 18] = "Alt";
|
|
8879
|
+
KeyCode[KeyCode["PauseBreak"] = 19] = "PauseBreak";
|
|
8880
|
+
KeyCode[KeyCode["CapsLock"] = 20] = "CapsLock";
|
|
8881
|
+
KeyCode[KeyCode["Escape"] = 27] = "Escape";
|
|
8882
|
+
KeyCode[KeyCode["Space"] = 32] = "Space";
|
|
8883
|
+
KeyCode[KeyCode["PageUp"] = 33] = "PageUp";
|
|
8884
|
+
KeyCode[KeyCode["PageDown"] = 34] = "PageDown";
|
|
8885
|
+
KeyCode[KeyCode["End"] = 35] = "End";
|
|
8886
|
+
KeyCode[KeyCode["Home"] = 36] = "Home";
|
|
8887
|
+
KeyCode[KeyCode["LeftArrow"] = 37] = "LeftArrow";
|
|
8888
|
+
KeyCode[KeyCode["UpArrow"] = 38] = "UpArrow";
|
|
8889
|
+
KeyCode[KeyCode["RightArrow"] = 39] = "RightArrow";
|
|
8890
|
+
KeyCode[KeyCode["DownArrow"] = 40] = "DownArrow";
|
|
8891
|
+
KeyCode[KeyCode["Insert"] = 45] = "Insert";
|
|
8892
|
+
KeyCode[KeyCode["Delete"] = 46] = "Delete";
|
|
8893
|
+
KeyCode[KeyCode["KEY_0"] = 48] = "KEY_0";
|
|
8894
|
+
KeyCode[KeyCode["KEY_1"] = 49] = "KEY_1";
|
|
8895
|
+
KeyCode[KeyCode["KEY_2"] = 50] = "KEY_2";
|
|
8896
|
+
KeyCode[KeyCode["KEY_3"] = 51] = "KEY_3";
|
|
8897
|
+
KeyCode[KeyCode["KEY_4"] = 52] = "KEY_4";
|
|
8898
|
+
KeyCode[KeyCode["KEY_5"] = 53] = "KEY_5";
|
|
8899
|
+
KeyCode[KeyCode["KEY_6"] = 54] = "KEY_6";
|
|
8900
|
+
KeyCode[KeyCode["KEY_7"] = 55] = "KEY_7";
|
|
8901
|
+
KeyCode[KeyCode["KEY_8"] = 56] = "KEY_8";
|
|
8902
|
+
KeyCode[KeyCode["KEY_9"] = 57] = "KEY_9";
|
|
8903
|
+
KeyCode[KeyCode["KEY_A"] = 65] = "KEY_A";
|
|
8904
|
+
KeyCode[KeyCode["KEY_B"] = 66] = "KEY_B";
|
|
8905
|
+
KeyCode[KeyCode["KEY_C"] = 67] = "KEY_C";
|
|
8906
|
+
KeyCode[KeyCode["KEY_D"] = 68] = "KEY_D";
|
|
8907
|
+
KeyCode[KeyCode["KEY_E"] = 69] = "KEY_E";
|
|
8908
|
+
KeyCode[KeyCode["KEY_F"] = 70] = "KEY_F";
|
|
8909
|
+
KeyCode[KeyCode["KEY_G"] = 71] = "KEY_G";
|
|
8910
|
+
KeyCode[KeyCode["KEY_H"] = 72] = "KEY_H";
|
|
8911
|
+
KeyCode[KeyCode["KEY_I"] = 73] = "KEY_I";
|
|
8912
|
+
KeyCode[KeyCode["KEY_J"] = 74] = "KEY_J";
|
|
8913
|
+
KeyCode[KeyCode["KEY_K"] = 75] = "KEY_K";
|
|
8914
|
+
KeyCode[KeyCode["KEY_L"] = 76] = "KEY_L";
|
|
8915
|
+
KeyCode[KeyCode["KEY_M"] = 77] = "KEY_M";
|
|
8916
|
+
KeyCode[KeyCode["KEY_N"] = 78] = "KEY_N";
|
|
8917
|
+
KeyCode[KeyCode["KEY_O"] = 79] = "KEY_O";
|
|
8918
|
+
KeyCode[KeyCode["KEY_P"] = 80] = "KEY_P";
|
|
8919
|
+
KeyCode[KeyCode["KEY_Q"] = 81] = "KEY_Q";
|
|
8920
|
+
KeyCode[KeyCode["KEY_R"] = 82] = "KEY_R";
|
|
8921
|
+
KeyCode[KeyCode["KEY_S"] = 83] = "KEY_S";
|
|
8922
|
+
KeyCode[KeyCode["KEY_T"] = 84] = "KEY_T";
|
|
8923
|
+
KeyCode[KeyCode["KEY_U"] = 85] = "KEY_U";
|
|
8924
|
+
KeyCode[KeyCode["KEY_V"] = 86] = "KEY_V";
|
|
8925
|
+
KeyCode[KeyCode["KEY_W"] = 87] = "KEY_W";
|
|
8926
|
+
KeyCode[KeyCode["KEY_X"] = 88] = "KEY_X";
|
|
8927
|
+
KeyCode[KeyCode["KEY_Y"] = 89] = "KEY_Y";
|
|
8928
|
+
KeyCode[KeyCode["KEY_Z"] = 90] = "KEY_Z";
|
|
8929
|
+
KeyCode[KeyCode["Meta"] = 91] = "Meta";
|
|
8930
|
+
KeyCode[KeyCode["F1"] = 112] = "F1";
|
|
8931
|
+
KeyCode[KeyCode["F2"] = 113] = "F2";
|
|
8932
|
+
KeyCode[KeyCode["F3"] = 114] = "F3";
|
|
8933
|
+
KeyCode[KeyCode["F4"] = 115] = "F4";
|
|
8934
|
+
KeyCode[KeyCode["F5"] = 116] = "F5";
|
|
8935
|
+
KeyCode[KeyCode["F6"] = 117] = "F6";
|
|
8936
|
+
KeyCode[KeyCode["F7"] = 118] = "F7";
|
|
8937
|
+
KeyCode[KeyCode["F8"] = 119] = "F8";
|
|
8938
|
+
KeyCode[KeyCode["F9"] = 120] = "F9";
|
|
8939
|
+
KeyCode[KeyCode["F10"] = 121] = "F10";
|
|
8940
|
+
KeyCode[KeyCode["F11"] = 122] = "F11";
|
|
8941
|
+
KeyCode[KeyCode["F12"] = 123] = "F12";
|
|
8942
|
+
KeyCode[KeyCode["NumLock"] = 144] = "NumLock";
|
|
8943
|
+
KeyCode[KeyCode["ScrollLock"] = 145] = "ScrollLock";
|
|
8944
|
+
KeyCode[KeyCode["Equal"] = 187] = "Equal";
|
|
8945
|
+
KeyCode[KeyCode["Minus"] = 189] = "Minus";
|
|
8946
|
+
KeyCode[KeyCode["Backquote"] = 192] = "Backquote";
|
|
8947
|
+
KeyCode[KeyCode["Backslash"] = 220] = "Backslash";
|
|
8948
|
+
return KeyCode;
|
|
8949
|
+
}({});
|
|
8950
|
+
let KeyMod = /*#__PURE__*/function (KeyMod) {
|
|
8951
|
+
KeyMod[KeyMod["CtrlCmd"] = 2048] = "CtrlCmd";
|
|
8952
|
+
KeyMod[KeyMod["Shift"] = 1024] = "Shift";
|
|
8953
|
+
KeyMod[KeyMod["Alt"] = 512] = "Alt";
|
|
8954
|
+
KeyMod[KeyMod["WinCtrl"] = 256] = "WinCtrl";
|
|
8955
|
+
return KeyMod;
|
|
8956
|
+
}({});
|
|
8886
8957
|
|
|
8887
|
-
|
|
8888
|
-
|
|
8889
|
-
|
|
8890
|
-
function
|
|
8891
|
-
|
|
8958
|
+
const detectIsBrowser = () => {
|
|
8959
|
+
return Boolean(typeof window !== 'undefined' && window.document && window.document.createElement);
|
|
8960
|
+
};
|
|
8961
|
+
function useSSR() {
|
|
8962
|
+
const [browser, setBrowser] = reactExports.useState(false);
|
|
8963
|
+
reactExports.useEffect(() => {
|
|
8964
|
+
setBrowser(detectIsBrowser());
|
|
8965
|
+
}, []);
|
|
8966
|
+
return {
|
|
8967
|
+
isBrowser: browser,
|
|
8968
|
+
isServer: !browser
|
|
8969
|
+
};
|
|
8892
8970
|
}
|
|
8893
8971
|
|
|
8894
|
-
function
|
|
8895
|
-
|
|
8972
|
+
function getCtrlKeysByPlatform() {
|
|
8973
|
+
return {
|
|
8974
|
+
CtrlCmd: isMac() ? 'metaKey' : 'ctrlKey',
|
|
8975
|
+
WinCtrl: isMac() ? 'ctrlKey' : 'metaKey'
|
|
8976
|
+
};
|
|
8896
8977
|
}
|
|
8897
|
-
|
|
8898
|
-
|
|
8899
|
-
|
|
8900
|
-
|
|
8901
|
-
|
|
8902
|
-
|
|
8903
|
-
|
|
8904
|
-
|
|
8905
|
-
|
|
8906
|
-
|
|
8907
|
-
|
|
8908
|
-
|
|
8909
|
-
|
|
8910
|
-
variantProps$1.some((name) => isVariantLabel(props[name])));
|
|
8978
|
+
function getActiveModMap(bindings) {
|
|
8979
|
+
const modBindings = bindings.filter(item => !!KeyMod[item]);
|
|
8980
|
+
const activeModMap = {
|
|
8981
|
+
CtrlCmd: false,
|
|
8982
|
+
Shift: false,
|
|
8983
|
+
Alt: false,
|
|
8984
|
+
WinCtrl: false
|
|
8985
|
+
};
|
|
8986
|
+
modBindings.forEach(code => {
|
|
8987
|
+
const modKey = KeyMod[code];
|
|
8988
|
+
activeModMap[modKey] = true;
|
|
8989
|
+
});
|
|
8990
|
+
return activeModMap;
|
|
8911
8991
|
}
|
|
8912
|
-
function
|
|
8913
|
-
|
|
8992
|
+
function isMac() {
|
|
8993
|
+
if (!detectIsBrowser()) {
|
|
8994
|
+
return false;
|
|
8995
|
+
}
|
|
8996
|
+
return navigator.platform.toUpperCase().indexOf('MAC') >= 0;
|
|
8914
8997
|
}
|
|
8915
8998
|
|
|
8916
|
-
function
|
|
8917
|
-
|
|
8918
|
-
|
|
8919
|
-
|
|
8920
|
-
|
|
8921
|
-
|
|
8922
|
-
|
|
8923
|
-
|
|
8924
|
-
|
|
8999
|
+
const useKeyboard = function (handler, keyBindings, options) {
|
|
9000
|
+
if (options === void 0) {
|
|
9001
|
+
options = {};
|
|
9002
|
+
}
|
|
9003
|
+
const bindings = Array.isArray(keyBindings) ? keyBindings : [keyBindings];
|
|
9004
|
+
const {
|
|
9005
|
+
disableGlobalEvent = false,
|
|
9006
|
+
capture = false,
|
|
9007
|
+
stopPropagation = false,
|
|
9008
|
+
preventDefault = true,
|
|
9009
|
+
event = 'keydown'
|
|
9010
|
+
} = options;
|
|
9011
|
+
const activeModMap = getActiveModMap(bindings);
|
|
9012
|
+
const keyCode = bindings.filter(item => !KeyMod[item]);
|
|
9013
|
+
const {
|
|
9014
|
+
CtrlCmd,
|
|
9015
|
+
WinCtrl
|
|
9016
|
+
} = getCtrlKeysByPlatform();
|
|
9017
|
+
const eventHandler = event => {
|
|
9018
|
+
if (activeModMap.Shift && !event.shiftKey) return;
|
|
9019
|
+
if (activeModMap.Alt && !event.altKey) return;
|
|
9020
|
+
if (activeModMap.CtrlCmd && !event[CtrlCmd]) return;
|
|
9021
|
+
if (activeModMap.WinCtrl && !event[WinCtrl]) return;
|
|
9022
|
+
const hitOne = keyCode.find(k => k === event.keyCode);
|
|
9023
|
+
if (keyCode && !hitOne) return;
|
|
9024
|
+
if (stopPropagation) {
|
|
9025
|
+
event.stopPropagation();
|
|
8925
9026
|
}
|
|
8926
|
-
|
|
8927
|
-
|
|
9027
|
+
if (preventDefault) {
|
|
9028
|
+
event.preventDefault();
|
|
9029
|
+
}
|
|
9030
|
+
handler && handler(event);
|
|
9031
|
+
};
|
|
9032
|
+
reactExports.useEffect(() => {
|
|
9033
|
+
if (!disableGlobalEvent) {
|
|
9034
|
+
document.addEventListener(event, eventHandler);
|
|
9035
|
+
}
|
|
9036
|
+
return () => {
|
|
9037
|
+
document.removeEventListener(event, eventHandler);
|
|
9038
|
+
};
|
|
9039
|
+
}, [disableGlobalEvent]);
|
|
9040
|
+
const elementBindingHandler = function (elementEventType, isCapture) {
|
|
9041
|
+
if (isCapture === void 0) {
|
|
9042
|
+
isCapture = false;
|
|
9043
|
+
}
|
|
9044
|
+
if (elementEventType !== event) return () => {};
|
|
9045
|
+
if (isCapture !== capture) return () => {};
|
|
9046
|
+
return e => eventHandler(e);
|
|
9047
|
+
};
|
|
9048
|
+
return {
|
|
9049
|
+
bindings: {
|
|
9050
|
+
onKeyDown: elementBindingHandler('keydown'),
|
|
9051
|
+
onKeyDownCapture: elementBindingHandler('keydown', true),
|
|
9052
|
+
onKeyPress: elementBindingHandler('keypress'),
|
|
9053
|
+
onKeyPressCapture: elementBindingHandler('keypress', true),
|
|
9054
|
+
onKeyUp: elementBindingHandler('keyup'),
|
|
9055
|
+
onKeyUpCapture: elementBindingHandler('keyup', true)
|
|
9056
|
+
}
|
|
9057
|
+
};
|
|
9058
|
+
};
|
|
8928
9059
|
|
|
8929
|
-
|
|
8930
|
-
|
|
8931
|
-
|
|
9060
|
+
const [useLabel, LabelContextProvider] = createGenericContext();
|
|
9061
|
+
function LabelProvider(_ref) {
|
|
9062
|
+
let {
|
|
9063
|
+
children
|
|
9064
|
+
} = _ref;
|
|
9065
|
+
const {
|
|
9066
|
+
labels
|
|
9067
|
+
} = useLayout();
|
|
9068
|
+
// console.log('LabelProvider', labels);
|
|
9069
|
+
const labelService = new LabelService(labels);
|
|
9070
|
+
const getLabel = (key, params) => {
|
|
9071
|
+
return labelService.getLabel(key, params);
|
|
9072
|
+
};
|
|
9073
|
+
return /*#__PURE__*/jsxRuntimeExports.jsx(LabelContextProvider, {
|
|
9074
|
+
value: getLabel,
|
|
9075
|
+
children: children
|
|
9076
|
+
});
|
|
8932
9077
|
}
|
|
8933
|
-
|
|
8934
|
-
|
|
9078
|
+
class LabelService {
|
|
9079
|
+
constructor(labels) {
|
|
9080
|
+
this.labels = labels;
|
|
9081
|
+
this.dictionary = Object.fromEntries(labels.map(l => [l.id, l.text]));
|
|
9082
|
+
}
|
|
9083
|
+
getLabel(key, params) {
|
|
9084
|
+
return parseLabel(this.dictionary, key, params);
|
|
9085
|
+
}
|
|
9086
|
+
}
|
|
9087
|
+
function parseLabel(dictionary, key, params) {
|
|
9088
|
+
const label = dictionary[key] != null ? dictionary[key] : key;
|
|
9089
|
+
if (params) {
|
|
9090
|
+
return parseParams(label, params);
|
|
9091
|
+
}
|
|
9092
|
+
return label;
|
|
9093
|
+
}
|
|
9094
|
+
function parseParams(label, params) {
|
|
9095
|
+
const TEMPLATE_REGEXP = /@(\w+)/g;
|
|
9096
|
+
return label.replace(TEMPLATE_REGEXP, (text, key) => {
|
|
9097
|
+
const replacer = params[key];
|
|
9098
|
+
return typeof replacer !== 'undefined' ? String(replacer) : text;
|
|
9099
|
+
});
|
|
8935
9100
|
}
|
|
8936
9101
|
|
|
8937
|
-
|
|
8938
|
-
|
|
8939
|
-
|
|
8940
|
-
|
|
8941
|
-
|
|
8942
|
-
|
|
8943
|
-
|
|
8944
|
-
|
|
8945
|
-
|
|
8946
|
-
|
|
8947
|
-
|
|
8948
|
-
|
|
8949
|
-
|
|
8950
|
-
|
|
8951
|
-
|
|
8952
|
-
exit: createDefinition(["exit"]),
|
|
8953
|
-
drag: createDefinition(["drag", "dragControls"]),
|
|
8954
|
-
focus: createDefinition(["whileFocus"]),
|
|
8955
|
-
hover: createDefinition(["whileHover", "onHoverStart", "onHoverEnd"]),
|
|
8956
|
-
tap: createDefinition(["whileTap", "onTap", "onTapStart", "onTapCancel"]),
|
|
8957
|
-
pan: createDefinition([
|
|
8958
|
-
"onPan",
|
|
8959
|
-
"onPanStart",
|
|
8960
|
-
"onPanSessionStart",
|
|
8961
|
-
"onPanEnd",
|
|
8962
|
-
]),
|
|
8963
|
-
inView: createDefinition([
|
|
8964
|
-
"whileInView",
|
|
8965
|
-
"onViewportEnter",
|
|
8966
|
-
"onViewportLeave",
|
|
8967
|
-
]),
|
|
8968
|
-
};
|
|
9102
|
+
/*
|
|
9103
|
+
import { useCallback, useEffect, useRef } from 'react';
|
|
9104
|
+
|
|
9105
|
+
export function useMounted(): () => boolean {
|
|
9106
|
+
const ref = useRef<boolean>(false);
|
|
9107
|
+
const get = useCallback(() => ref.current, []);
|
|
9108
|
+
useEffect(() => {
|
|
9109
|
+
ref.current = true;
|
|
9110
|
+
return () => {
|
|
9111
|
+
ref.current = false;
|
|
9112
|
+
};
|
|
9113
|
+
}, []);
|
|
9114
|
+
return get;
|
|
9115
|
+
}
|
|
9116
|
+
*/
|
|
8969
9117
|
|
|
8970
|
-
function
|
|
8971
|
-
|
|
8972
|
-
|
|
8973
|
-
|
|
8974
|
-
|
|
8975
|
-
|
|
8976
|
-
|
|
8977
|
-
|
|
9118
|
+
function useMounted() {
|
|
9119
|
+
const [mounted, setMounted] = reactExports.useState(false);
|
|
9120
|
+
reactExports.useEffect(() => {
|
|
9121
|
+
setMounted(true);
|
|
9122
|
+
}, []); // at init only
|
|
9123
|
+
return mounted;
|
|
9124
|
+
}
|
|
9125
|
+
|
|
9126
|
+
const [usePage, PageContextProvider] = createGenericContext();
|
|
9127
|
+
function PageProvider(_ref) {
|
|
9128
|
+
let {
|
|
9129
|
+
children,
|
|
9130
|
+
page
|
|
9131
|
+
} = _ref;
|
|
9132
|
+
return /*#__PURE__*/jsxRuntimeExports.jsx(PageContextProvider, {
|
|
9133
|
+
value: page,
|
|
9134
|
+
children: children
|
|
9135
|
+
});
|
|
9136
|
+
}
|
|
9137
|
+
|
|
9138
|
+
const namespace = 'theme';
|
|
9139
|
+
function usePortal(name, getContainer) {
|
|
9140
|
+
if (name === void 0) {
|
|
9141
|
+
name = getUID();
|
|
9142
|
+
}
|
|
9143
|
+
const {
|
|
9144
|
+
isBrowser
|
|
9145
|
+
} = useSSR();
|
|
9146
|
+
const id = `${namespace}-${name}`;
|
|
9147
|
+
const [portal, setPortal] = reactExports.useState(isBrowser ? createElementWithId(id) : null);
|
|
9148
|
+
reactExports.useEffect(() => {
|
|
9149
|
+
const container = typeof getContainer === 'function' ? getContainer() : null;
|
|
9150
|
+
const parentElement = container || document.body;
|
|
9151
|
+
const element = parentElement.querySelector(`#${id}`) || createElementWithId(id);
|
|
9152
|
+
if (!element.parentElement) {
|
|
9153
|
+
parentElement.appendChild(element);
|
|
8978
9154
|
}
|
|
9155
|
+
setPortal(element);
|
|
9156
|
+
}, []);
|
|
9157
|
+
return portal;
|
|
9158
|
+
}
|
|
9159
|
+
function createElementWithId(id) {
|
|
9160
|
+
const element = document.createElement('div');
|
|
9161
|
+
element.setAttribute('id', id);
|
|
9162
|
+
return element;
|
|
9163
|
+
}
|
|
9164
|
+
function getUID() {
|
|
9165
|
+
return Math.random().toString(32).slice(2, 10);
|
|
8979
9166
|
}
|
|
8980
9167
|
|
|
8981
9168
|
/**
|
|
8982
|
-
*
|
|
8983
|
-
*
|
|
8984
|
-
* Even if `useMemo` is provided an empty array as its final argument, it doesn't offer
|
|
8985
|
-
* a guarantee that it won't re-run for performance reasons later on. By using `useConstant`
|
|
8986
|
-
* you can ensure that initialisers don't execute twice or more.
|
|
9169
|
+
* @public
|
|
8987
9170
|
*/
|
|
8988
|
-
|
|
8989
|
-
|
|
8990
|
-
|
|
8991
|
-
|
|
8992
|
-
|
|
8993
|
-
|
|
9171
|
+
const MotionConfigContext = reactExports.createContext({
|
|
9172
|
+
transformPagePoint: (p) => p,
|
|
9173
|
+
isStatic: false,
|
|
9174
|
+
reducedMotion: "never",
|
|
9175
|
+
});
|
|
9176
|
+
|
|
9177
|
+
const MotionContext = reactExports.createContext({});
|
|
9178
|
+
function useVisualElementContext() {
|
|
9179
|
+
return reactExports.useContext(MotionContext).visualElement;
|
|
8994
9180
|
}
|
|
8995
9181
|
|
|
8996
9182
|
/**
|
|
8997
|
-
*
|
|
8998
|
-
* persist through server requests. If we need instanced states we
|
|
8999
|
-
* could lazy-init via root.
|
|
9183
|
+
* @public
|
|
9000
9184
|
*/
|
|
9001
|
-
const
|
|
9185
|
+
const PresenceContext = reactExports.createContext(null);
|
|
9186
|
+
|
|
9187
|
+
const isBrowser = typeof document !== "undefined";
|
|
9188
|
+
|
|
9189
|
+
const useIsomorphicLayoutEffect$1 = isBrowser ? reactExports.useLayoutEffect : reactExports.useEffect;
|
|
9190
|
+
|
|
9191
|
+
const LazyContext = reactExports.createContext({ strict: false });
|
|
9192
|
+
|
|
9193
|
+
function useVisualElement(Component, visualState, props, createVisualElement) {
|
|
9194
|
+
const parent = useVisualElementContext();
|
|
9195
|
+
const lazyContext = reactExports.useContext(LazyContext);
|
|
9196
|
+
const presenceContext = reactExports.useContext(PresenceContext);
|
|
9197
|
+
const reducedMotionConfig = reactExports.useContext(MotionConfigContext).reducedMotion;
|
|
9198
|
+
const visualElementRef = reactExports.useRef();
|
|
9002
9199
|
/**
|
|
9003
|
-
*
|
|
9004
|
-
|
|
9200
|
+
* If we haven't preloaded a renderer, check to see if we have one lazy-loaded
|
|
9201
|
+
*/
|
|
9202
|
+
createVisualElement = createVisualElement || lazyContext.renderer;
|
|
9203
|
+
if (!visualElementRef.current && createVisualElement) {
|
|
9204
|
+
visualElementRef.current = createVisualElement(Component, {
|
|
9205
|
+
visualState,
|
|
9206
|
+
parent,
|
|
9207
|
+
props,
|
|
9208
|
+
presenceId: presenceContext ? presenceContext.id : undefined,
|
|
9209
|
+
blockInitialAnimation: presenceContext
|
|
9210
|
+
? presenceContext.initial === false
|
|
9211
|
+
: false,
|
|
9212
|
+
reducedMotionConfig,
|
|
9213
|
+
});
|
|
9214
|
+
}
|
|
9215
|
+
const visualElement = visualElementRef.current;
|
|
9216
|
+
useIsomorphicLayoutEffect$1(() => {
|
|
9217
|
+
visualElement && visualElement.render();
|
|
9218
|
+
});
|
|
9219
|
+
/**
|
|
9220
|
+
* If we have optimised appear animations to handoff from, trigger animateChanges
|
|
9221
|
+
* from a synchronous useLayoutEffect to ensure there's no flash of incorrectly
|
|
9222
|
+
* styled component in the event of a hydration error.
|
|
9223
|
+
*/
|
|
9224
|
+
useIsomorphicLayoutEffect$1(() => {
|
|
9225
|
+
if (visualElement && visualElement.animationState) {
|
|
9226
|
+
visualElement.animationState.animateChanges();
|
|
9227
|
+
}
|
|
9228
|
+
});
|
|
9229
|
+
useIsomorphicLayoutEffect$1(() => () => visualElement && visualElement.notify("Unmount"), []);
|
|
9230
|
+
return visualElement;
|
|
9231
|
+
}
|
|
9232
|
+
|
|
9233
|
+
function isRefObject(ref) {
|
|
9234
|
+
return (typeof ref === "object" &&
|
|
9235
|
+
Object.prototype.hasOwnProperty.call(ref, "current"));
|
|
9236
|
+
}
|
|
9237
|
+
|
|
9238
|
+
/**
|
|
9239
|
+
* Creates a ref function that, when called, hydrates the provided
|
|
9240
|
+
* external ref and VisualElement.
|
|
9241
|
+
*/
|
|
9242
|
+
function useMotionRef(visualState, visualElement, externalRef) {
|
|
9243
|
+
return reactExports.useCallback((instance) => {
|
|
9244
|
+
instance && visualState.mount && visualState.mount(instance);
|
|
9245
|
+
if (visualElement) {
|
|
9246
|
+
instance
|
|
9247
|
+
? visualElement.mount(instance)
|
|
9248
|
+
: visualElement.unmount();
|
|
9249
|
+
}
|
|
9250
|
+
if (externalRef) {
|
|
9251
|
+
if (typeof externalRef === "function") {
|
|
9252
|
+
externalRef(instance);
|
|
9253
|
+
}
|
|
9254
|
+
else if (isRefObject(externalRef)) {
|
|
9255
|
+
externalRef.current = instance;
|
|
9256
|
+
}
|
|
9257
|
+
}
|
|
9258
|
+
},
|
|
9259
|
+
/**
|
|
9260
|
+
* Only pass a new ref callback to React if we've received a visual element
|
|
9261
|
+
* factory. Otherwise we'll be mounting/remounting every time externalRef
|
|
9262
|
+
* or other dependencies change.
|
|
9263
|
+
*/
|
|
9264
|
+
[visualElement]);
|
|
9265
|
+
}
|
|
9266
|
+
|
|
9267
|
+
/**
|
|
9268
|
+
* Decides if the supplied variable is variant label
|
|
9269
|
+
*/
|
|
9270
|
+
function isVariantLabel(v) {
|
|
9271
|
+
return typeof v === "string" || Array.isArray(v);
|
|
9272
|
+
}
|
|
9273
|
+
|
|
9274
|
+
function isAnimationControls(v) {
|
|
9275
|
+
return typeof v === "object" && typeof v.start === "function";
|
|
9276
|
+
}
|
|
9277
|
+
|
|
9278
|
+
const variantProps$1 = [
|
|
9279
|
+
"initial",
|
|
9280
|
+
"animate",
|
|
9281
|
+
"exit",
|
|
9282
|
+
"whileHover",
|
|
9283
|
+
"whileDrag",
|
|
9284
|
+
"whileTap",
|
|
9285
|
+
"whileFocus",
|
|
9286
|
+
"whileInView",
|
|
9287
|
+
];
|
|
9288
|
+
function isControllingVariants(props) {
|
|
9289
|
+
return (isAnimationControls(props.animate) ||
|
|
9290
|
+
variantProps$1.some((name) => isVariantLabel(props[name])));
|
|
9291
|
+
}
|
|
9292
|
+
function isVariantNode(props) {
|
|
9293
|
+
return Boolean(isControllingVariants(props) || props.variants);
|
|
9294
|
+
}
|
|
9295
|
+
|
|
9296
|
+
function getCurrentTreeVariants(props, context) {
|
|
9297
|
+
if (isControllingVariants(props)) {
|
|
9298
|
+
const { initial, animate } = props;
|
|
9299
|
+
return {
|
|
9300
|
+
initial: initial === false || isVariantLabel(initial)
|
|
9301
|
+
? initial
|
|
9302
|
+
: undefined,
|
|
9303
|
+
animate: isVariantLabel(animate) ? animate : undefined,
|
|
9304
|
+
};
|
|
9305
|
+
}
|
|
9306
|
+
return props.inherit !== false ? context : {};
|
|
9307
|
+
}
|
|
9308
|
+
|
|
9309
|
+
function useCreateMotionContext(props) {
|
|
9310
|
+
const { initial, animate } = getCurrentTreeVariants(props, reactExports.useContext(MotionContext));
|
|
9311
|
+
return reactExports.useMemo(() => ({ initial, animate }), [variantLabelsAsDependency(initial), variantLabelsAsDependency(animate)]);
|
|
9312
|
+
}
|
|
9313
|
+
function variantLabelsAsDependency(prop) {
|
|
9314
|
+
return Array.isArray(prop) ? prop.join(" ") : prop;
|
|
9315
|
+
}
|
|
9316
|
+
|
|
9317
|
+
const createDefinition = (propNames) => ({
|
|
9318
|
+
isEnabled: (props) => propNames.some((name) => !!props[name]),
|
|
9319
|
+
});
|
|
9320
|
+
const featureDefinitions = {
|
|
9321
|
+
measureLayout: createDefinition(["layout", "layoutId", "drag"]),
|
|
9322
|
+
animation: createDefinition([
|
|
9323
|
+
"animate",
|
|
9324
|
+
"exit",
|
|
9325
|
+
"variants",
|
|
9326
|
+
"whileHover",
|
|
9327
|
+
"whileTap",
|
|
9328
|
+
"whileFocus",
|
|
9329
|
+
"whileDrag",
|
|
9330
|
+
"whileInView",
|
|
9331
|
+
]),
|
|
9332
|
+
exit: createDefinition(["exit"]),
|
|
9333
|
+
drag: createDefinition(["drag", "dragControls"]),
|
|
9334
|
+
focus: createDefinition(["whileFocus"]),
|
|
9335
|
+
hover: createDefinition(["whileHover", "onHoverStart", "onHoverEnd"]),
|
|
9336
|
+
tap: createDefinition(["whileTap", "onTap", "onTapStart", "onTapCancel"]),
|
|
9337
|
+
pan: createDefinition([
|
|
9338
|
+
"onPan",
|
|
9339
|
+
"onPanStart",
|
|
9340
|
+
"onPanSessionStart",
|
|
9341
|
+
"onPanEnd",
|
|
9342
|
+
]),
|
|
9343
|
+
inView: createDefinition([
|
|
9344
|
+
"whileInView",
|
|
9345
|
+
"onViewportEnter",
|
|
9346
|
+
"onViewportLeave",
|
|
9347
|
+
]),
|
|
9348
|
+
};
|
|
9349
|
+
|
|
9350
|
+
function loadFeatures(features) {
|
|
9351
|
+
for (const key in features) {
|
|
9352
|
+
if (key === "projectionNodeConstructor") {
|
|
9353
|
+
featureDefinitions.projectionNodeConstructor = features[key];
|
|
9354
|
+
}
|
|
9355
|
+
else {
|
|
9356
|
+
featureDefinitions[key].Component = features[key];
|
|
9357
|
+
}
|
|
9358
|
+
}
|
|
9359
|
+
}
|
|
9360
|
+
|
|
9361
|
+
/**
|
|
9362
|
+
* Creates a constant value over the lifecycle of a component.
|
|
9363
|
+
*
|
|
9364
|
+
* Even if `useMemo` is provided an empty array as its final argument, it doesn't offer
|
|
9365
|
+
* a guarantee that it won't re-run for performance reasons later on. By using `useConstant`
|
|
9366
|
+
* you can ensure that initialisers don't execute twice or more.
|
|
9367
|
+
*/
|
|
9368
|
+
function useConstant(init) {
|
|
9369
|
+
const ref = reactExports.useRef(null);
|
|
9370
|
+
if (ref.current === null) {
|
|
9371
|
+
ref.current = init();
|
|
9372
|
+
}
|
|
9373
|
+
return ref.current;
|
|
9374
|
+
}
|
|
9375
|
+
|
|
9376
|
+
/**
|
|
9377
|
+
* This should only ever be modified on the client otherwise it'll
|
|
9378
|
+
* persist through server requests. If we need instanced states we
|
|
9379
|
+
* could lazy-init via root.
|
|
9380
|
+
*/
|
|
9381
|
+
const globalProjectionState = {
|
|
9382
|
+
/**
|
|
9383
|
+
* Global flag as to whether the tree has animated since the last time
|
|
9384
|
+
* we resized the window
|
|
9005
9385
|
*/
|
|
9006
9386
|
hasAnimatedSinceResize: true,
|
|
9007
9387
|
/**
|
|
@@ -17389,374 +17769,44 @@
|
|
|
17389
17769
|
// with any `exit` prop they might have defined.
|
|
17390
17770
|
exiting.forEach((key) => {
|
|
17391
17771
|
// If this component is actually entering again, early return
|
|
17392
|
-
if (targetKeys.indexOf(key) !== -1)
|
|
17393
|
-
return;
|
|
17394
|
-
const child = allChildren.get(key);
|
|
17395
|
-
if (!child)
|
|
17396
|
-
return;
|
|
17397
|
-
const insertionIndex = presentKeys.indexOf(key);
|
|
17398
|
-
const onExit = () => {
|
|
17399
|
-
allChildren.delete(key);
|
|
17400
|
-
exiting.delete(key);
|
|
17401
|
-
// Remove this child from the present children
|
|
17402
|
-
const removeIndex = presentChildren.current.findIndex((presentChild) => presentChild.key === key);
|
|
17403
|
-
presentChildren.current.splice(removeIndex, 1);
|
|
17404
|
-
// Defer re-rendering until all exiting children have indeed left
|
|
17405
|
-
if (!exiting.size) {
|
|
17406
|
-
presentChildren.current = filteredChildren;
|
|
17407
|
-
if (isMounted.current === false)
|
|
17408
|
-
return;
|
|
17409
|
-
forceRender();
|
|
17410
|
-
onExitComplete && onExitComplete();
|
|
17411
|
-
}
|
|
17412
|
-
};
|
|
17413
|
-
childrenToRender.splice(insertionIndex, 0, reactExports.createElement(PresenceChild, { key: getChildKey(child), isPresent: false, onExitComplete: onExit, custom: custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));
|
|
17414
|
-
});
|
|
17415
|
-
// Add `MotionContext` even to children that don't need it to ensure we're rendering
|
|
17416
|
-
// the same tree between renders
|
|
17417
|
-
childrenToRender = childrenToRender.map((child) => {
|
|
17418
|
-
const key = child.key;
|
|
17419
|
-
return exiting.has(key) ? (child) : (reactExports.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));
|
|
17420
|
-
});
|
|
17421
|
-
if (env !== "production" &&
|
|
17422
|
-
mode === "wait" &&
|
|
17423
|
-
childrenToRender.length > 1) {
|
|
17424
|
-
console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to "wait". This will lead to odd visual behaviour.`);
|
|
17425
|
-
}
|
|
17426
|
-
return (reactExports.createElement(reactExports.Fragment, null, exiting.size
|
|
17427
|
-
? childrenToRender
|
|
17428
|
-
: childrenToRender.map((child) => reactExports.cloneElement(child))));
|
|
17429
|
-
};
|
|
17430
|
-
|
|
17431
|
-
function createJSONStorage(getStorage, options) {
|
|
17432
|
-
let storage;
|
|
17433
|
-
try {
|
|
17434
|
-
storage = getStorage();
|
|
17435
|
-
} catch (e) {
|
|
17436
|
-
return;
|
|
17437
|
-
}
|
|
17438
|
-
const persistStorage = {
|
|
17439
|
-
getItem: (name) => {
|
|
17440
|
-
var _a;
|
|
17441
|
-
const parse = (str2) => {
|
|
17442
|
-
if (str2 === null) {
|
|
17443
|
-
return null;
|
|
17444
|
-
}
|
|
17445
|
-
return JSON.parse(str2, options == null ? void 0 : options.reviver);
|
|
17446
|
-
};
|
|
17447
|
-
const str = (_a = storage.getItem(name)) != null ? _a : null;
|
|
17448
|
-
if (str instanceof Promise) {
|
|
17449
|
-
return str.then(parse);
|
|
17450
|
-
}
|
|
17451
|
-
return parse(str);
|
|
17452
|
-
},
|
|
17453
|
-
setItem: (name, newValue) => storage.setItem(
|
|
17454
|
-
name,
|
|
17455
|
-
JSON.stringify(newValue, options == null ? void 0 : options.replacer)
|
|
17456
|
-
),
|
|
17457
|
-
removeItem: (name) => storage.removeItem(name)
|
|
17458
|
-
};
|
|
17459
|
-
return persistStorage;
|
|
17460
|
-
}
|
|
17461
|
-
const toThenable = (fn) => (input) => {
|
|
17462
|
-
try {
|
|
17463
|
-
const result = fn(input);
|
|
17464
|
-
if (result instanceof Promise) {
|
|
17465
|
-
return result;
|
|
17466
|
-
}
|
|
17467
|
-
return {
|
|
17468
|
-
then(onFulfilled) {
|
|
17469
|
-
return toThenable(onFulfilled)(result);
|
|
17470
|
-
},
|
|
17471
|
-
catch(_onRejected) {
|
|
17472
|
-
return this;
|
|
17473
|
-
}
|
|
17474
|
-
};
|
|
17475
|
-
} catch (e) {
|
|
17476
|
-
return {
|
|
17477
|
-
then(_onFulfilled) {
|
|
17478
|
-
return this;
|
|
17479
|
-
},
|
|
17480
|
-
catch(onRejected) {
|
|
17481
|
-
return toThenable(onRejected)(e);
|
|
17482
|
-
}
|
|
17483
|
-
};
|
|
17484
|
-
}
|
|
17485
|
-
};
|
|
17486
|
-
const oldImpl = (config, baseOptions) => (set, get, api) => {
|
|
17487
|
-
let options = {
|
|
17488
|
-
getStorage: () => localStorage,
|
|
17489
|
-
serialize: JSON.stringify,
|
|
17490
|
-
deserialize: JSON.parse,
|
|
17491
|
-
partialize: (state) => state,
|
|
17492
|
-
version: 0,
|
|
17493
|
-
merge: (persistedState, currentState) => ({
|
|
17494
|
-
...currentState,
|
|
17495
|
-
...persistedState
|
|
17496
|
-
}),
|
|
17497
|
-
...baseOptions
|
|
17498
|
-
};
|
|
17499
|
-
let hasHydrated = false;
|
|
17500
|
-
const hydrationListeners = /* @__PURE__ */ new Set();
|
|
17501
|
-
const finishHydrationListeners = /* @__PURE__ */ new Set();
|
|
17502
|
-
let storage;
|
|
17503
|
-
try {
|
|
17504
|
-
storage = options.getStorage();
|
|
17505
|
-
} catch (e) {
|
|
17506
|
-
}
|
|
17507
|
-
if (!storage) {
|
|
17508
|
-
return config(
|
|
17509
|
-
(...args) => {
|
|
17510
|
-
console.warn(
|
|
17511
|
-
`[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`
|
|
17512
|
-
);
|
|
17513
|
-
set(...args);
|
|
17514
|
-
},
|
|
17515
|
-
get,
|
|
17516
|
-
api
|
|
17517
|
-
);
|
|
17518
|
-
}
|
|
17519
|
-
const thenableSerialize = toThenable(options.serialize);
|
|
17520
|
-
const setItem = () => {
|
|
17521
|
-
const state = options.partialize({ ...get() });
|
|
17522
|
-
let errorInSync;
|
|
17523
|
-
const thenable = thenableSerialize({ state, version: options.version }).then(
|
|
17524
|
-
(serializedValue) => storage.setItem(options.name, serializedValue)
|
|
17525
|
-
).catch((e) => {
|
|
17526
|
-
errorInSync = e;
|
|
17527
|
-
});
|
|
17528
|
-
if (errorInSync) {
|
|
17529
|
-
throw errorInSync;
|
|
17530
|
-
}
|
|
17531
|
-
return thenable;
|
|
17532
|
-
};
|
|
17533
|
-
const savedSetState = api.setState;
|
|
17534
|
-
api.setState = (state, replace) => {
|
|
17535
|
-
savedSetState(state, replace);
|
|
17536
|
-
void setItem();
|
|
17537
|
-
};
|
|
17538
|
-
const configResult = config(
|
|
17539
|
-
(...args) => {
|
|
17540
|
-
set(...args);
|
|
17541
|
-
void setItem();
|
|
17542
|
-
},
|
|
17543
|
-
get,
|
|
17544
|
-
api
|
|
17545
|
-
);
|
|
17546
|
-
let stateFromStorage;
|
|
17547
|
-
const hydrate = () => {
|
|
17548
|
-
var _a;
|
|
17549
|
-
if (!storage)
|
|
17550
|
-
return;
|
|
17551
|
-
hasHydrated = false;
|
|
17552
|
-
hydrationListeners.forEach((cb) => cb(get()));
|
|
17553
|
-
const postRehydrationCallback = ((_a = options.onRehydrateStorage) == null ? void 0 : _a.call(options, get())) || void 0;
|
|
17554
|
-
return toThenable(storage.getItem.bind(storage))(options.name).then((storageValue) => {
|
|
17555
|
-
if (storageValue) {
|
|
17556
|
-
return options.deserialize(storageValue);
|
|
17557
|
-
}
|
|
17558
|
-
}).then((deserializedStorageValue) => {
|
|
17559
|
-
if (deserializedStorageValue) {
|
|
17560
|
-
if (typeof deserializedStorageValue.version === "number" && deserializedStorageValue.version !== options.version) {
|
|
17561
|
-
if (options.migrate) {
|
|
17562
|
-
return options.migrate(
|
|
17563
|
-
deserializedStorageValue.state,
|
|
17564
|
-
deserializedStorageValue.version
|
|
17565
|
-
);
|
|
17566
|
-
}
|
|
17567
|
-
console.error(
|
|
17568
|
-
`State loaded from storage couldn't be migrated since no migrate function was provided`
|
|
17569
|
-
);
|
|
17570
|
-
} else {
|
|
17571
|
-
return deserializedStorageValue.state;
|
|
17572
|
-
}
|
|
17573
|
-
}
|
|
17574
|
-
}).then((migratedState) => {
|
|
17575
|
-
var _a2;
|
|
17576
|
-
stateFromStorage = options.merge(
|
|
17577
|
-
migratedState,
|
|
17578
|
-
(_a2 = get()) != null ? _a2 : configResult
|
|
17579
|
-
);
|
|
17580
|
-
set(stateFromStorage, true);
|
|
17581
|
-
return setItem();
|
|
17582
|
-
}).then(() => {
|
|
17583
|
-
postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);
|
|
17584
|
-
hasHydrated = true;
|
|
17585
|
-
finishHydrationListeners.forEach((cb) => cb(stateFromStorage));
|
|
17586
|
-
}).catch((e) => {
|
|
17587
|
-
postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);
|
|
17588
|
-
});
|
|
17589
|
-
};
|
|
17590
|
-
api.persist = {
|
|
17591
|
-
setOptions: (newOptions) => {
|
|
17592
|
-
options = {
|
|
17593
|
-
...options,
|
|
17594
|
-
...newOptions
|
|
17595
|
-
};
|
|
17596
|
-
if (newOptions.getStorage) {
|
|
17597
|
-
storage = newOptions.getStorage();
|
|
17598
|
-
}
|
|
17599
|
-
},
|
|
17600
|
-
clearStorage: () => {
|
|
17601
|
-
storage == null ? void 0 : storage.removeItem(options.name);
|
|
17602
|
-
},
|
|
17603
|
-
getOptions: () => options,
|
|
17604
|
-
rehydrate: () => hydrate(),
|
|
17605
|
-
hasHydrated: () => hasHydrated,
|
|
17606
|
-
onHydrate: (cb) => {
|
|
17607
|
-
hydrationListeners.add(cb);
|
|
17608
|
-
return () => {
|
|
17609
|
-
hydrationListeners.delete(cb);
|
|
17610
|
-
};
|
|
17611
|
-
},
|
|
17612
|
-
onFinishHydration: (cb) => {
|
|
17613
|
-
finishHydrationListeners.add(cb);
|
|
17614
|
-
return () => {
|
|
17615
|
-
finishHydrationListeners.delete(cb);
|
|
17616
|
-
};
|
|
17617
|
-
}
|
|
17618
|
-
};
|
|
17619
|
-
hydrate();
|
|
17620
|
-
return stateFromStorage || configResult;
|
|
17621
|
-
};
|
|
17622
|
-
const newImpl = (config, baseOptions) => (set, get, api) => {
|
|
17623
|
-
let options = {
|
|
17624
|
-
storage: createJSONStorage(() => localStorage),
|
|
17625
|
-
partialize: (state) => state,
|
|
17626
|
-
version: 0,
|
|
17627
|
-
merge: (persistedState, currentState) => ({
|
|
17628
|
-
...currentState,
|
|
17629
|
-
...persistedState
|
|
17630
|
-
}),
|
|
17631
|
-
...baseOptions
|
|
17632
|
-
};
|
|
17633
|
-
let hasHydrated = false;
|
|
17634
|
-
const hydrationListeners = /* @__PURE__ */ new Set();
|
|
17635
|
-
const finishHydrationListeners = /* @__PURE__ */ new Set();
|
|
17636
|
-
let storage = options.storage;
|
|
17637
|
-
if (!storage) {
|
|
17638
|
-
return config(
|
|
17639
|
-
(...args) => {
|
|
17640
|
-
console.warn(
|
|
17641
|
-
`[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`
|
|
17642
|
-
);
|
|
17643
|
-
set(...args);
|
|
17644
|
-
},
|
|
17645
|
-
get,
|
|
17646
|
-
api
|
|
17647
|
-
);
|
|
17648
|
-
}
|
|
17649
|
-
const setItem = () => {
|
|
17650
|
-
const state = options.partialize({ ...get() });
|
|
17651
|
-
return storage.setItem(options.name, {
|
|
17652
|
-
state,
|
|
17653
|
-
version: options.version
|
|
17654
|
-
});
|
|
17655
|
-
};
|
|
17656
|
-
const savedSetState = api.setState;
|
|
17657
|
-
api.setState = (state, replace) => {
|
|
17658
|
-
savedSetState(state, replace);
|
|
17659
|
-
void setItem();
|
|
17660
|
-
};
|
|
17661
|
-
const configResult = config(
|
|
17662
|
-
(...args) => {
|
|
17663
|
-
set(...args);
|
|
17664
|
-
void setItem();
|
|
17665
|
-
},
|
|
17666
|
-
get,
|
|
17667
|
-
api
|
|
17668
|
-
);
|
|
17669
|
-
api.getInitialState = () => configResult;
|
|
17670
|
-
let stateFromStorage;
|
|
17671
|
-
const hydrate = () => {
|
|
17672
|
-
var _a, _b;
|
|
17673
|
-
if (!storage)
|
|
17674
|
-
return;
|
|
17675
|
-
hasHydrated = false;
|
|
17676
|
-
hydrationListeners.forEach((cb) => {
|
|
17677
|
-
var _a2;
|
|
17678
|
-
return cb((_a2 = get()) != null ? _a2 : configResult);
|
|
17679
|
-
});
|
|
17680
|
-
const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;
|
|
17681
|
-
return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {
|
|
17682
|
-
if (deserializedStorageValue) {
|
|
17683
|
-
if (typeof deserializedStorageValue.version === "number" && deserializedStorageValue.version !== options.version) {
|
|
17684
|
-
if (options.migrate) {
|
|
17685
|
-
return options.migrate(
|
|
17686
|
-
deserializedStorageValue.state,
|
|
17687
|
-
deserializedStorageValue.version
|
|
17688
|
-
);
|
|
17689
|
-
}
|
|
17690
|
-
console.error(
|
|
17691
|
-
`State loaded from storage couldn't be migrated since no migrate function was provided`
|
|
17692
|
-
);
|
|
17693
|
-
} else {
|
|
17694
|
-
return deserializedStorageValue.state;
|
|
17695
|
-
}
|
|
17696
|
-
}
|
|
17697
|
-
}).then((migratedState) => {
|
|
17698
|
-
var _a2;
|
|
17699
|
-
stateFromStorage = options.merge(
|
|
17700
|
-
migratedState,
|
|
17701
|
-
(_a2 = get()) != null ? _a2 : configResult
|
|
17702
|
-
);
|
|
17703
|
-
set(stateFromStorage, true);
|
|
17704
|
-
return setItem();
|
|
17705
|
-
}).then(() => {
|
|
17706
|
-
postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);
|
|
17707
|
-
stateFromStorage = get();
|
|
17708
|
-
hasHydrated = true;
|
|
17709
|
-
finishHydrationListeners.forEach((cb) => cb(stateFromStorage));
|
|
17710
|
-
}).catch((e) => {
|
|
17711
|
-
postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);
|
|
17712
|
-
});
|
|
17713
|
-
};
|
|
17714
|
-
api.persist = {
|
|
17715
|
-
setOptions: (newOptions) => {
|
|
17716
|
-
options = {
|
|
17717
|
-
...options,
|
|
17718
|
-
...newOptions
|
|
17719
|
-
};
|
|
17720
|
-
if (newOptions.storage) {
|
|
17721
|
-
storage = newOptions.storage;
|
|
17722
|
-
}
|
|
17723
|
-
},
|
|
17724
|
-
clearStorage: () => {
|
|
17725
|
-
storage == null ? void 0 : storage.removeItem(options.name);
|
|
17726
|
-
},
|
|
17727
|
-
getOptions: () => options,
|
|
17728
|
-
rehydrate: () => hydrate(),
|
|
17729
|
-
hasHydrated: () => hasHydrated,
|
|
17730
|
-
onHydrate: (cb) => {
|
|
17731
|
-
hydrationListeners.add(cb);
|
|
17732
|
-
return () => {
|
|
17733
|
-
hydrationListeners.delete(cb);
|
|
17734
|
-
};
|
|
17735
|
-
},
|
|
17736
|
-
onFinishHydration: (cb) => {
|
|
17737
|
-
finishHydrationListeners.add(cb);
|
|
17738
|
-
return () => {
|
|
17739
|
-
finishHydrationListeners.delete(cb);
|
|
17740
|
-
};
|
|
17741
|
-
}
|
|
17742
|
-
};
|
|
17743
|
-
if (!options.skipHydration) {
|
|
17744
|
-
hydrate();
|
|
17745
|
-
}
|
|
17746
|
-
return stateFromStorage || configResult;
|
|
17747
|
-
};
|
|
17748
|
-
const persistImpl = (config, baseOptions) => {
|
|
17749
|
-
if ("getStorage" in baseOptions || "serialize" in baseOptions || "deserialize" in baseOptions) {
|
|
17750
|
-
if ((undefined ? undefined.MODE : void 0) !== "production") {
|
|
17751
|
-
console.warn(
|
|
17752
|
-
"[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead."
|
|
17753
|
-
);
|
|
17772
|
+
if (targetKeys.indexOf(key) !== -1)
|
|
17773
|
+
return;
|
|
17774
|
+
const child = allChildren.get(key);
|
|
17775
|
+
if (!child)
|
|
17776
|
+
return;
|
|
17777
|
+
const insertionIndex = presentKeys.indexOf(key);
|
|
17778
|
+
const onExit = () => {
|
|
17779
|
+
allChildren.delete(key);
|
|
17780
|
+
exiting.delete(key);
|
|
17781
|
+
// Remove this child from the present children
|
|
17782
|
+
const removeIndex = presentChildren.current.findIndex((presentChild) => presentChild.key === key);
|
|
17783
|
+
presentChildren.current.splice(removeIndex, 1);
|
|
17784
|
+
// Defer re-rendering until all exiting children have indeed left
|
|
17785
|
+
if (!exiting.size) {
|
|
17786
|
+
presentChildren.current = filteredChildren;
|
|
17787
|
+
if (isMounted.current === false)
|
|
17788
|
+
return;
|
|
17789
|
+
forceRender();
|
|
17790
|
+
onExitComplete && onExitComplete();
|
|
17791
|
+
}
|
|
17792
|
+
};
|
|
17793
|
+
childrenToRender.splice(insertionIndex, 0, reactExports.createElement(PresenceChild, { key: getChildKey(child), isPresent: false, onExitComplete: onExit, custom: custom, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));
|
|
17794
|
+
});
|
|
17795
|
+
// Add `MotionContext` even to children that don't need it to ensure we're rendering
|
|
17796
|
+
// the same tree between renders
|
|
17797
|
+
childrenToRender = childrenToRender.map((child) => {
|
|
17798
|
+
const key = child.key;
|
|
17799
|
+
return exiting.has(key) ? (child) : (reactExports.createElement(PresenceChild, { key: getChildKey(child), isPresent: true, presenceAffectsLayout: presenceAffectsLayout, mode: mode }, child));
|
|
17800
|
+
});
|
|
17801
|
+
if (env !== "production" &&
|
|
17802
|
+
mode === "wait" &&
|
|
17803
|
+
childrenToRender.length > 1) {
|
|
17804
|
+
console.warn(`You're attempting to animate multiple children within AnimatePresence, but its mode is set to "wait". This will lead to odd visual behaviour.`);
|
|
17754
17805
|
}
|
|
17755
|
-
return
|
|
17756
|
-
|
|
17757
|
-
|
|
17806
|
+
return (reactExports.createElement(reactExports.Fragment, null, exiting.size
|
|
17807
|
+
? childrenToRender
|
|
17808
|
+
: childrenToRender.map((child) => reactExports.cloneElement(child))));
|
|
17758
17809
|
};
|
|
17759
|
-
const persist = persistImpl;
|
|
17760
17810
|
|
|
17761
17811
|
var font = {
|
|
17762
17812
|
primary: "Aeonik, Arial, Helvetica, sans-serif",
|
|
@@ -22063,90 +22113,6 @@ ${Object.entries(vars).map(_ref2 => {
|
|
|
22063
22113
|
}
|
|
22064
22114
|
}
|
|
22065
22115
|
}
|
|
22066
|
-
class ElevenlabsTextToSpeech {
|
|
22067
|
-
chunks_ = [];
|
|
22068
|
-
lang = 'it';
|
|
22069
|
-
speaking = false;
|
|
22070
|
-
get hasSupport() {
|
|
22071
|
-
return true;
|
|
22072
|
-
}
|
|
22073
|
-
constructor(apiKey, voiceId) {
|
|
22074
|
-
this.apiKey = apiKey;
|
|
22075
|
-
this.voiceId = voiceId;
|
|
22076
|
-
}
|
|
22077
|
-
speak(text) {
|
|
22078
|
-
// console.log('ElevenlabsTextToSpeech.speak', text, this.enabled, this.hasSupport);
|
|
22079
|
-
|
|
22080
|
-
if (!this.apiKey) {
|
|
22081
|
-
console.error('ElevenlabsTextToSpeech.error: missing apiKey!');
|
|
22082
|
-
return;
|
|
22083
|
-
}
|
|
22084
|
-
if (!this.voiceId) {
|
|
22085
|
-
console.error('ElevenlabsTextToSpeech.error: missing voiceId!');
|
|
22086
|
-
return;
|
|
22087
|
-
}
|
|
22088
|
-
if (this.speaking) {
|
|
22089
|
-
// console.warn('speak already speaking');
|
|
22090
|
-
this.chunks_.push(text);
|
|
22091
|
-
return;
|
|
22092
|
-
}
|
|
22093
|
-
this.speaking = true;
|
|
22094
|
-
const ctx = new AudioContext();
|
|
22095
|
-
const options = {
|
|
22096
|
-
method: 'POST',
|
|
22097
|
-
headers: {
|
|
22098
|
-
'xi-api-key': this.apiKey,
|
|
22099
|
-
'Content-Type': 'application/json'
|
|
22100
|
-
},
|
|
22101
|
-
body: JSON.stringify({
|
|
22102
|
-
voice_settings: {
|
|
22103
|
-
stability: 1,
|
|
22104
|
-
similarity_boost: 1
|
|
22105
|
-
},
|
|
22106
|
-
text: text,
|
|
22107
|
-
model_id: 'eleven_multilingual_v2'
|
|
22108
|
-
})
|
|
22109
|
-
};
|
|
22110
|
-
fetch(`https://api.elevenlabs.io/v1/text-to-speech/${this.voiceId}?output_format=mp3_22050_32`, options).then(data => data.arrayBuffer()).then(arrayBuffer => ctx.decodeAudioData(arrayBuffer)).then(audioBuffer => {
|
|
22111
|
-
return new Promise((resolve, reject) => {
|
|
22112
|
-
const audioSource = this.audioSource_ = ctx.createBufferSource();
|
|
22113
|
-
audioSource.buffer = audioBuffer;
|
|
22114
|
-
audioSource.connect(ctx.destination);
|
|
22115
|
-
audioSource.start(ctx.currentTime);
|
|
22116
|
-
audioSource.addEventListener('ended', () => {
|
|
22117
|
-
this.audioSource_ = undefined;
|
|
22118
|
-
resolve(audioSource);
|
|
22119
|
-
});
|
|
22120
|
-
audioSource.addEventListener('error', error => {
|
|
22121
|
-
this.audioSource_ = undefined;
|
|
22122
|
-
reject(error);
|
|
22123
|
-
});
|
|
22124
|
-
});
|
|
22125
|
-
}).then(audioSource => {
|
|
22126
|
-
console.log('ElevenlabsTextToSpeech.speak.success', audioSource);
|
|
22127
|
-
}).catch(error => {
|
|
22128
|
-
console.error('ElevenlabsTextToSpeech.speak.error', error);
|
|
22129
|
-
}).finally(() => {
|
|
22130
|
-
this.speaking = false;
|
|
22131
|
-
if (this.chunks_.length > 0) {
|
|
22132
|
-
const text = this.chunks_.shift();
|
|
22133
|
-
if (text) {
|
|
22134
|
-
this.speak(text);
|
|
22135
|
-
}
|
|
22136
|
-
}
|
|
22137
|
-
});
|
|
22138
|
-
}
|
|
22139
|
-
cancel() {
|
|
22140
|
-
if (this.speaking) {
|
|
22141
|
-
// cancel
|
|
22142
|
-
if (this.audioSource_) {
|
|
22143
|
-
this.audioSource_.stop();
|
|
22144
|
-
this.audioSource_ = undefined;
|
|
22145
|
-
}
|
|
22146
|
-
this.speaking = false;
|
|
22147
|
-
}
|
|
22148
|
-
}
|
|
22149
|
-
}
|
|
22150
22116
|
class DefaultTextToSpeech {
|
|
22151
22117
|
chunks_ = [];
|
|
22152
22118
|
lang = 'it';
|
|
@@ -22252,6 +22218,7 @@ ${Object.entries(vars).map(_ref2 => {
|
|
|
22252
22218
|
synthesis.speak(utterance);
|
|
22253
22219
|
}
|
|
22254
22220
|
cancel() {
|
|
22221
|
+
this.chunks_ = [];
|
|
22255
22222
|
if (!this.hasSupport) {
|
|
22256
22223
|
return;
|
|
22257
22224
|
}
|
|
@@ -22271,6 +22238,90 @@ ${Object.entries(vars).map(_ref2 => {
|
|
|
22271
22238
|
console.log('DefaultTextToSpeech', ...rest);
|
|
22272
22239
|
}
|
|
22273
22240
|
}
|
|
22241
|
+
class ElevenlabsTextToSpeech {
|
|
22242
|
+
chunks_ = [];
|
|
22243
|
+
lang = 'it';
|
|
22244
|
+
speaking = false;
|
|
22245
|
+
get hasSupport() {
|
|
22246
|
+
return true;
|
|
22247
|
+
}
|
|
22248
|
+
constructor(apiKey, voiceId) {
|
|
22249
|
+
this.apiKey = apiKey;
|
|
22250
|
+
this.voiceId = voiceId;
|
|
22251
|
+
}
|
|
22252
|
+
speak(text) {
|
|
22253
|
+
// console.log('ElevenlabsTextToSpeech.speak', text, this.enabled, this.hasSupport);
|
|
22254
|
+
|
|
22255
|
+
if (!this.apiKey) {
|
|
22256
|
+
console.error('ElevenlabsTextToSpeech.error: missing apiKey!');
|
|
22257
|
+
return;
|
|
22258
|
+
}
|
|
22259
|
+
if (!this.voiceId) {
|
|
22260
|
+
console.error('ElevenlabsTextToSpeech.error: missing voiceId!');
|
|
22261
|
+
return;
|
|
22262
|
+
}
|
|
22263
|
+
if (this.speaking) {
|
|
22264
|
+
// console.warn('speak already speaking');
|
|
22265
|
+
this.chunks_.push(text);
|
|
22266
|
+
return;
|
|
22267
|
+
}
|
|
22268
|
+
this.speaking = true;
|
|
22269
|
+
const ctx = new AudioContext();
|
|
22270
|
+
const options = {
|
|
22271
|
+
method: 'POST',
|
|
22272
|
+
headers: {
|
|
22273
|
+
'xi-api-key': this.apiKey,
|
|
22274
|
+
'Content-Type': 'application/json'
|
|
22275
|
+
},
|
|
22276
|
+
body: JSON.stringify({
|
|
22277
|
+
voice_settings: {
|
|
22278
|
+
stability: 1,
|
|
22279
|
+
similarity_boost: 1
|
|
22280
|
+
},
|
|
22281
|
+
text: text,
|
|
22282
|
+
model_id: 'eleven_multilingual_v2'
|
|
22283
|
+
})
|
|
22284
|
+
};
|
|
22285
|
+
fetch(`https://api.elevenlabs.io/v1/text-to-speech/${this.voiceId}?output_format=mp3_22050_32`, options).then(data => data.arrayBuffer()).then(arrayBuffer => ctx.decodeAudioData(arrayBuffer)).then(audioBuffer => {
|
|
22286
|
+
return new Promise((resolve, reject) => {
|
|
22287
|
+
const audioSource = this.audioSource_ = ctx.createBufferSource();
|
|
22288
|
+
audioSource.buffer = audioBuffer;
|
|
22289
|
+
audioSource.connect(ctx.destination);
|
|
22290
|
+
audioSource.start(ctx.currentTime);
|
|
22291
|
+
audioSource.addEventListener('ended', () => {
|
|
22292
|
+
this.audioSource_ = undefined;
|
|
22293
|
+
resolve(audioSource);
|
|
22294
|
+
});
|
|
22295
|
+
audioSource.addEventListener('error', error => {
|
|
22296
|
+
this.audioSource_ = undefined;
|
|
22297
|
+
reject(error);
|
|
22298
|
+
});
|
|
22299
|
+
});
|
|
22300
|
+
}).then(audioSource => {
|
|
22301
|
+
console.log('ElevenlabsTextToSpeech.speak.success', audioSource);
|
|
22302
|
+
}).catch(error => {
|
|
22303
|
+
console.error('ElevenlabsTextToSpeech.speak.error', error);
|
|
22304
|
+
}).finally(() => {
|
|
22305
|
+
this.speaking = false;
|
|
22306
|
+
if (this.chunks_.length > 0) {
|
|
22307
|
+
const text = this.chunks_.shift();
|
|
22308
|
+
if (text) {
|
|
22309
|
+
this.speak(text);
|
|
22310
|
+
}
|
|
22311
|
+
}
|
|
22312
|
+
});
|
|
22313
|
+
}
|
|
22314
|
+
cancel() {
|
|
22315
|
+
this.chunks_ = [];
|
|
22316
|
+
if (this.speaking) {
|
|
22317
|
+
if (this.audioSource_) {
|
|
22318
|
+
this.audioSource_.stop();
|
|
22319
|
+
this.audioSource_ = undefined;
|
|
22320
|
+
}
|
|
22321
|
+
this.speaking = false;
|
|
22322
|
+
}
|
|
22323
|
+
}
|
|
22324
|
+
}
|
|
22274
22325
|
class DefaultSpeechToText {
|
|
22275
22326
|
lang = 'it';
|
|
22276
22327
|
enabled = false;
|
|
@@ -23861,48 +23912,6 @@ void main(void) {
|
|
|
23861
23912
|
return /*#__PURE__*/jsxRuntimeExports.jsx(jsxRuntimeExports.Fragment, {});
|
|
23862
23913
|
};
|
|
23863
23914
|
|
|
23864
|
-
function useFocusTrap(ref, options) {
|
|
23865
|
-
if (options === void 0) {
|
|
23866
|
-
options = {};
|
|
23867
|
-
}
|
|
23868
|
-
const selectors = options.selectors || 'a[href]:not([disabled]), button:not([disabled]), textarea:not([disabled]), input[type="text"]:not([disabled]), input[type="radio"]:not([disabled]), input[type="checkbox"]:not([disabled]), select:not([disabled])';
|
|
23869
|
-
const [state, setState] = reactExports.useState(!options.disabled);
|
|
23870
|
-
useIsomorphicLayoutEffect$2(() => {
|
|
23871
|
-
const element = ref.current;
|
|
23872
|
-
if (element) {
|
|
23873
|
-
const elements = element.querySelectorAll(selectors);
|
|
23874
|
-
const first = elements[0];
|
|
23875
|
-
const last = elements[elements.length - 1];
|
|
23876
|
-
const onKeyDown = event => {
|
|
23877
|
-
// console.log(event.key, event.code, event.keyCode);
|
|
23878
|
-
const isTabPressed = event.key === 'Tab';
|
|
23879
|
-
if (!isTabPressed) {
|
|
23880
|
-
return;
|
|
23881
|
-
}
|
|
23882
|
-
if (event.shiftKey) {
|
|
23883
|
-
// shift + tab
|
|
23884
|
-
if (document.activeElement === first) {
|
|
23885
|
-
last.focus();
|
|
23886
|
-
event.preventDefault();
|
|
23887
|
-
}
|
|
23888
|
-
} else {
|
|
23889
|
-
// tab
|
|
23890
|
-
if (document.activeElement === last) {
|
|
23891
|
-
first.focus();
|
|
23892
|
-
event.preventDefault();
|
|
23893
|
-
}
|
|
23894
|
-
}
|
|
23895
|
-
};
|
|
23896
|
-
element.addEventListener('keydown', onKeyDown);
|
|
23897
|
-
return () => {
|
|
23898
|
-
element.removeEventListener('keydown', onKeyDown);
|
|
23899
|
-
};
|
|
23900
|
-
}
|
|
23901
|
-
return () => {};
|
|
23902
|
-
}, [ref.current]);
|
|
23903
|
-
return [state, setState];
|
|
23904
|
-
}
|
|
23905
|
-
|
|
23906
23915
|
function Canvas() {
|
|
23907
23916
|
const ref = reactExports.useRef(null);
|
|
23908
23917
|
useCanvasOffscreen(ref);
|
|
@@ -23921,7 +23930,8 @@ void main(void) {
|
|
|
23921
23930
|
className: "icon-llm-arrow-corner-right-up",
|
|
23922
23931
|
width: "1em",
|
|
23923
23932
|
height: "1em",
|
|
23924
|
-
"data-icon": "",
|
|
23933
|
+
"data-icon": "icon-llm-arrow-corner-right-up",
|
|
23934
|
+
"aria-hidden": "true",
|
|
23925
23935
|
...props,
|
|
23926
23936
|
ref: ref,
|
|
23927
23937
|
children: /*#__PURE__*/jsxRuntimeExports.jsx("path", {
|
|
@@ -23942,7 +23952,8 @@ void main(void) {
|
|
|
23942
23952
|
className: "icon-llm-arrow-left",
|
|
23943
23953
|
width: "1em",
|
|
23944
23954
|
height: "1em",
|
|
23945
|
-
"data-icon": "",
|
|
23955
|
+
"data-icon": "icon-llm-arrow-left",
|
|
23956
|
+
"aria-hidden": "true",
|
|
23946
23957
|
...props,
|
|
23947
23958
|
ref: ref,
|
|
23948
23959
|
children: /*#__PURE__*/jsxRuntimeExports.jsx("path", {
|
|
@@ -23963,7 +23974,8 @@ void main(void) {
|
|
|
23963
23974
|
className: "icon-llm-arrow-right",
|
|
23964
23975
|
width: "1em",
|
|
23965
23976
|
height: "1em",
|
|
23966
|
-
"data-icon": "",
|
|
23977
|
+
"data-icon": "icon-llm-arrow-right",
|
|
23978
|
+
"aria-hidden": "true",
|
|
23967
23979
|
...props,
|
|
23968
23980
|
ref: ref,
|
|
23969
23981
|
children: /*#__PURE__*/jsxRuntimeExports.jsx("path", {
|
|
@@ -23983,7 +23995,8 @@ void main(void) {
|
|
|
23983
23995
|
className: "icon-llm-chevron-right-circle",
|
|
23984
23996
|
width: "1em",
|
|
23985
23997
|
height: "1em",
|
|
23986
|
-
"data-icon": "",
|
|
23998
|
+
"data-icon": "icon-llm-chevron-right-circle",
|
|
23999
|
+
"aria-hidden": "true",
|
|
23987
24000
|
...props,
|
|
23988
24001
|
ref: ref,
|
|
23989
24002
|
children: /*#__PURE__*/jsxRuntimeExports.jsx("path", {
|
|
@@ -24001,7 +24014,8 @@ void main(void) {
|
|
|
24001
24014
|
className: "icon-llm-info-circle",
|
|
24002
24015
|
width: "1em",
|
|
24003
24016
|
height: "1em",
|
|
24004
|
-
"data-icon": "",
|
|
24017
|
+
"data-icon": "icon-llm-info-circle",
|
|
24018
|
+
"aria-hidden": "true",
|
|
24005
24019
|
...props,
|
|
24006
24020
|
ref: ref,
|
|
24007
24021
|
children: /*#__PURE__*/jsxRuntimeExports.jsx("path", {
|
|
@@ -24026,7 +24040,8 @@ void main(void) {
|
|
|
24026
24040
|
strokeLinecap: "round",
|
|
24027
24041
|
strokeLinejoin: "round",
|
|
24028
24042
|
className: "icon-llm-maximize",
|
|
24029
|
-
"data-icon": "",
|
|
24043
|
+
"data-icon": "icon-llm-maximize",
|
|
24044
|
+
"aria-hidden": "true",
|
|
24030
24045
|
...props,
|
|
24031
24046
|
ref: ref,
|
|
24032
24047
|
children: [/*#__PURE__*/jsxRuntimeExports.jsx("polyline", {
|
|
@@ -24056,7 +24071,8 @@ void main(void) {
|
|
|
24056
24071
|
className: "icon-llm-microphone",
|
|
24057
24072
|
width: "1em",
|
|
24058
24073
|
height: "1em",
|
|
24059
|
-
"data-icon": "",
|
|
24074
|
+
"data-icon": "icon-llm-microphone",
|
|
24075
|
+
"aria-hidden": "true",
|
|
24060
24076
|
...props,
|
|
24061
24077
|
ref: ref,
|
|
24062
24078
|
children: /*#__PURE__*/jsxRuntimeExports.jsx("path", {
|
|
@@ -24081,7 +24097,8 @@ void main(void) {
|
|
|
24081
24097
|
strokeLinecap: "round",
|
|
24082
24098
|
strokeLinejoin: "round",
|
|
24083
24099
|
className: "icon-llm-minimize",
|
|
24084
|
-
"data-icon": "",
|
|
24100
|
+
"data-icon": "icon-llm-minimize",
|
|
24101
|
+
"aria-hidden": "true",
|
|
24085
24102
|
...props,
|
|
24086
24103
|
ref: ref,
|
|
24087
24104
|
children: [/*#__PURE__*/jsxRuntimeExports.jsx("polyline", {
|
|
@@ -24111,7 +24128,8 @@ void main(void) {
|
|
|
24111
24128
|
className: "icon-llm-pin",
|
|
24112
24129
|
width: "1em",
|
|
24113
24130
|
height: "1em",
|
|
24114
|
-
"data-icon": "",
|
|
24131
|
+
"data-icon": "icon-llm-pin",
|
|
24132
|
+
"aria-hidden": "true",
|
|
24115
24133
|
...props,
|
|
24116
24134
|
ref: ref,
|
|
24117
24135
|
children: /*#__PURE__*/jsxRuntimeExports.jsx("path", {
|
|
@@ -24131,7 +24149,8 @@ void main(void) {
|
|
|
24131
24149
|
className: "icon-llm-play",
|
|
24132
24150
|
width: "1em",
|
|
24133
24151
|
height: "1em",
|
|
24134
|
-
"data-icon": "",
|
|
24152
|
+
"data-icon": "icon-llm-play",
|
|
24153
|
+
"aria-hidden": "true",
|
|
24135
24154
|
...props,
|
|
24136
24155
|
ref: ref,
|
|
24137
24156
|
children: /*#__PURE__*/jsxRuntimeExports.jsx("path", {
|
|
@@ -24150,7 +24169,8 @@ void main(void) {
|
|
|
24150
24169
|
className: "icon-llm-send",
|
|
24151
24170
|
width: "1em",
|
|
24152
24171
|
height: "1em",
|
|
24153
|
-
"data-icon": "",
|
|
24172
|
+
"data-icon": "icon-llm-send",
|
|
24173
|
+
"aria-hidden": "true",
|
|
24154
24174
|
...props,
|
|
24155
24175
|
ref: ref,
|
|
24156
24176
|
children: /*#__PURE__*/jsxRuntimeExports.jsx("path", {
|
|
@@ -24170,7 +24190,8 @@ void main(void) {
|
|
|
24170
24190
|
className: "icon-llm-stop",
|
|
24171
24191
|
width: "1em",
|
|
24172
24192
|
height: "1em",
|
|
24173
|
-
"data-icon": "",
|
|
24193
|
+
"data-icon": "icon-llm-stop",
|
|
24194
|
+
"aria-hidden": "true",
|
|
24174
24195
|
...props,
|
|
24175
24196
|
ref: ref,
|
|
24176
24197
|
children: /*#__PURE__*/jsxRuntimeExports.jsx("path", {
|
|
@@ -24188,7 +24209,8 @@ void main(void) {
|
|
|
24188
24209
|
viewBox: "0 0 18 18",
|
|
24189
24210
|
xmlns: "http://www.w3.org/2000/svg",
|
|
24190
24211
|
className: "icon-llm-timetable",
|
|
24191
|
-
"data-icon": "",
|
|
24212
|
+
"data-icon": "icon-llm-timetable",
|
|
24213
|
+
"aria-hidden": "true",
|
|
24192
24214
|
...props,
|
|
24193
24215
|
ref: ref,
|
|
24194
24216
|
children: /*#__PURE__*/jsxRuntimeExports.jsx("path", {
|
|
@@ -24211,7 +24233,8 @@ void main(void) {
|
|
|
24211
24233
|
strokeLinecap: "round",
|
|
24212
24234
|
strokeLinejoin: "round",
|
|
24213
24235
|
className: "icon-llm-volume-x",
|
|
24214
|
-
"data-icon": "",
|
|
24236
|
+
"data-icon": "icon-llm-volume-x",
|
|
24237
|
+
"aria-hidden": "true",
|
|
24215
24238
|
...props,
|
|
24216
24239
|
ref: ref,
|
|
24217
24240
|
children: [/*#__PURE__*/jsxRuntimeExports.jsx("polygon", {
|
|
@@ -24243,7 +24266,8 @@ void main(void) {
|
|
|
24243
24266
|
strokeLinecap: "round",
|
|
24244
24267
|
strokeLinejoin: "round",
|
|
24245
24268
|
className: "icon-llm-volume",
|
|
24246
|
-
"data-icon": "",
|
|
24269
|
+
"data-icon": "icon-llm-volume",
|
|
24270
|
+
"aria-hidden": "true",
|
|
24247
24271
|
...props,
|
|
24248
24272
|
ref: ref,
|
|
24249
24273
|
children: [/*#__PURE__*/jsxRuntimeExports.jsx("polygon", {
|
|
@@ -24269,7 +24293,8 @@ void main(void) {
|
|
|
24269
24293
|
strokeLinecap: "round",
|
|
24270
24294
|
strokeLinejoin: "round",
|
|
24271
24295
|
className: "icon-websolute",
|
|
24272
|
-
"data-icon": "",
|
|
24296
|
+
"data-icon": "icon-websolute",
|
|
24297
|
+
"aria-hidden": "true",
|
|
24273
24298
|
...props,
|
|
24274
24299
|
ref: ref,
|
|
24275
24300
|
children: /*#__PURE__*/jsxRuntimeExports.jsx("path", {
|
|
@@ -30105,16 +30130,6 @@ void main(void) {
|
|
|
30105
30130
|
});
|
|
30106
30131
|
};
|
|
30107
30132
|
|
|
30108
|
-
const useAutosizeTextArea = (textAreaRef, value) => {
|
|
30109
|
-
reactExports.useEffect(() => {
|
|
30110
|
-
if (textAreaRef) {
|
|
30111
|
-
textAreaRef.style.height = '0px';
|
|
30112
|
-
textAreaRef.style.height = textAreaRef.scrollHeight + 1 + 'px';
|
|
30113
|
-
}
|
|
30114
|
-
}, [textAreaRef, value]);
|
|
30115
|
-
};
|
|
30116
|
-
var useAutosizeTextArea$1 = useAutosizeTextArea;
|
|
30117
|
-
|
|
30118
30133
|
const Suggestions = () => {
|
|
30119
30134
|
useWindowSize();
|
|
30120
30135
|
const app = useLlm(state => state.app);
|
|
@@ -30173,7 +30188,7 @@ void main(void) {
|
|
|
30173
30188
|
const {
|
|
30174
30189
|
send
|
|
30175
30190
|
} = useLlmView(state => state.actions);
|
|
30176
|
-
useAutosizeTextArea
|
|
30191
|
+
useAutosizeTextArea(textArea.current, prompt);
|
|
30177
30192
|
const onChange = event => {
|
|
30178
30193
|
const prompt = event.target?.value;
|
|
30179
30194
|
setPrompt(prompt);
|
|
@@ -34113,7 +34128,8 @@ void main(void) {
|
|
|
34113
34128
|
};
|
|
34114
34129
|
}
|
|
34115
34130
|
}, [locale, market]);
|
|
34116
|
-
const
|
|
34131
|
+
const defaultEndpoint = typeof props.test !== 'undefined' ? 'https://bom-sample-basic-web-git-bom-llm-actarian.vercel.app' : 'https://platform.websolute.ai';
|
|
34132
|
+
const endpoint = props.endpoint || defaultEndpoint;
|
|
34117
34133
|
const layout = {
|
|
34118
34134
|
labels: getLabels(data.locale),
|
|
34119
34135
|
locale: data.locale,
|