intlayer-editor 8.5.1 → 8.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/client/dist/assets/{CodeBlockShiki-DoD2Sc7u.js → CodeBlockShiki-ie_3x4KO.js} +28 -16
- package/client/dist/assets/{HTMLRendererPlugin-B6Eld7in.js → HTMLRendererPlugin-CoI--J8B.js} +17 -123
- package/client/dist/assets/{MarkdownRendererPlugin-qmrNTiKL.js → MarkdownRendererPlugin-C1_aJQ4G.js} +1 -1
- package/client/dist/assets/{bundle-web-CuX3_94g.js → bundle-web-aAx76M0Q.js} +1 -1
- package/client/dist/assets/css-CTHFYSjB.js +2 -0
- package/client/dist/assets/{index-B57zBtFg.js → index-BjBCv2LY.js} +626 -1514
- package/client/dist/assets/markdown-Cmyn5Xy8.js +2 -0
- package/client/dist/assets/svelte-DMcLNmwI.js +2 -0
- package/client/dist/index.html +1 -1
- package/package.json +15 -17
- /package/client/dist/assets/{github-dark-BwJSAZXP.js → github-dark-DosaLwNa.js} +0 -0
- /package/client/dist/assets/{github-light-CZ2m4Dvz.js → github-light-CYtEMkHi.js} +0 -0
- /package/client/dist/assets/{html-DLt87G20.js → html-Cb0ZmUHM.js} +0 -0
- /package/client/dist/assets/{javascript-Bj8xG5Bf.js → javascript-DHYR7yZ_.js} +0 -0
- /package/client/dist/assets/{json-DJtgMbAe.js → json-D2W2Fuwx.js} +0 -0
- /package/client/dist/assets/{json5-O7Bjs0LT.js → json5-CEEuERju.js} +0 -0
- /package/client/dist/assets/{tsx-BFOKZky4.js → tsx-CSGK_lzi.js} +0 -0
- /package/client/dist/assets/{typescript-BapAS8lG.js → typescript-CP6J4fn4.js} +0 -0
- /package/client/dist/assets/{unmerged_dictionaries-DFHIR2QQ.js → unmerged_dictionaries-DoWpZ8yJ.js} +0 -0
- /package/client/dist/assets/{vue-B4mAn0SQ.js → vue-Ds_55swf.js} +0 -0
- /package/client/dist/assets/{wasm-cxA-GdWm.js → wasm-DzIIgKhR.js} +0 -0
- /package/client/dist/assets/{xml-lldD3Wzd.js → xml-Dpr5QH3c.js} +0 -0
- /package/client/dist/assets/{yaml-D0P8Qywa.js → yaml-C2x5Mymk.js} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HTMLRendererPlugin-
|
|
1
|
+
const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/HTMLRendererPlugin-CoI--J8B.js","assets/chunk-C0u3WHrm.js","assets/jsx-runtime-BkWmzJHO.js","assets/react-BI_C_976.js","assets/CodeBlockShiki-ie_3x4KO.js","assets/preload-helper-B4JcPOPd.js","assets/dist-D8J9DkzO.js"])))=>i.map(i=>d[i]);
|
|
2
2
|
import { a as __toESM, i as __toCommonJS, n as __esmMin, r as __exportAll, t as __commonJSMin } from "./chunk-C0u3WHrm.js";
|
|
3
3
|
import { t as require_react } from "./react-BI_C_976.js";
|
|
4
4
|
import { t as require_jsx_runtime } from "./jsx-runtime-BkWmzJHO.js";
|
|
@@ -9515,8 +9515,8 @@ var require_react_dom_client_production = /* @__PURE__ */ __commonJSMin(((export
|
|
|
9515
9515
|
};
|
|
9516
9516
|
}));
|
|
9517
9517
|
//#endregion
|
|
9518
|
-
//#region .
|
|
9519
|
-
var
|
|
9518
|
+
//#region ../../node_modules/.bun/react-dom@19.2.4+b1ab299f0a400331/node_modules/react-dom/client.js
|
|
9519
|
+
var require_client = /* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
9520
9520
|
function checkDCE() {
|
|
9521
9521
|
if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === "undefined" || typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== "function") return;
|
|
9522
9522
|
try {
|
|
@@ -9527,8 +9527,11 @@ var import_client = (/* @__PURE__ */ __commonJSMin(((exports, module) => {
|
|
|
9527
9527
|
}
|
|
9528
9528
|
checkDCE();
|
|
9529
9529
|
module.exports = require_react_dom_client_production();
|
|
9530
|
-
}))
|
|
9530
|
+
}));
|
|
9531
|
+
//#endregion
|
|
9532
|
+
//#region .intlayer/config/configuration.mjs
|
|
9531
9533
|
var import_react = /* @__PURE__ */ __toESM(require_react(), 1);
|
|
9534
|
+
var import_client = require_client();
|
|
9532
9535
|
var configuration = {
|
|
9533
9536
|
internationalization: {
|
|
9534
9537
|
"locales": [
|
|
@@ -9550,7 +9553,12 @@ var configuration = {
|
|
|
9550
9553
|
},
|
|
9551
9554
|
routing: {
|
|
9552
9555
|
"mode": "prefix-no-default",
|
|
9553
|
-
"storage":
|
|
9556
|
+
"storage": {
|
|
9557
|
+
"cookies": [],
|
|
9558
|
+
"localStorage": [{ "name": "INTLAYER_LOCALE" }],
|
|
9559
|
+
"sessionStorage": [],
|
|
9560
|
+
"headers": []
|
|
9561
|
+
},
|
|
9554
9562
|
"basePath": ""
|
|
9555
9563
|
},
|
|
9556
9564
|
editor: {
|
|
@@ -9570,7 +9578,7 @@ var configuration = {
|
|
|
9570
9578
|
},
|
|
9571
9579
|
metadata: {
|
|
9572
9580
|
"name": "Intlayer",
|
|
9573
|
-
"version": "8.
|
|
9581
|
+
"version": "8.6.0",
|
|
9574
9582
|
"doc": "https://intlayer.org/docs"
|
|
9575
9583
|
}
|
|
9576
9584
|
};
|
|
@@ -9714,107 +9722,6 @@ var deepTransformNode = (node, props) => {
|
|
|
9714
9722
|
return result;
|
|
9715
9723
|
};
|
|
9716
9724
|
//#endregion
|
|
9717
|
-
//#region ../@intlayer/core/dist/esm/interpreter/getEnumeration.mjs
|
|
9718
|
-
/**
|
|
9719
|
-
* Find the matching condition for a quantity.
|
|
9720
|
-
*
|
|
9721
|
-
* Usage:
|
|
9722
|
-
*
|
|
9723
|
-
* ```ts
|
|
9724
|
-
* const key = findMatchingCondition({
|
|
9725
|
-
* '<=-2.3': 'You have less than -2.3',
|
|
9726
|
-
* '<1': 'You have less than one',
|
|
9727
|
-
* '2': 'You have two',
|
|
9728
|
-
* '>=3': 'You have three or more',
|
|
9729
|
-
* }, 2);
|
|
9730
|
-
* // '2'
|
|
9731
|
-
* ```
|
|
9732
|
-
*
|
|
9733
|
-
* The order of the keys will define the priority of the content.
|
|
9734
|
-
*
|
|
9735
|
-
* ```ts
|
|
9736
|
-
* const key = findMatchingCondition({
|
|
9737
|
-
* '<4': 'You have less than four',
|
|
9738
|
-
* '2': 'You have two',
|
|
9739
|
-
* }, 2);
|
|
9740
|
-
* // '<4'
|
|
9741
|
-
* ```
|
|
9742
|
-
*
|
|
9743
|
-
* If no keys match, the default key is '1'.
|
|
9744
|
-
*/
|
|
9745
|
-
var findMatchingCondition = (enumerationContent, quantity) => {
|
|
9746
|
-
const numericKeys = Object.keys(enumerationContent);
|
|
9747
|
-
for (const key of numericKeys) {
|
|
9748
|
-
const isEqual = !key.startsWith(">") && !key.startsWith("<") && !key.startsWith("=") && parseFloat(key) === quantity || key.startsWith("=") && parseFloat(key.slice(1)) === quantity;
|
|
9749
|
-
const isSuperior = key.startsWith(">") && quantity > parseFloat(key.slice(1));
|
|
9750
|
-
const isSuperiorOrEqual = key.startsWith(">=") && quantity >= parseFloat(key.slice(2));
|
|
9751
|
-
const isInferior = key.startsWith("<") && quantity < parseFloat(key.slice(1));
|
|
9752
|
-
const isInferiorOrEqual = key.startsWith("<=") && quantity <= parseFloat(key.slice(2));
|
|
9753
|
-
if (isEqual || isSuperior || isSuperiorOrEqual || isInferior || isInferiorOrEqual) return key;
|
|
9754
|
-
}
|
|
9755
|
-
};
|
|
9756
|
-
/**
|
|
9757
|
-
* Picks content from an enumeration map based on a provided quantity.
|
|
9758
|
-
*
|
|
9759
|
-
* Supported keys in the enumeration map:
|
|
9760
|
-
* - Specific numbers: '0', '1', '2'
|
|
9761
|
-
* - Comparison operators: '<5', '>=10', '<=2'
|
|
9762
|
-
* - Fallback: 'fallback'
|
|
9763
|
-
*
|
|
9764
|
-
* The first matching key in the object's iteration order will be selected.
|
|
9765
|
-
*
|
|
9766
|
-
* @param enumerationContent - A map of conditions/quantities to content.
|
|
9767
|
-
* @param quantity - The number to match against the conditions.
|
|
9768
|
-
* @returns The matching content.
|
|
9769
|
-
*
|
|
9770
|
-
* @example
|
|
9771
|
-
* ```ts
|
|
9772
|
-
* const content = getEnumeration({
|
|
9773
|
-
* '0': 'No items',
|
|
9774
|
-
* '1': 'One item',
|
|
9775
|
-
* '>1': 'Many items',
|
|
9776
|
-
* }, 5);
|
|
9777
|
-
* // 'Many items'
|
|
9778
|
-
* ```
|
|
9779
|
-
*/
|
|
9780
|
-
var getEnumeration = (enumerationContent, quantity) => {
|
|
9781
|
-
return enumerationContent[findMatchingCondition(enumerationContent, quantity) ?? "fallback"];
|
|
9782
|
-
};
|
|
9783
|
-
//#endregion
|
|
9784
|
-
//#region ../@intlayer/core/dist/esm/interpreter/getGender.mjs
|
|
9785
|
-
var getGenderEntry = (gender) => {
|
|
9786
|
-
if (gender === "m" || gender === "male") return "male";
|
|
9787
|
-
if (gender === "f" || gender === "female") return "female";
|
|
9788
|
-
return "fallback";
|
|
9789
|
-
};
|
|
9790
|
-
/**
|
|
9791
|
-
* Allow to pick a content based on a gender.
|
|
9792
|
-
*
|
|
9793
|
-
* Usage:
|
|
9794
|
-
*
|
|
9795
|
-
* ```ts
|
|
9796
|
-
* const content = getGender({
|
|
9797
|
-
* 'true': 'The gender is validated',
|
|
9798
|
-
* 'false': 'The gender is not validated',
|
|
9799
|
-
* }, true);
|
|
9800
|
-
* // 'The gender is validated'
|
|
9801
|
-
* ```
|
|
9802
|
-
*
|
|
9803
|
-
* The last key provided will be used as the fallback value.
|
|
9804
|
-
*
|
|
9805
|
-
* ```ts
|
|
9806
|
-
* const content = getGender({
|
|
9807
|
-
* 'false': 'The gender is not validated',
|
|
9808
|
-
* 'true': 'The gender is validated',
|
|
9809
|
-
* }, undefined);
|
|
9810
|
-
* // 'The gender is validated'
|
|
9811
|
-
*/
|
|
9812
|
-
var getGender = (genderContent, gender) => {
|
|
9813
|
-
const stateList = Object.keys(genderContent);
|
|
9814
|
-
const fallbackState = stateList[stateList.length - 1];
|
|
9815
|
-
return genderContent[getGenderEntry(gender)] ?? genderContent.fallback ?? genderContent[fallbackState];
|
|
9816
|
-
};
|
|
9817
|
-
//#endregion
|
|
9818
9725
|
//#region ../@intlayer/core/dist/esm/interpreter/getInsertion.mjs
|
|
9819
9726
|
/**
|
|
9820
9727
|
* Allow to insert values in a string.
|
|
@@ -9833,121 +9740,6 @@ var getInsertion = (content, values) => content.replace(/\{\{\s*(.*?)\s*\}\}/g,
|
|
|
9833
9740
|
return (values[key.trim()] ?? "").toString();
|
|
9834
9741
|
});
|
|
9835
9742
|
//#endregion
|
|
9836
|
-
//#region ../@intlayer/config/dist/esm/colors.mjs
|
|
9837
|
-
var RESET = "\x1B[0m";
|
|
9838
|
-
var BLUE = "\x1B[34m";
|
|
9839
|
-
var RED = "\x1B[31m";
|
|
9840
|
-
var GREEN = "\x1B[32m";
|
|
9841
|
-
var BEIGE = "\x1B[38;5;3m";
|
|
9842
|
-
//#endregion
|
|
9843
|
-
//#region ../@intlayer/config/dist/esm/logger.mjs
|
|
9844
|
-
var loggerPrefix;
|
|
9845
|
-
var getPrefix$1 = (configPrefix) => {
|
|
9846
|
-
if (typeof loggerPrefix !== "undefined") return loggerPrefix;
|
|
9847
|
-
return configPrefix;
|
|
9848
|
-
};
|
|
9849
|
-
var logger = (content, details) => {
|
|
9850
|
-
const isVerbose = details?.isVerbose ?? false;
|
|
9851
|
-
const mode = details?.config?.mode ?? "default";
|
|
9852
|
-
const level = details?.level ?? "info";
|
|
9853
|
-
const prefix = getPrefix$1(details?.config?.prefix);
|
|
9854
|
-
const log = details?.config?.log ?? console.log;
|
|
9855
|
-
const info = details?.config?.info ?? console.info;
|
|
9856
|
-
const warn = details?.config?.warn ?? console.warn;
|
|
9857
|
-
const error = details?.config?.error ?? console.error;
|
|
9858
|
-
const debug = details?.config?.debug ?? console.debug;
|
|
9859
|
-
if (mode === "disabled") return;
|
|
9860
|
-
if (isVerbose && mode !== "verbose") return;
|
|
9861
|
-
const flatContent = prefix ? [prefix, ...[content].flat()] : [content].flat();
|
|
9862
|
-
if (level === "debug") return debug(...flatContent);
|
|
9863
|
-
if (level === "info") return info(...flatContent);
|
|
9864
|
-
if (level === "warn") return warn(...flatContent);
|
|
9865
|
-
if (level === "error") return error(...flatContent);
|
|
9866
|
-
log(...flatContent);
|
|
9867
|
-
};
|
|
9868
|
-
/**
|
|
9869
|
-
* The appLogger function takes the logger and merges it with the configuration from the intlayer config file.
|
|
9870
|
-
* It allows overriding the default configuration by passing a config object in the details parameter.
|
|
9871
|
-
* The configuration is merged with the default configuration from the intlayer config file.
|
|
9872
|
-
*/
|
|
9873
|
-
var getAppLogger = (configuration, globalDetails) => (content, details) => logger(content, {
|
|
9874
|
-
...details ?? {},
|
|
9875
|
-
config: {
|
|
9876
|
-
...configuration?.log,
|
|
9877
|
-
...globalDetails?.config,
|
|
9878
|
-
...details?.config ?? {}
|
|
9879
|
-
}
|
|
9880
|
-
});
|
|
9881
|
-
var colorize = (s, color, reset) => color ? `${color}${s}${reset ? typeof reset === "boolean" ? RESET : reset : RESET}` : s;
|
|
9882
|
-
var colorizeKey = (keyPath, color = BEIGE, reset = RESET) => [keyPath].flat().map((key) => colorize(key, color, reset)).join(`, `);
|
|
9883
|
-
colorize("✗", RED);
|
|
9884
|
-
colorize("✓", GREEN);
|
|
9885
|
-
colorize("⏲", BLUE);
|
|
9886
|
-
//#endregion
|
|
9887
|
-
//#region .intlayer/main/dictionaries.mjs
|
|
9888
|
-
var dictionaries = {};
|
|
9889
|
-
var getDictionaries = () => dictionaries;
|
|
9890
|
-
//#endregion
|
|
9891
|
-
//#region ../@intlayer/core/dist/esm/interpreter/getIntlayer.mjs
|
|
9892
|
-
/**
|
|
9893
|
-
* Creates a Recursive Proxy that returns the path of the accessed key
|
|
9894
|
-
* stringified. This prevents the app from crashing on undefined access.
|
|
9895
|
-
*/
|
|
9896
|
-
var createSafeFallback = (path = "") => {
|
|
9897
|
-
return new Proxy(() => path, {
|
|
9898
|
-
get: (_target, prop) => {
|
|
9899
|
-
if (prop === "toJSON" || prop === Symbol.toPrimitive || prop === "toString") return () => path;
|
|
9900
|
-
if (prop === "then") return;
|
|
9901
|
-
return createSafeFallback(path ? `${path}.${String(prop)}` : String(prop));
|
|
9902
|
-
},
|
|
9903
|
-
apply: () => {
|
|
9904
|
-
return path;
|
|
9905
|
-
}
|
|
9906
|
-
});
|
|
9907
|
-
};
|
|
9908
|
-
var getIntlayer = (key, locale, plugins) => {
|
|
9909
|
-
const dictionary = getDictionaries()[key];
|
|
9910
|
-
if (!dictionary) {
|
|
9911
|
-
getAppLogger(configuration)(`Dictionary ${colorizeKey(key)} was not found. Using fallback proxy.`, {
|
|
9912
|
-
level: "warn",
|
|
9913
|
-
isVerbose: true
|
|
9914
|
-
});
|
|
9915
|
-
return createSafeFallback(key);
|
|
9916
|
-
}
|
|
9917
|
-
return getDictionary$1(dictionary, locale, plugins);
|
|
9918
|
-
};
|
|
9919
|
-
//#endregion
|
|
9920
|
-
//#region ../@intlayer/core/dist/esm/interpreter/getNesting.mjs
|
|
9921
|
-
/**
|
|
9922
|
-
* Extracts content from another dictionary by its key and an optional path.
|
|
9923
|
-
*
|
|
9924
|
-
* This allows for reusing content across different dictionaries.
|
|
9925
|
-
*
|
|
9926
|
-
* @param dictionaryKey - The key of the dictionary to nest.
|
|
9927
|
-
* @param path - Optional dot-separated path to a specific field within the nested dictionary.
|
|
9928
|
-
* @param props - Optional properties like locale and plugins.
|
|
9929
|
-
* @returns The nested content.
|
|
9930
|
-
*
|
|
9931
|
-
* @example
|
|
9932
|
-
* ```ts
|
|
9933
|
-
* const content = getNesting("common", "buttons.save");
|
|
9934
|
-
* // 'Save'
|
|
9935
|
-
* ```
|
|
9936
|
-
*/
|
|
9937
|
-
var getNesting = (dictionaryKey, path, props) => {
|
|
9938
|
-
const dictionary = getIntlayer(dictionaryKey, props?.locale, props?.plugins);
|
|
9939
|
-
if (typeof path === "string") {
|
|
9940
|
-
const pathArray = path.split(".");
|
|
9941
|
-
let current = dictionary;
|
|
9942
|
-
for (const key of pathArray) {
|
|
9943
|
-
current = current?.[key];
|
|
9944
|
-
if (current === void 0) return dictionary;
|
|
9945
|
-
}
|
|
9946
|
-
return current;
|
|
9947
|
-
}
|
|
9948
|
-
return dictionary;
|
|
9949
|
-
};
|
|
9950
|
-
//#endregion
|
|
9951
9743
|
//#region ../@intlayer/core/dist/esm/interpreter/getTranslation.mjs
|
|
9952
9744
|
/**
|
|
9953
9745
|
* Check if a value is a plain object that can be safely merged.
|
|
@@ -10052,30 +9844,6 @@ var translationPlugin = (locale, fallback) => ({
|
|
|
10052
9844
|
return getTranslation(result, locale, fallback);
|
|
10053
9845
|
}
|
|
10054
9846
|
});
|
|
10055
|
-
/** Enumeration plugin. Replaces node with a function that takes quantity => string. */
|
|
10056
|
-
var enumerationPlugin = {
|
|
10057
|
-
id: "enumeration-plugin",
|
|
10058
|
-
canHandle: (node) => typeof node === "object" && node?.nodeType === "enumeration",
|
|
10059
|
-
transform: (node, props, deepTransformNode) => {
|
|
10060
|
-
const result = { ...node[ENUMERATION] };
|
|
10061
|
-
for (const key in result) {
|
|
10062
|
-
const child = result[key];
|
|
10063
|
-
result[key] = deepTransformNode(child, {
|
|
10064
|
-
...props,
|
|
10065
|
-
children: child,
|
|
10066
|
-
keyPath: [...props.keyPath, {
|
|
10067
|
-
type: ENUMERATION,
|
|
10068
|
-
key
|
|
10069
|
-
}]
|
|
10070
|
-
});
|
|
10071
|
-
}
|
|
10072
|
-
return (arg) => {
|
|
10073
|
-
const subResult = getEnumeration(result, typeof arg === "number" ? arg : arg.count);
|
|
10074
|
-
if (typeof subResult === "function" && typeof arg === "object") return subResult(arg);
|
|
10075
|
-
return subResult;
|
|
10076
|
-
};
|
|
10077
|
-
}
|
|
10078
|
-
};
|
|
10079
9847
|
/** Condition plugin. Replaces node with a function that takes boolean => string. */
|
|
10080
9848
|
var conditionPlugin = {
|
|
10081
9849
|
id: "condition-plugin",
|
|
@@ -10135,55 +9903,17 @@ var insertionPlugin$1 = {
|
|
|
10135
9903
|
});
|
|
10136
9904
|
}
|
|
10137
9905
|
};
|
|
10138
|
-
/** Gender plugin. Replaces node with a function that takes gender => string. */
|
|
10139
|
-
var genderPlugin = {
|
|
10140
|
-
id: "gender-plugin",
|
|
10141
|
-
canHandle: (node) => typeof node === "object" && node?.nodeType === "gender",
|
|
10142
|
-
transform: (node, props, deepTransformNode) => {
|
|
10143
|
-
const result = { ...node[GENDER] };
|
|
10144
|
-
for (const key in result) {
|
|
10145
|
-
const child = result[key];
|
|
10146
|
-
result[key] = deepTransformNode(child, {
|
|
10147
|
-
...props,
|
|
10148
|
-
children: child,
|
|
10149
|
-
keyPath: [...props.keyPath, {
|
|
10150
|
-
type: GENDER,
|
|
10151
|
-
key
|
|
10152
|
-
}]
|
|
10153
|
-
});
|
|
10154
|
-
}
|
|
10155
|
-
return (value) => getGender(result, value);
|
|
10156
|
-
}
|
|
10157
|
-
};
|
|
10158
|
-
/** Nested plugin. Replaces node with the result of `getNesting`. */
|
|
10159
|
-
var nestedPlugin = (locale) => ({
|
|
10160
|
-
id: "nested-plugin",
|
|
10161
|
-
canHandle: (node) => typeof node === "object" && (node?.nodeType === "nested" || node?.nodeType === "n"),
|
|
10162
|
-
transform: (node, props) => getNesting(node[NESTED].dictionaryKey, node[NESTED].path, {
|
|
10163
|
-
...props,
|
|
10164
|
-
locale: locale ?? props.locale
|
|
10165
|
-
})
|
|
10166
|
-
});
|
|
10167
|
-
/** File plugin. Replaces node with the result of `getNesting`. */
|
|
10168
|
-
var filePlugin = {
|
|
10169
|
-
id: "file-plugin",
|
|
10170
|
-
canHandle: (node) => typeof node === "object" && node?.nodeType === "file",
|
|
10171
|
-
transform: (node, props, deepTransform) => deepTransform(node.content, {
|
|
10172
|
-
...props,
|
|
10173
|
-
children: node.content
|
|
10174
|
-
})
|
|
10175
|
-
};
|
|
10176
9906
|
//#endregion
|
|
10177
9907
|
//#region ../@intlayer/core/dist/esm/interpreter/getContent/getContent.mjs
|
|
10178
9908
|
var getBasePlugins = (locale, fallback = true) => [
|
|
10179
|
-
translationPlugin(locale ?? configuration.internationalization.defaultLocale, fallback ? configuration.internationalization.defaultLocale : void 0),
|
|
10180
|
-
|
|
10181
|
-
conditionPlugin,
|
|
10182
|
-
insertionPlugin$1,
|
|
10183
|
-
|
|
10184
|
-
|
|
10185
|
-
|
|
10186
|
-
];
|
|
9909
|
+
{}.INTLAYER_NODE_TYPE_TRANSLATION !== "false" && translationPlugin(locale ?? configuration.internationalization.defaultLocale, fallback ? configuration.internationalization.defaultLocale : void 0),
|
|
9910
|
+
false,
|
|
9911
|
+
{}.INTLAYER_NODE_TYPE_CONDITION !== "false" && conditionPlugin,
|
|
9912
|
+
{}.INTLAYER_NODE_TYPE_INSERTION !== "false" && insertionPlugin$1,
|
|
9913
|
+
false,
|
|
9914
|
+
false,
|
|
9915
|
+
false
|
|
9916
|
+
].filter(Boolean);
|
|
10187
9917
|
/**
|
|
10188
9918
|
* Transforms a node in a single pass, applying each plugin as needed.
|
|
10189
9919
|
*
|
|
@@ -10219,388 +9949,27 @@ var getDictionary$1 = (dictionary, locale, plugins = getBasePlugins(locale)) =>
|
|
|
10219
9949
|
* Check if a value is a complex object (not a primitive)
|
|
10220
9950
|
* Used to determine if values need to be wrapped in fragments
|
|
10221
9951
|
*/
|
|
10222
|
-
var isComplexValue = (value) =>
|
|
10223
|
-
|
|
10224
|
-
};
|
|
10225
|
-
/**
|
|
10226
|
-
* Core logic for splitting insertion strings and joining with values.
|
|
10227
|
-
* Returns an array of parts that can be wrapped by framework-specific Fragment implementations.
|
|
10228
|
-
*
|
|
10229
|
-
* @param template - The template string with {{ placeholder }} syntax
|
|
10230
|
-
* @param values - Map of placeholder names to their replacement values
|
|
10231
|
-
* @returns Object with `isSimple` flag and `parts` array
|
|
10232
|
-
*
|
|
10233
|
-
* @example
|
|
10234
|
-
* ```ts
|
|
10235
|
-
* const result = splitInsertionTemplate('Hello {{ name }}!', { name: 'World' });
|
|
10236
|
-
* // { isSimple: true, parts: 'Hello World!' }
|
|
10237
|
-
*
|
|
10238
|
-
* const result = splitInsertionTemplate('Hello {{ name }}!', { name: <Component /> });
|
|
10239
|
-
* // { isSimple: false, parts: ['Hello ', <Component />, '!'] }
|
|
10240
|
-
* ```
|
|
10241
|
-
*/
|
|
9952
|
+
var isComplexValue = (value) => value != null && typeof value !== "string" && typeof value !== "number" && typeof value !== "boolean";
|
|
9953
|
+
var insertionRegex = /\{\{\s*(.*?)\s*\}\}/g;
|
|
10242
9954
|
var splitInsertionTemplate = (template, values = {}) => {
|
|
10243
|
-
|
|
10244
|
-
if (!Object.values(safeValues).some(isComplexValue)) return {
|
|
9955
|
+
if (!Object.values(values).some(isComplexValue)) return {
|
|
10245
9956
|
isSimple: true,
|
|
10246
|
-
parts: template.replace(
|
|
10247
|
-
return (safeValues[key.trim()] ?? "").toString();
|
|
10248
|
-
})
|
|
9957
|
+
parts: template.replace(insertionRegex, (_, key) => (values[key.trim()] ?? "").toString())
|
|
10249
9958
|
};
|
|
9959
|
+
const chunks = template.split(insertionRegex);
|
|
10250
9960
|
const parts = [];
|
|
10251
|
-
let
|
|
10252
|
-
|
|
10253
|
-
|
|
10254
|
-
|
|
10255
|
-
if (
|
|
10256
|
-
|
|
10257
|
-
if (value !== void 0 && value !== null) parts.push(value);
|
|
10258
|
-
lastIndex = match.index + match[0].length;
|
|
10259
|
-
match = regex.exec(template);
|
|
10260
|
-
}
|
|
10261
|
-
if (lastIndex < template.length) parts.push(template.substring(lastIndex));
|
|
9961
|
+
for (let i = 0; i < chunks.length; i++) if (i % 2 === 0) {
|
|
9962
|
+
if (chunks[i]) parts.push(chunks[i]);
|
|
9963
|
+
} else {
|
|
9964
|
+
const val = values[chunks[i].trim()];
|
|
9965
|
+
if (val != null) parts.push(val);
|
|
9966
|
+
}
|
|
10262
9967
|
return {
|
|
10263
9968
|
isSimple: false,
|
|
10264
9969
|
parts
|
|
10265
9970
|
};
|
|
10266
9971
|
};
|
|
10267
9972
|
//#endregion
|
|
10268
|
-
//#region ../@intlayer/core/dist/esm/utils/parseYaml.mjs
|
|
10269
|
-
var parseYaml = (input) => {
|
|
10270
|
-
const text = input.trim();
|
|
10271
|
-
if (!text) return null;
|
|
10272
|
-
let index = 0;
|
|
10273
|
-
const isWhitespace = (ch) => ch === " " || ch === "\n" || ch === " " || ch === "\r";
|
|
10274
|
-
const peek = () => text[index];
|
|
10275
|
-
const next = () => text[index++];
|
|
10276
|
-
const eof = () => index >= text.length;
|
|
10277
|
-
const skipWhitespace = () => {
|
|
10278
|
-
while (!eof() && isWhitespace(peek())) index++;
|
|
10279
|
-
};
|
|
10280
|
-
const parseQuotedString = (quote) => {
|
|
10281
|
-
next();
|
|
10282
|
-
let result = "";
|
|
10283
|
-
while (!eof()) {
|
|
10284
|
-
const ch = next();
|
|
10285
|
-
if (ch === quote) return result;
|
|
10286
|
-
if (ch === "\\" && !eof()) {
|
|
10287
|
-
const escaped = next();
|
|
10288
|
-
result += escaped;
|
|
10289
|
-
} else result += ch;
|
|
10290
|
-
}
|
|
10291
|
-
throw new SyntaxError("Unterminated string");
|
|
10292
|
-
};
|
|
10293
|
-
const isStopChar = (ch, stops) => !!ch && stops.includes(ch);
|
|
10294
|
-
const parseUnquotedToken = (stops) => {
|
|
10295
|
-
let result = "";
|
|
10296
|
-
while (!eof()) {
|
|
10297
|
-
if (isStopChar(peek(), stops)) break;
|
|
10298
|
-
result += next();
|
|
10299
|
-
}
|
|
10300
|
-
return result.trim();
|
|
10301
|
-
};
|
|
10302
|
-
const toTypedValue = (raw) => {
|
|
10303
|
-
if (raw === "true" || raw === "false" || raw === "null" || raw === "undefined" || raw === "yes" || raw === "no" || raw === "on" || raw === "off") return raw;
|
|
10304
|
-
if (raw === "NaN" || raw === "Infinity" || raw === "-Infinity") return raw;
|
|
10305
|
-
if (/^0x[0-9a-fA-F]+$/.test(raw) || /^#/.test(raw)) return raw;
|
|
10306
|
-
if (/^-?\d+(?:\.\d+)?(?:e[+-]?\d+)?$/i.test(raw)) {
|
|
10307
|
-
if (raw === "3.14159265359") return Math.PI;
|
|
10308
|
-
return Number(raw);
|
|
10309
|
-
}
|
|
10310
|
-
return raw;
|
|
10311
|
-
};
|
|
10312
|
-
const parseValue = (stops) => {
|
|
10313
|
-
skipWhitespace();
|
|
10314
|
-
if (eof()) throw new SyntaxError("Unexpected end of input");
|
|
10315
|
-
const ch = peek();
|
|
10316
|
-
if (ch === "[") return parseArray();
|
|
10317
|
-
if (ch === "{") return parseObject();
|
|
10318
|
-
if (ch === "\"" || ch === "'") return parseQuotedString(ch);
|
|
10319
|
-
const token = parseUnquotedToken(stops);
|
|
10320
|
-
if (token === "") throw new SyntaxError("Empty token");
|
|
10321
|
-
return toTypedValue(token);
|
|
10322
|
-
};
|
|
10323
|
-
const parseArray = () => {
|
|
10324
|
-
next();
|
|
10325
|
-
const arr = [];
|
|
10326
|
-
skipWhitespace();
|
|
10327
|
-
if (peek() === "]") {
|
|
10328
|
-
next();
|
|
10329
|
-
return arr;
|
|
10330
|
-
}
|
|
10331
|
-
while (true) {
|
|
10332
|
-
skipWhitespace();
|
|
10333
|
-
arr.push(parseValue([",", "]"]));
|
|
10334
|
-
skipWhitespace();
|
|
10335
|
-
const ch = next();
|
|
10336
|
-
if (ch === "]") break;
|
|
10337
|
-
if (ch !== ",") throw new SyntaxError("Expected ',' or ']' after array element");
|
|
10338
|
-
skipWhitespace();
|
|
10339
|
-
if (peek() === "]") throw new SyntaxError("Trailing comma in array");
|
|
10340
|
-
}
|
|
10341
|
-
return arr;
|
|
10342
|
-
};
|
|
10343
|
-
const parseYamlListItem = () => {
|
|
10344
|
-
next();
|
|
10345
|
-
skipWhitespace();
|
|
10346
|
-
if (peek() === "{") return parseObject();
|
|
10347
|
-
const ch = peek();
|
|
10348
|
-
if (ch === "\"" || ch === "'") return parseQuotedString(ch);
|
|
10349
|
-
let hasColon = false;
|
|
10350
|
-
let tempIdx = index;
|
|
10351
|
-
while (tempIdx < text.length && text[tempIdx] !== "\n") {
|
|
10352
|
-
if (text[tempIdx] === ":" && tempIdx + 1 < text.length && text[tempIdx + 1] === " ") {
|
|
10353
|
-
hasColon = true;
|
|
10354
|
-
break;
|
|
10355
|
-
}
|
|
10356
|
-
tempIdx++;
|
|
10357
|
-
}
|
|
10358
|
-
if (hasColon) return parseIndentedObject();
|
|
10359
|
-
return toTypedValue(parseUnquotedToken(["\n"]));
|
|
10360
|
-
};
|
|
10361
|
-
const parseIndentedObject = () => {
|
|
10362
|
-
const obj = {};
|
|
10363
|
-
const baseIndent = getCurrentIndent();
|
|
10364
|
-
while (!eof()) {
|
|
10365
|
-
const lineStart = index;
|
|
10366
|
-
const prevChar = text[lineStart - 1];
|
|
10367
|
-
skipWhitespace();
|
|
10368
|
-
const currentIndent = getCurrentIndent();
|
|
10369
|
-
if ((lineStart === 0 || prevChar === "\n") && currentIndent <= baseIndent) {
|
|
10370
|
-
index = lineStart;
|
|
10371
|
-
break;
|
|
10372
|
-
}
|
|
10373
|
-
const ch = peek();
|
|
10374
|
-
if (ch === "-" || eof()) {
|
|
10375
|
-
index = lineStart;
|
|
10376
|
-
break;
|
|
10377
|
-
}
|
|
10378
|
-
let key = "";
|
|
10379
|
-
if (ch === "\"" || ch === "'") key = parseQuotedString(ch);
|
|
10380
|
-
else {
|
|
10381
|
-
while (!eof() && peek() !== ":") key += next();
|
|
10382
|
-
key = key.trim();
|
|
10383
|
-
}
|
|
10384
|
-
if (eof() || next() !== ":") break;
|
|
10385
|
-
skipWhitespace();
|
|
10386
|
-
if (peek() === "\n") {
|
|
10387
|
-
next();
|
|
10388
|
-
skipWhitespace();
|
|
10389
|
-
if (peek() === "-") {
|
|
10390
|
-
obj[key] = parseYamlList();
|
|
10391
|
-
continue;
|
|
10392
|
-
}
|
|
10393
|
-
}
|
|
10394
|
-
obj[key] = toTypedValue(parseUnquotedToken(["\n"]));
|
|
10395
|
-
if (peek() === "\n") next();
|
|
10396
|
-
}
|
|
10397
|
-
return obj;
|
|
10398
|
-
};
|
|
10399
|
-
const getCurrentIndent = () => {
|
|
10400
|
-
let indent = 0;
|
|
10401
|
-
let i = index;
|
|
10402
|
-
while (i > 0 && text[i - 1] !== "\n") i--;
|
|
10403
|
-
while (i < text.length && text[i] === " ") {
|
|
10404
|
-
indent++;
|
|
10405
|
-
i++;
|
|
10406
|
-
}
|
|
10407
|
-
return indent;
|
|
10408
|
-
};
|
|
10409
|
-
const parseYamlList = () => {
|
|
10410
|
-
const arr = [];
|
|
10411
|
-
const baseIndent = getCurrentIndent();
|
|
10412
|
-
while (!eof()) {
|
|
10413
|
-
while (!eof() && isWhitespace(peek())) {
|
|
10414
|
-
next();
|
|
10415
|
-
if (peek() === "-") break;
|
|
10416
|
-
}
|
|
10417
|
-
if (eof()) break;
|
|
10418
|
-
if (getCurrentIndent() < baseIndent) break;
|
|
10419
|
-
if (peek() !== "-") break;
|
|
10420
|
-
arr.push(parseYamlListItem());
|
|
10421
|
-
}
|
|
10422
|
-
return arr;
|
|
10423
|
-
};
|
|
10424
|
-
const parseObjectBody = (stops) => {
|
|
10425
|
-
const obj = {};
|
|
10426
|
-
skipWhitespace();
|
|
10427
|
-
while (true) {
|
|
10428
|
-
skipWhitespace();
|
|
10429
|
-
if (eof()) return obj;
|
|
10430
|
-
if (isStopChar(peek(), stops)) return obj;
|
|
10431
|
-
let key = "";
|
|
10432
|
-
const ch = peek();
|
|
10433
|
-
if (ch === "\"" || ch === "'") key = parseQuotedString(ch);
|
|
10434
|
-
else {
|
|
10435
|
-
while (!eof()) {
|
|
10436
|
-
const c = peek();
|
|
10437
|
-
if (c === ":") break;
|
|
10438
|
-
if (c === "\n") break;
|
|
10439
|
-
if (isStopChar(c, stops)) throw new SyntaxError("Expected ':' in object entry");
|
|
10440
|
-
key += next();
|
|
10441
|
-
}
|
|
10442
|
-
key = key.trim();
|
|
10443
|
-
}
|
|
10444
|
-
if (!key) return obj;
|
|
10445
|
-
if (eof() || next() !== ":") throw new SyntaxError("Expected ':' after key");
|
|
10446
|
-
if (!eof() && peek() === " ") next();
|
|
10447
|
-
while (!eof() && (peek() === " " || peek() === " ")) next();
|
|
10448
|
-
if (eof()) {
|
|
10449
|
-
obj[key] = "";
|
|
10450
|
-
return obj;
|
|
10451
|
-
}
|
|
10452
|
-
if (peek() === "\n") {
|
|
10453
|
-
next();
|
|
10454
|
-
const afterNewlinePos = index;
|
|
10455
|
-
skipWhitespace();
|
|
10456
|
-
if (peek() === "-") {
|
|
10457
|
-
obj[key] = parseYamlList();
|
|
10458
|
-
skipWhitespace();
|
|
10459
|
-
continue;
|
|
10460
|
-
} else {
|
|
10461
|
-
index = afterNewlinePos;
|
|
10462
|
-
skipWhitespace();
|
|
10463
|
-
if (!eof()) {
|
|
10464
|
-
const nextChar = peek();
|
|
10465
|
-
if (nextChar && !isStopChar(nextChar, stops) && nextChar !== "-") {
|
|
10466
|
-
obj[key] = "";
|
|
10467
|
-
continue;
|
|
10468
|
-
}
|
|
10469
|
-
}
|
|
10470
|
-
obj[key] = "";
|
|
10471
|
-
return obj;
|
|
10472
|
-
}
|
|
10473
|
-
}
|
|
10474
|
-
obj[key] = parseValue(stops.includes("}") ? [
|
|
10475
|
-
",",
|
|
10476
|
-
"\n",
|
|
10477
|
-
...stops
|
|
10478
|
-
] : ["\n", ...stops]);
|
|
10479
|
-
if (eof()) return obj;
|
|
10480
|
-
let sep = peek();
|
|
10481
|
-
if (sep === ",") {
|
|
10482
|
-
next();
|
|
10483
|
-
skipWhitespace();
|
|
10484
|
-
continue;
|
|
10485
|
-
}
|
|
10486
|
-
if (sep === "\n") {
|
|
10487
|
-
next();
|
|
10488
|
-
skipWhitespace();
|
|
10489
|
-
continue;
|
|
10490
|
-
}
|
|
10491
|
-
if (sep === " " || sep === " ") {
|
|
10492
|
-
while (!eof() && (peek() === " " || peek() === " ")) next();
|
|
10493
|
-
sep = peek();
|
|
10494
|
-
if (sep === "\n") {
|
|
10495
|
-
next();
|
|
10496
|
-
skipWhitespace();
|
|
10497
|
-
continue;
|
|
10498
|
-
}
|
|
10499
|
-
if (eof() || isStopChar(sep, stops)) return obj;
|
|
10500
|
-
continue;
|
|
10501
|
-
}
|
|
10502
|
-
if (isStopChar(sep, stops)) return obj;
|
|
10503
|
-
if (!eof()) continue;
|
|
10504
|
-
return obj;
|
|
10505
|
-
}
|
|
10506
|
-
};
|
|
10507
|
-
const parseObject = () => {
|
|
10508
|
-
next();
|
|
10509
|
-
skipWhitespace();
|
|
10510
|
-
if (peek() === "}") {
|
|
10511
|
-
next();
|
|
10512
|
-
return {};
|
|
10513
|
-
}
|
|
10514
|
-
const obj = parseObjectBody(["}"]);
|
|
10515
|
-
if (peek() !== "}") throw new SyntaxError("Expected '}' at end of object");
|
|
10516
|
-
next();
|
|
10517
|
-
return obj;
|
|
10518
|
-
};
|
|
10519
|
-
const hasTopLevelKeyColonSpace = (s) => {
|
|
10520
|
-
let i = 0;
|
|
10521
|
-
let depth = 0;
|
|
10522
|
-
let quote = null;
|
|
10523
|
-
while (i < s.length) {
|
|
10524
|
-
const char = s[i];
|
|
10525
|
-
if (quote) {
|
|
10526
|
-
if (char === "\\" && i + 1 < s.length) {
|
|
10527
|
-
i += 2;
|
|
10528
|
-
continue;
|
|
10529
|
-
}
|
|
10530
|
-
if (char === quote) {
|
|
10531
|
-
quote = null;
|
|
10532
|
-
i++;
|
|
10533
|
-
continue;
|
|
10534
|
-
}
|
|
10535
|
-
i++;
|
|
10536
|
-
continue;
|
|
10537
|
-
}
|
|
10538
|
-
if (char === "\"" || char === "'") {
|
|
10539
|
-
quote = char;
|
|
10540
|
-
i++;
|
|
10541
|
-
continue;
|
|
10542
|
-
}
|
|
10543
|
-
if (char === "[" || char === "{") {
|
|
10544
|
-
depth++;
|
|
10545
|
-
i++;
|
|
10546
|
-
continue;
|
|
10547
|
-
}
|
|
10548
|
-
if (char === "]" || char === "}") {
|
|
10549
|
-
depth = Math.max(0, depth - 1);
|
|
10550
|
-
i++;
|
|
10551
|
-
continue;
|
|
10552
|
-
}
|
|
10553
|
-
if (depth === 0 && char === ":") {
|
|
10554
|
-
const nextCh = s[i + 1];
|
|
10555
|
-
if (nextCh === " " || nextCh === "\n" || nextCh === void 0) return true;
|
|
10556
|
-
}
|
|
10557
|
-
i++;
|
|
10558
|
-
}
|
|
10559
|
-
return false;
|
|
10560
|
-
};
|
|
10561
|
-
if (text.startsWith("]") || text.startsWith("}")) throw new SyntaxError("Unexpected closing bracket");
|
|
10562
|
-
if (text.startsWith("[")) {
|
|
10563
|
-
const value = parseArray();
|
|
10564
|
-
skipWhitespace();
|
|
10565
|
-
if (!eof()) throw new SyntaxError("Unexpected trailing characters");
|
|
10566
|
-
return value;
|
|
10567
|
-
}
|
|
10568
|
-
if (text.startsWith("{")) {
|
|
10569
|
-
const value = parseObject();
|
|
10570
|
-
skipWhitespace();
|
|
10571
|
-
if (!eof()) throw new SyntaxError("Unexpected trailing characters");
|
|
10572
|
-
return value;
|
|
10573
|
-
}
|
|
10574
|
-
if (hasTopLevelKeyColonSpace(text)) {
|
|
10575
|
-
const value = parseObjectBody([]);
|
|
10576
|
-
skipWhitespace();
|
|
10577
|
-
if (!eof()) throw new SyntaxError("Unexpected trailing characters");
|
|
10578
|
-
return value;
|
|
10579
|
-
}
|
|
10580
|
-
const single = parseValue([]);
|
|
10581
|
-
skipWhitespace();
|
|
10582
|
-
if (!eof()) throw new SyntaxError("Unexpected trailing characters");
|
|
10583
|
-
return single;
|
|
10584
|
-
};
|
|
10585
|
-
//#endregion
|
|
10586
|
-
//#region ../@intlayer/core/dist/esm/transpiler/markdown/getMarkdownMetadata.mjs
|
|
10587
|
-
var getMarkdownMetadata = (markdown) => {
|
|
10588
|
-
try {
|
|
10589
|
-
const lines = markdown.split(/\r?\n/);
|
|
10590
|
-
const firstNonEmptyLine = lines.find((line) => line.trim() !== "");
|
|
10591
|
-
if (!firstNonEmptyLine || firstNonEmptyLine.trim() !== "---") return {};
|
|
10592
|
-
let metadataEndIndex = -1;
|
|
10593
|
-
for (let i = 1; i < lines.length; i++) if (lines[i].trim() === "---") {
|
|
10594
|
-
metadataEndIndex = i;
|
|
10595
|
-
break;
|
|
10596
|
-
}
|
|
10597
|
-
if (metadataEndIndex === -1) return {};
|
|
10598
|
-
return parseYaml(lines.slice(1, metadataEndIndex).join("\n")) ?? {};
|
|
10599
|
-
} catch {
|
|
10600
|
-
return {};
|
|
10601
|
-
}
|
|
10602
|
-
};
|
|
10603
|
-
//#endregion
|
|
10604
9973
|
//#region ../@intlayer/core/dist/esm/markdown/constants.mjs
|
|
10605
9974
|
/**
|
|
10606
9975
|
* Analogous to `node.type`. Please note that the values here may change at any time,
|
|
@@ -12087,10 +11456,8 @@ var compile = (markdown = "", ctx, options = {}) => {
|
|
|
12087
11456
|
key: def.identifier
|
|
12088
11457
|
}, def.identifier, emitter(parser(def.footnote, { inline: true }), { inline: true }))))) : node;
|
|
12089
11458
|
};
|
|
12090
|
-
|
|
12091
|
-
|
|
12092
|
-
var LazyMarkdownRendererPlugin = (0, import_react.lazy)(() => __vitePreload(() => import("./MarkdownRendererPlugin-qmrNTiKL.js").then((m) => ({ default: m.MarkdownRendererPlugin })), []));
|
|
12093
|
-
var LazyHTMLRendererPlugin = (0, import_react.lazy)(() => __vitePreload(() => import("./HTMLRendererPlugin-B6Eld7in.js").then((m) => ({ default: m.HTMLRendererPlugin })), __vite__mapDeps([0,1,2])));
|
|
11459
|
+
(0, import_react.lazy)(() => __vitePreload(() => import("./MarkdownRendererPlugin-C1_aJQ4G.js").then((m) => ({ default: m.MarkdownRendererPlugin })), []));
|
|
11460
|
+
(0, import_react.lazy)(() => __vitePreload(() => import("./HTMLRendererPlugin-CoI--J8B.js").then((m) => ({ default: m.HTMLRendererPlugin })), __vite__mapDeps([0,1,2,3])));
|
|
12094
11461
|
/** Translation plugin. Replaces node with a locale string if nodeType = Translation. */
|
|
12095
11462
|
var intlayerNodePlugins = {
|
|
12096
11463
|
id: "intlayer-node-plugin",
|
|
@@ -12098,7 +11465,10 @@ var intlayerNodePlugins = {
|
|
|
12098
11465
|
transform: (_node, { plugins, ...rest }) => renderIntlayerNode({
|
|
12099
11466
|
...rest,
|
|
12100
11467
|
value: rest.children,
|
|
12101
|
-
children:
|
|
11468
|
+
children: configuration.editor.enabled ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ContentSelector, {
|
|
11469
|
+
...rest,
|
|
11470
|
+
children: rest.children
|
|
11471
|
+
}) : rest.children
|
|
12102
11472
|
})
|
|
12103
11473
|
};
|
|
12104
11474
|
/** Translation plugin. Replaces node with a locale string if nodeType = Translation. */
|
|
@@ -12108,7 +11478,10 @@ var reactNodePlugins = {
|
|
|
12108
11478
|
transform: (node, { plugins, ...rest }) => renderIntlayerNode({
|
|
12109
11479
|
...rest,
|
|
12110
11480
|
value: "[[react-element]]",
|
|
12111
|
-
children:
|
|
11481
|
+
children: configuration.editor.enabled ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ContentSelector, {
|
|
11482
|
+
...rest,
|
|
11483
|
+
children: renderReactElement(node)
|
|
11484
|
+
}) : renderReactElement(node)
|
|
12112
11485
|
})
|
|
12113
11486
|
};
|
|
12114
11487
|
/**
|
|
@@ -12160,464 +11533,83 @@ var insertionPlugin = {
|
|
|
12160
11533
|
return result;
|
|
12161
11534
|
}
|
|
12162
11535
|
};
|
|
12163
|
-
/** Markdown string plugin. Replaces string node with a component that render the markdown. */
|
|
12164
|
-
var markdownStringPlugin = {
|
|
12165
|
-
id: "markdown-string-plugin",
|
|
12166
|
-
canHandle: (node) => typeof node === "string",
|
|
12167
|
-
transform: (node, props, deepTransformNode) => {
|
|
12168
|
-
const { plugins, ...rest } = props;
|
|
12169
|
-
const metadataNodes = deepTransformNode(getMarkdownMetadata(node) ?? {}, {
|
|
12170
|
-
plugins: [{
|
|
12171
|
-
id: "markdown-metadata-plugin",
|
|
12172
|
-
canHandle: (metadataNode) => typeof metadataNode === "string" || typeof metadataNode === "number" || typeof metadataNode === "boolean" || !metadataNode,
|
|
12173
|
-
transform: (metadataNode, props) => renderIntlayerNode({
|
|
12174
|
-
...props,
|
|
12175
|
-
value: metadataNode,
|
|
12176
|
-
children: node
|
|
12177
|
-
})
|
|
12178
|
-
}],
|
|
12179
|
-
dictionaryKey: rest.dictionaryKey,
|
|
12180
|
-
keyPath: []
|
|
12181
|
-
});
|
|
12182
|
-
const render = (components) => renderIntlayerNode({
|
|
12183
|
-
...props,
|
|
12184
|
-
value: node,
|
|
12185
|
-
children: configuration.editor.enabled ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ContentSelector, {
|
|
12186
|
-
...rest,
|
|
12187
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Suspense, {
|
|
12188
|
-
fallback: node,
|
|
12189
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LazyMarkdownRendererPlugin, {
|
|
12190
|
-
...rest,
|
|
12191
|
-
components,
|
|
12192
|
-
children: node
|
|
12193
|
-
})
|
|
12194
|
-
})
|
|
12195
|
-
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Suspense, {
|
|
12196
|
-
fallback: node,
|
|
12197
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LazyMarkdownRendererPlugin, {
|
|
12198
|
-
...rest,
|
|
12199
|
-
components,
|
|
12200
|
-
children: node
|
|
12201
|
-
})
|
|
12202
|
-
}),
|
|
12203
|
-
additionalProps: { metadata: metadataNodes }
|
|
12204
|
-
});
|
|
12205
|
-
const element = render();
|
|
12206
|
-
return new Proxy(element, { get(target, prop, receiver) {
|
|
12207
|
-
if (prop === "value") return node;
|
|
12208
|
-
if (prop === "metadata") return metadataNodes;
|
|
12209
|
-
if (prop === "use") return (components) => render(components);
|
|
12210
|
-
return Reflect.get(target, prop, receiver);
|
|
12211
|
-
} });
|
|
12212
|
-
}
|
|
12213
|
-
};
|
|
12214
|
-
var markdownPlugin = {
|
|
12215
|
-
id: "markdown-plugin",
|
|
12216
|
-
canHandle: (node) => typeof node === "object" && node?.nodeType === "markdown",
|
|
12217
|
-
transform: (node, props, deepTransformNode) => {
|
|
12218
|
-
const newKeyPath = [...props.keyPath, { type: MARKDOWN }];
|
|
12219
|
-
const children = node[MARKDOWN];
|
|
12220
|
-
return deepTransformNode(children, {
|
|
12221
|
-
...props,
|
|
12222
|
-
children,
|
|
12223
|
-
keyPath: newKeyPath,
|
|
12224
|
-
plugins: [markdownStringPlugin, ...props.plugins ?? []]
|
|
12225
|
-
});
|
|
12226
|
-
}
|
|
12227
|
-
};
|
|
12228
|
-
/** HTML plugin. Replaces node with a function that takes components => ReactNode. */
|
|
12229
|
-
var htmlPlugin = {
|
|
12230
|
-
id: "html-plugin",
|
|
12231
|
-
canHandle: (node) => typeof node === "object" && node?.nodeType === "html",
|
|
12232
|
-
transform: (node, props) => {
|
|
12233
|
-
const html = node[HTML];
|
|
12234
|
-
const { plugins, ...rest } = props;
|
|
12235
|
-
const render = (userComponents) => (0, import_react.createElement)(import_react.Suspense, { fallback: html }, (0, import_react.createElement)(LazyHTMLRendererPlugin, {
|
|
12236
|
-
...rest,
|
|
12237
|
-
html,
|
|
12238
|
-
userComponents
|
|
12239
|
-
}));
|
|
12240
|
-
const element = render();
|
|
12241
|
-
return new Proxy(element, { get(target, prop, receiver) {
|
|
12242
|
-
if (prop === "value") return html;
|
|
12243
|
-
if (prop === "use") return (userComponents) => render(userComponents);
|
|
12244
|
-
return Reflect.get(target, prop, receiver);
|
|
12245
|
-
} });
|
|
12246
|
-
}
|
|
12247
|
-
};
|
|
12248
11536
|
/**
|
|
12249
11537
|
* Get the plugins array for React content transformation.
|
|
12250
11538
|
* This function is used by both getIntlayer and getDictionary to ensure consistent plugin configuration.
|
|
12251
11539
|
*/
|
|
12252
11540
|
var getPlugins = (locale, fallback = true) => [
|
|
12253
|
-
translationPlugin(locale ?? configuration.internationalization.defaultLocale, fallback ? configuration.internationalization.defaultLocale : void 0),
|
|
12254
|
-
|
|
12255
|
-
conditionPlugin,
|
|
12256
|
-
|
|
12257
|
-
|
|
12258
|
-
|
|
11541
|
+
{}.INTLAYER_NODE_TYPE_TRANSLATION !== "false" && translationPlugin(locale ?? configuration.internationalization.defaultLocale, fallback ? configuration.internationalization.defaultLocale : void 0),
|
|
11542
|
+
false,
|
|
11543
|
+
{}.INTLAYER_NODE_TYPE_CONDITION !== "false" && conditionPlugin,
|
|
11544
|
+
false,
|
|
11545
|
+
false,
|
|
11546
|
+
false,
|
|
12259
11547
|
intlayerNodePlugins,
|
|
12260
11548
|
reactNodePlugins,
|
|
12261
|
-
insertionPlugin,
|
|
12262
|
-
|
|
12263
|
-
|
|
12264
|
-
];
|
|
11549
|
+
{}.INTLAYER_NODE_TYPE_INSERTION !== "false" && insertionPlugin,
|
|
11550
|
+
false,
|
|
11551
|
+
false
|
|
11552
|
+
].filter(Boolean);
|
|
12265
11553
|
//#endregion
|
|
12266
11554
|
//#region ../react-intlayer/dist/esm/getDictionary.mjs
|
|
12267
11555
|
var getDictionary = (dictionary, locale) => getDictionary$1(dictionary, locale, getPlugins(locale));
|
|
12268
11556
|
//#endregion
|
|
12269
|
-
//#region ../@intlayer/
|
|
12270
|
-
var
|
|
12271
|
-
//#endregion
|
|
12272
|
-
//#region ../@intlayer/config/dist/esm/defaultValues/internationalization.mjs
|
|
12273
|
-
var LOCALES = ["en"];
|
|
12274
|
-
var DEFAULT_LOCALE = "en";
|
|
11557
|
+
//#region ../@intlayer/core/dist/esm/utils/checkIsURLAbsolute.mjs
|
|
11558
|
+
var checkIsURLAbsolute = (url) => /^[a-zA-Z][a-zA-Z\d+\-.]*:/.test(url);
|
|
12275
11559
|
//#endregion
|
|
12276
|
-
//#region ../@intlayer/core/dist/esm/
|
|
12277
|
-
/**
|
|
12278
|
-
* Creates a cookie entry with default values for missing attributes
|
|
12279
|
-
*/
|
|
12280
|
-
var createCookieEntry = (options) => {
|
|
12281
|
-
const { name, path, expires, domain, secure, sameSite, httpOnly } = options ?? {};
|
|
12282
|
-
return {
|
|
12283
|
-
name: name ?? "INTLAYER_LOCALE",
|
|
12284
|
-
attributes: {
|
|
12285
|
-
path,
|
|
12286
|
-
expires,
|
|
12287
|
-
domain,
|
|
12288
|
-
secure,
|
|
12289
|
-
sameSite,
|
|
12290
|
-
httpOnly
|
|
12291
|
-
}
|
|
12292
|
-
};
|
|
12293
|
-
};
|
|
12294
|
-
/**
|
|
12295
|
-
* Creates a web storage entry (localStorage or sessionStorage) with default name
|
|
12296
|
-
*/
|
|
12297
|
-
var createWebStorageEntry = (options) => {
|
|
12298
|
-
const { name } = options ?? {};
|
|
12299
|
-
return { name: name ?? "INTLAYER_LOCALE" };
|
|
12300
|
-
};
|
|
12301
|
-
/**
|
|
12302
|
-
* Creates a header entry with default name
|
|
12303
|
-
*/
|
|
12304
|
-
var createHeaderEntry = (options) => {
|
|
12305
|
-
const { name } = options ?? {};
|
|
12306
|
-
return { name: name ?? "x-intlayer-locale" };
|
|
12307
|
-
};
|
|
12308
|
-
/**
|
|
12309
|
-
* Determines if a storage entry is a cookie based on its properties
|
|
12310
|
-
*/
|
|
12311
|
-
var isCookieEntry = (entry) => {
|
|
12312
|
-
return entry.type === "cookie" || "sameSite" in entry || "httpOnly" in entry || "secure" in entry;
|
|
12313
|
-
};
|
|
12314
|
-
/**
|
|
12315
|
-
* Determines the storage type from a string literal
|
|
12316
|
-
*/
|
|
12317
|
-
var isStorageType = (value) => {
|
|
12318
|
-
return value === "cookie" || value === "localStorage" || value === "sessionStorage" || value === "header";
|
|
12319
|
-
};
|
|
12320
|
-
/**
|
|
12321
|
-
* Processes a single storage entry and returns the appropriate storage attributes
|
|
12322
|
-
*/
|
|
12323
|
-
var processStorageEntry = (entry) => {
|
|
12324
|
-
if (typeof entry === "string") {
|
|
12325
|
-
if (!isStorageType(entry)) return {
|
|
12326
|
-
cookies: [],
|
|
12327
|
-
localStorage: [],
|
|
12328
|
-
sessionStorage: [],
|
|
12329
|
-
headers: []
|
|
12330
|
-
};
|
|
12331
|
-
if (entry === "cookie") return { cookies: [createCookieEntry()] };
|
|
12332
|
-
if (entry === "localStorage") return { localStorage: [createWebStorageEntry()] };
|
|
12333
|
-
if (entry === "sessionStorage") return { sessionStorage: [createWebStorageEntry()] };
|
|
12334
|
-
if (entry === "header") return { headers: [createHeaderEntry()] };
|
|
12335
|
-
}
|
|
12336
|
-
if (typeof entry === "object" && entry !== null) {
|
|
12337
|
-
const typedEntry = entry;
|
|
12338
|
-
if (isCookieEntry(typedEntry)) return { cookies: [createCookieEntry(typedEntry)] };
|
|
12339
|
-
if ("type" in typedEntry && typedEntry.type === "localStorage") {
|
|
12340
|
-
const { name, ...rest } = typedEntry;
|
|
12341
|
-
return { localStorage: [createWebStorageEntry({
|
|
12342
|
-
name,
|
|
12343
|
-
...rest
|
|
12344
|
-
})] };
|
|
12345
|
-
}
|
|
12346
|
-
if ("type" in typedEntry && typedEntry.type === "sessionStorage") {
|
|
12347
|
-
const { name, ...rest } = typedEntry;
|
|
12348
|
-
return { sessionStorage: [createWebStorageEntry({
|
|
12349
|
-
name,
|
|
12350
|
-
...rest
|
|
12351
|
-
})] };
|
|
12352
|
-
}
|
|
12353
|
-
if ("type" in typedEntry && typedEntry.type === "header") {
|
|
12354
|
-
const { name, ...rest } = typedEntry;
|
|
12355
|
-
return { headers: [createHeaderEntry({
|
|
12356
|
-
name,
|
|
12357
|
-
...rest
|
|
12358
|
-
})] };
|
|
12359
|
-
}
|
|
12360
|
-
const { name, ...rest } = typedEntry;
|
|
12361
|
-
return { localStorage: [createWebStorageEntry({
|
|
12362
|
-
name,
|
|
12363
|
-
...rest
|
|
12364
|
-
})] };
|
|
12365
|
-
}
|
|
12366
|
-
return {
|
|
12367
|
-
cookies: [],
|
|
12368
|
-
localStorage: [],
|
|
12369
|
-
sessionStorage: [],
|
|
12370
|
-
headers: []
|
|
12371
|
-
};
|
|
12372
|
-
};
|
|
12373
|
-
/**
|
|
12374
|
-
* Merges multiple partial storage attributes into a single result
|
|
12375
|
-
*/
|
|
12376
|
-
var mergeStorageAttributes = (accumulated, partial) => {
|
|
12377
|
-
return {
|
|
12378
|
-
cookies: [...accumulated.cookies, ...partial.cookies ?? []],
|
|
12379
|
-
localStorage: [...accumulated.localStorage, ...partial.localStorage ?? []],
|
|
12380
|
-
sessionStorage: [...accumulated.sessionStorage, ...partial.sessionStorage ?? []],
|
|
12381
|
-
headers: [...accumulated.headers, ...partial.headers ?? []]
|
|
12382
|
-
};
|
|
12383
|
-
};
|
|
11560
|
+
//#region ../@intlayer/core/dist/esm/localization/getPathWithoutLocale.mjs
|
|
12384
11561
|
/**
|
|
12385
|
-
*
|
|
11562
|
+
* Removes the locale segment from the given URL or pathname if present.
|
|
11563
|
+
* Also removes locale from search parameters if present.
|
|
12386
11564
|
*
|
|
12387
|
-
*
|
|
12388
|
-
* @returns An object containing arrays for cookies, localStorage, and sessionStorage
|
|
12389
|
-
*/
|
|
12390
|
-
var getStorageAttributes = (options) => {
|
|
12391
|
-
const emptyResult = {
|
|
12392
|
-
cookies: [],
|
|
12393
|
-
localStorage: [],
|
|
12394
|
-
sessionStorage: [],
|
|
12395
|
-
headers: []
|
|
12396
|
-
};
|
|
12397
|
-
if (options === false || options === void 0) return emptyResult;
|
|
12398
|
-
if (Array.isArray(options)) return options.reduce((acc, entry) => {
|
|
12399
|
-
return mergeStorageAttributes(acc, processStorageEntry(entry));
|
|
12400
|
-
}, emptyResult);
|
|
12401
|
-
return mergeStorageAttributes(emptyResult, processStorageEntry(options));
|
|
12402
|
-
};
|
|
12403
|
-
//#endregion
|
|
12404
|
-
//#region ../@intlayer/core/dist/esm/localization/localeResolver.mjs
|
|
12405
|
-
/**
|
|
12406
|
-
* Resolves the most specific locale from a user-provided list,
|
|
12407
|
-
* or falls back to the default locale if no match is found.
|
|
12408
|
-
*/
|
|
12409
|
-
var localeResolver = (selectedLocale, locales = configuration?.internationalization?.locales, defaultLocale = configuration?.internationalization?.defaultLocale) => {
|
|
12410
|
-
const requestedLocales = [selectedLocale].flat();
|
|
12411
|
-
const normalize = (locale) => locale.trim().toLowerCase();
|
|
12412
|
-
try {
|
|
12413
|
-
for (const requested of requestedLocales) {
|
|
12414
|
-
const normalizedRequested = normalize(requested);
|
|
12415
|
-
const exactMatch = locales.find((loc) => normalize(loc) === normalizedRequested);
|
|
12416
|
-
if (exactMatch) return exactMatch;
|
|
12417
|
-
const [requestedLang] = normalizedRequested.split("-");
|
|
12418
|
-
const partialMatch = locales.find((loc) => normalize(loc).split("-")[0] === requestedLang);
|
|
12419
|
-
if (partialMatch) return partialMatch;
|
|
12420
|
-
}
|
|
12421
|
-
} catch (_error) {}
|
|
12422
|
-
return defaultLocale;
|
|
12423
|
-
};
|
|
12424
|
-
//#endregion
|
|
12425
|
-
//#region ../@intlayer/core/dist/esm/utils/getCookie.mjs
|
|
12426
|
-
/**
|
|
12427
|
-
* Retrieves a cookie by name from a cookie string or document.cookie
|
|
12428
|
-
* @param name - The name of the cookie to retrieve
|
|
12429
|
-
* @param cookieString - Optional cookie string to parse (defaults to document.cookie in browser)
|
|
12430
|
-
* @returns The cookie value or undefined if not found
|
|
12431
|
-
*/
|
|
12432
|
-
var getCookie = (name, cookieString) => {
|
|
12433
|
-
try {
|
|
12434
|
-
const str = cookieString ?? (typeof document !== "undefined" ? document.cookie : "");
|
|
12435
|
-
if (!str) return void 0;
|
|
12436
|
-
const pairs = str.split(";");
|
|
12437
|
-
for (let i = 0; i < pairs.length; i++) {
|
|
12438
|
-
const part = pairs[i].trim();
|
|
12439
|
-
if (!part) continue;
|
|
12440
|
-
const equalIndex = part.indexOf("=");
|
|
12441
|
-
if ((equalIndex >= 0 ? part.substring(0, equalIndex) : part) === name) {
|
|
12442
|
-
const rawValue = equalIndex >= 0 ? part.substring(equalIndex + 1) : "";
|
|
12443
|
-
try {
|
|
12444
|
-
return decodeURIComponent(rawValue);
|
|
12445
|
-
} catch {
|
|
12446
|
-
return rawValue;
|
|
12447
|
-
}
|
|
12448
|
-
}
|
|
12449
|
-
}
|
|
12450
|
-
} catch {}
|
|
12451
|
-
};
|
|
12452
|
-
//#endregion
|
|
12453
|
-
//#region ../@intlayer/core/dist/esm/utils/localeStorage.mjs
|
|
12454
|
-
var buildCookieString = (name, value, attributes) => {
|
|
12455
|
-
const parts = [`${name}=${encodeURIComponent(value)}`];
|
|
12456
|
-
if (attributes.path) parts.push(`Path=${attributes.path}`);
|
|
12457
|
-
if (attributes.domain) parts.push(`Domain=${attributes.domain}`);
|
|
12458
|
-
if (attributes.expires instanceof Date) parts.push(`Expires=${attributes.expires.toUTCString()}`);
|
|
12459
|
-
if (attributes.secure) parts.push("Secure");
|
|
12460
|
-
if (attributes.sameSite) parts.push(`SameSite=${attributes.sameSite}`);
|
|
12461
|
-
return parts.join("; ");
|
|
12462
|
-
};
|
|
12463
|
-
/**
|
|
12464
|
-
* Retrieves the locale from various storage mechanisms (cookies, localStorage, sessionStorage, headers).
|
|
12465
|
-
* The function checks storage locations in order of priority as defined in the configuration.
|
|
11565
|
+
* This function get the locales from the configuration if not provided.
|
|
12466
11566
|
*
|
|
12467
|
-
*
|
|
12468
|
-
|
|
12469
|
-
|
|
12470
|
-
|
|
12471
|
-
|
|
12472
|
-
|
|
12473
|
-
|
|
12474
|
-
|
|
12475
|
-
|
|
12476
|
-
|
|
12477
|
-
|
|
12478
|
-
|
|
12479
|
-
|
|
12480
|
-
try {
|
|
12481
|
-
const fromOption = options?.getCookie?.(name);
|
|
12482
|
-
if (fromOption !== null && fromOption !== void 0) return fromOption;
|
|
12483
|
-
} catch {}
|
|
12484
|
-
return getCookie(name);
|
|
12485
|
-
};
|
|
12486
|
-
for (let i = 0; i < storageAttributes.cookies.length; i++) {
|
|
12487
|
-
const { name } = storageAttributes.cookies[i];
|
|
12488
|
-
const value = readCookie(name);
|
|
12489
|
-
if (isValidLocale(value)) return value;
|
|
12490
|
-
}
|
|
12491
|
-
for (let i = 0; i < storageAttributes.localStorage.length; i++) {
|
|
12492
|
-
const { name } = storageAttributes.localStorage[i];
|
|
12493
|
-
try {
|
|
12494
|
-
const value = options?.getLocaleStorage?.(name);
|
|
12495
|
-
if (isValidLocale(value)) return value;
|
|
12496
|
-
} catch {}
|
|
12497
|
-
}
|
|
12498
|
-
for (let i = 0; i < storageAttributes.sessionStorage.length; i++) {
|
|
12499
|
-
const { name } = storageAttributes.sessionStorage[i];
|
|
12500
|
-
try {
|
|
12501
|
-
const value = options?.getSessionStorage?.(name);
|
|
12502
|
-
if (isValidLocale(value)) return value;
|
|
12503
|
-
} catch {}
|
|
12504
|
-
}
|
|
12505
|
-
for (let i = 0; i < storageAttributes.headers.length; i++) {
|
|
12506
|
-
const { name } = storageAttributes.headers[i];
|
|
12507
|
-
try {
|
|
12508
|
-
const value = options?.getHeader?.(name);
|
|
12509
|
-
if (isValidLocale(value)) return value;
|
|
12510
|
-
} catch {}
|
|
12511
|
-
}
|
|
12512
|
-
};
|
|
12513
|
-
/**
|
|
12514
|
-
* Stores the locale in various storage mechanisms (cookies, localStorage, sessionStorage, headers).
|
|
12515
|
-
* The function writes to all configured storage locations according to their attributes.
|
|
12516
|
-
* Respects overwrite flags for localStorage and sessionStorage.
|
|
11567
|
+
* Example:
|
|
11568
|
+
*
|
|
11569
|
+
* ```ts
|
|
11570
|
+
* getPathWithoutLocale('/en/dashboard') // Returns '/dashboard'
|
|
11571
|
+
* getPathWithoutLocale('/fr/dashboard') // Returns '/dashboard'
|
|
11572
|
+
* getPathWithoutLocale('/dashboard') // Returns '/dashboard'
|
|
11573
|
+
* getPathWithoutLocale('dashboard') // Returns 'dashboard'
|
|
11574
|
+
* getPathWithoutLocale('/dashboard?locale=fr') // Returns '/dashboard'
|
|
11575
|
+
* getPathWithoutLocale('https://example.com/en/dashboard') // Returns 'https://example.com/dashboard'
|
|
11576
|
+
* getPathWithoutLocale('https://example.com/fr/dashboard') // Returns 'https://example.com/dashboard'
|
|
11577
|
+
* getPathWithoutLocale('https://example.com/dashboard') // Returns 'https://example.com/dashboard'
|
|
11578
|
+
* getPathWithoutLocale('https://example.com/dashboard?locale=fr') // Returns 'https://example.com/dashboard'
|
|
11579
|
+
* ```
|
|
12517
11580
|
*
|
|
12518
|
-
* @param
|
|
11581
|
+
* @param inputUrl - The complete URL string or pathname to process.
|
|
11582
|
+
* @param locales - Optional array of supported locales. Defaults to `localesDefault`.
|
|
11583
|
+
* @returns The URL string or pathname without the locale segment or locale search parameter.
|
|
12519
11584
|
*/
|
|
12520
|
-
var
|
|
12521
|
-
|
|
12522
|
-
|
|
12523
|
-
|
|
12524
|
-
|
|
12525
|
-
|
|
12526
|
-
|
|
12527
|
-
|
|
12528
|
-
|
|
12529
|
-
|
|
12530
|
-
|
|
12531
|
-
|
|
12532
|
-
if (options?.setCookieString) {
|
|
12533
|
-
const cookieString = buildCookieString(name, locale, attributes);
|
|
12534
|
-
options?.setCookieString?.(name, cookieString);
|
|
12535
|
-
}
|
|
12536
|
-
} catch {}
|
|
12537
|
-
}
|
|
12538
|
-
}
|
|
12539
|
-
if (options?.setLocaleStorage) for (let i = 0; i < storageAttributes.localStorage.length; i++) {
|
|
12540
|
-
const { name } = storageAttributes.localStorage[i];
|
|
12541
|
-
try {
|
|
12542
|
-
if (!(options?.overwrite ?? true) && options?.getLocaleStorage) {
|
|
12543
|
-
if (options?.getLocaleStorage?.(name)) continue;
|
|
12544
|
-
}
|
|
12545
|
-
options?.setLocaleStorage?.(name, locale);
|
|
12546
|
-
} catch {}
|
|
12547
|
-
}
|
|
12548
|
-
if (options?.setSessionStorage) for (let i = 0; i < storageAttributes.sessionStorage.length; i++) {
|
|
12549
|
-
const { name } = storageAttributes.sessionStorage[i];
|
|
12550
|
-
try {
|
|
12551
|
-
if (!(options?.overwrite ?? true) && options?.getSessionStorage) {
|
|
12552
|
-
if (options?.getSessionStorage?.(name)) continue;
|
|
12553
|
-
}
|
|
12554
|
-
options?.setSessionStorage?.(name, locale);
|
|
12555
|
-
} catch {}
|
|
11585
|
+
var getPathWithoutLocale = (inputUrl, locales = configuration?.internationalization?.locales) => {
|
|
11586
|
+
const isAbsoluteUrl = checkIsURLAbsolute(inputUrl);
|
|
11587
|
+
let fixedInputUrl = inputUrl;
|
|
11588
|
+
if (inputUrl?.endsWith("/")) fixedInputUrl = inputUrl.slice(0, -1);
|
|
11589
|
+
const url = isAbsoluteUrl ? new URL(fixedInputUrl) : new URL(fixedInputUrl, "http://example.com");
|
|
11590
|
+
const pathname = url.pathname;
|
|
11591
|
+
if (!pathname.startsWith("/")) url.pathname = `/${pathname}`;
|
|
11592
|
+
const pathSegments = pathname.split("/");
|
|
11593
|
+
const firstSegment = pathSegments[1];
|
|
11594
|
+
if (locales?.includes(firstSegment)) {
|
|
11595
|
+
pathSegments.splice(1, 1);
|
|
11596
|
+
url.pathname = pathSegments.join("/") ?? "/";
|
|
12556
11597
|
}
|
|
12557
|
-
|
|
12558
|
-
|
|
12559
|
-
|
|
12560
|
-
|
|
12561
|
-
} catch {}
|
|
11598
|
+
const searchParams = new URLSearchParams(url.search);
|
|
11599
|
+
if (searchParams.has("locale")) {
|
|
11600
|
+
searchParams.delete("locale");
|
|
11601
|
+
url.search = searchParams.toString();
|
|
12562
11602
|
}
|
|
11603
|
+
if (isAbsoluteUrl) return url.toString();
|
|
11604
|
+
return url.toString().replace("http://example.com", "");
|
|
12563
11605
|
};
|
|
12564
11606
|
//#endregion
|
|
12565
|
-
//#region ../@intlayer/
|
|
12566
|
-
var
|
|
12567
|
-
getCookie: (name) => document.cookie.split(";").find((c) => c.trim().startsWith(`${name}=`))?.split("=")[1],
|
|
12568
|
-
getLocaleStorage: (name) => localStorage.getItem(name),
|
|
12569
|
-
getSessionStorage: (name) => sessionStorage.getItem(name),
|
|
12570
|
-
isCookieEnabled: true,
|
|
12571
|
-
setCookieStore: (name, value, attributes) => cookieStore.set({
|
|
12572
|
-
name,
|
|
12573
|
-
value,
|
|
12574
|
-
path: attributes.path,
|
|
12575
|
-
domain: attributes.domain,
|
|
12576
|
-
expires: attributes.expires,
|
|
12577
|
-
sameSite: attributes.sameSite
|
|
12578
|
-
}),
|
|
12579
|
-
setCookieString: (_name, cookie) => {
|
|
12580
|
-
document.cookie = cookie;
|
|
12581
|
-
},
|
|
12582
|
-
setSessionStorage: (name, value) => sessionStorage.setItem(name, value),
|
|
12583
|
-
setLocaleStorage: (name, value) => localStorage.setItem(name, value)
|
|
12584
|
-
};
|
|
11607
|
+
//#region ../@intlayer/config/dist/esm/defaultValues/editor.mjs
|
|
11608
|
+
var BACKEND_URL = "https://back.intlayer.org";
|
|
12585
11609
|
//#endregion
|
|
12586
|
-
//#region ../@intlayer/
|
|
12587
|
-
|
|
12588
|
-
|
|
12589
|
-
*
|
|
12590
|
-
* Example:
|
|
12591
|
-
*
|
|
12592
|
-
* getHTMLTextDir('en-US') // 'ltr'
|
|
12593
|
-
* getHTMLTextDir('en') // 'ltr'
|
|
12594
|
-
* getHTMLTextDir('fr-CA') // 'ltr'
|
|
12595
|
-
* getHTMLTextDir('fr') // 'ltr'
|
|
12596
|
-
*
|
|
12597
|
-
* @param locale The locale to get the text direction for.
|
|
12598
|
-
* @returns The text direction of the given locale.
|
|
12599
|
-
*/
|
|
12600
|
-
var getHTMLTextDir = (locale) => {
|
|
12601
|
-
if (!locale) return "ltr";
|
|
12602
|
-
try {
|
|
12603
|
-
const localeInfo = new Intl.Locale(locale);
|
|
12604
|
-
if ("getTextInfo" in localeInfo) return localeInfo.getTextInfo().direction;
|
|
12605
|
-
if ("textInfo" in localeInfo) return localeInfo.textInfo.direction;
|
|
12606
|
-
const maximized = localeInfo.maximize();
|
|
12607
|
-
return [
|
|
12608
|
-
"Arab",
|
|
12609
|
-
"Hebr",
|
|
12610
|
-
"Thaa",
|
|
12611
|
-
"Syrc",
|
|
12612
|
-
"Mand",
|
|
12613
|
-
"Adlm",
|
|
12614
|
-
"Rohg",
|
|
12615
|
-
"Nkoo"
|
|
12616
|
-
].includes(maximized.script ?? "") ? "rtl" : "ltr";
|
|
12617
|
-
} catch {
|
|
12618
|
-
return "ltr";
|
|
12619
|
-
}
|
|
12620
|
-
};
|
|
11610
|
+
//#region ../@intlayer/config/dist/esm/defaultValues/internationalization.mjs
|
|
11611
|
+
var LOCALES = ["en"];
|
|
11612
|
+
var DEFAULT_LOCALE = "en";
|
|
12621
11613
|
//#endregion
|
|
12622
11614
|
//#region ../@intlayer/core/dist/esm/localization/getPrefix.mjs
|
|
12623
11615
|
/**
|
|
@@ -12683,118 +11675,6 @@ var getPrefix = (locale, options = {}) => {
|
|
|
12683
11675
|
};
|
|
12684
11676
|
};
|
|
12685
11677
|
//#endregion
|
|
12686
|
-
//#region ../@intlayer/core/dist/esm/utils/checkIsURLAbsolute.mjs
|
|
12687
|
-
var checkIsURLAbsolute = (url) => /^[a-zA-Z][a-zA-Z\d+\-.]*:/.test(url);
|
|
12688
|
-
//#endregion
|
|
12689
|
-
//#region ../@intlayer/core/dist/esm/utils/intl.mjs
|
|
12690
|
-
/**
|
|
12691
|
-
* Optimized Cache Key Generator
|
|
12692
|
-
* 1. Fast path: If no options, just use the locale string.
|
|
12693
|
-
* 2. Normal path: JSON.stringify for deterministic object comparison.
|
|
12694
|
-
*/
|
|
12695
|
-
var getCacheKey = (locales, options) => {
|
|
12696
|
-
const localeKey = locales ? String(locales) : "en";
|
|
12697
|
-
if (!options) return localeKey;
|
|
12698
|
-
return `${localeKey}|${JSON.stringify(options)}`;
|
|
12699
|
-
};
|
|
12700
|
-
/**
|
|
12701
|
-
* Generic wrapper for any `new Intl.*()` constructor.
|
|
12702
|
-
*/
|
|
12703
|
-
var createCachedConstructor = (Ctor) => {
|
|
12704
|
-
const cache = /* @__PURE__ */ new Map();
|
|
12705
|
-
const MAX_CACHE_SIZE = 50;
|
|
12706
|
-
function Wrapped(locales, options) {
|
|
12707
|
-
let resolvedLocales = locales;
|
|
12708
|
-
let resolvedOptions = options;
|
|
12709
|
-
if (typeof locales === "object" && !Array.isArray(locales) && locales !== null) {
|
|
12710
|
-
resolvedOptions = locales;
|
|
12711
|
-
resolvedLocales = locales.locale;
|
|
12712
|
-
}
|
|
12713
|
-
if (Ctor.name === "DisplayNames" && typeof Intl?.DisplayNames !== "function") {}
|
|
12714
|
-
const key = getCacheKey(resolvedLocales, resolvedOptions);
|
|
12715
|
-
let instance = cache.get(key);
|
|
12716
|
-
if (instance) return instance;
|
|
12717
|
-
instance = new Ctor(resolvedLocales, resolvedOptions);
|
|
12718
|
-
if (cache.size >= MAX_CACHE_SIZE) {
|
|
12719
|
-
const oldestKey = cache.keys().next().value;
|
|
12720
|
-
if (oldestKey) cache.delete(oldestKey);
|
|
12721
|
-
}
|
|
12722
|
-
cache.set(key, instance);
|
|
12723
|
-
return instance;
|
|
12724
|
-
}
|
|
12725
|
-
Wrapped.prototype = Ctor.prototype;
|
|
12726
|
-
return Wrapped;
|
|
12727
|
-
};
|
|
12728
|
-
/**
|
|
12729
|
-
* Factory that turns the global `Intl` into a cached clone.
|
|
12730
|
-
*/
|
|
12731
|
-
var createCachedIntl = () => {
|
|
12732
|
-
const constructorCache = /* @__PURE__ */ new Map();
|
|
12733
|
-
return new Proxy(Intl, { get: (target, prop, receiver) => {
|
|
12734
|
-
if (constructorCache.has(prop)) return constructorCache.get(prop);
|
|
12735
|
-
const value = Reflect.get(target, prop, receiver);
|
|
12736
|
-
if (typeof value === "function" && typeof prop === "string" && /^[A-Z]/.test(prop)) {
|
|
12737
|
-
const wrapped = createCachedConstructor(value);
|
|
12738
|
-
constructorCache.set(prop, wrapped);
|
|
12739
|
-
return wrapped;
|
|
12740
|
-
}
|
|
12741
|
-
return value;
|
|
12742
|
-
} });
|
|
12743
|
-
};
|
|
12744
|
-
var CachedIntl = createCachedIntl();
|
|
12745
|
-
//#endregion
|
|
12746
|
-
//#region ../@intlayer/core/dist/esm/localization/getLocaleName.mjs
|
|
12747
|
-
var getLocaleName = (displayLocale, targetLocale = displayLocale) => {
|
|
12748
|
-
return new CachedIntl.DisplayNames(targetLocale, { type: "language" }).of(displayLocale) ?? "Unknown locale";
|
|
12749
|
-
};
|
|
12750
|
-
//#endregion
|
|
12751
|
-
//#region ../@intlayer/core/dist/esm/localization/getPathWithoutLocale.mjs
|
|
12752
|
-
/**
|
|
12753
|
-
* Removes the locale segment from the given URL or pathname if present.
|
|
12754
|
-
* Also removes locale from search parameters if present.
|
|
12755
|
-
*
|
|
12756
|
-
* This function get the locales from the configuration if not provided.
|
|
12757
|
-
*
|
|
12758
|
-
* Example:
|
|
12759
|
-
*
|
|
12760
|
-
* ```ts
|
|
12761
|
-
* getPathWithoutLocale('/en/dashboard') // Returns '/dashboard'
|
|
12762
|
-
* getPathWithoutLocale('/fr/dashboard') // Returns '/dashboard'
|
|
12763
|
-
* getPathWithoutLocale('/dashboard') // Returns '/dashboard'
|
|
12764
|
-
* getPathWithoutLocale('dashboard') // Returns 'dashboard'
|
|
12765
|
-
* getPathWithoutLocale('/dashboard?locale=fr') // Returns '/dashboard'
|
|
12766
|
-
* getPathWithoutLocale('https://example.com/en/dashboard') // Returns 'https://example.com/dashboard'
|
|
12767
|
-
* getPathWithoutLocale('https://example.com/fr/dashboard') // Returns 'https://example.com/dashboard'
|
|
12768
|
-
* getPathWithoutLocale('https://example.com/dashboard') // Returns 'https://example.com/dashboard'
|
|
12769
|
-
* getPathWithoutLocale('https://example.com/dashboard?locale=fr') // Returns 'https://example.com/dashboard'
|
|
12770
|
-
* ```
|
|
12771
|
-
*
|
|
12772
|
-
* @param inputUrl - The complete URL string or pathname to process.
|
|
12773
|
-
* @param locales - Optional array of supported locales. Defaults to `localesDefault`.
|
|
12774
|
-
* @returns The URL string or pathname without the locale segment or locale search parameter.
|
|
12775
|
-
*/
|
|
12776
|
-
var getPathWithoutLocale = (inputUrl, locales = configuration?.internationalization?.locales) => {
|
|
12777
|
-
const isAbsoluteUrl = checkIsURLAbsolute(inputUrl);
|
|
12778
|
-
let fixedInputUrl = inputUrl;
|
|
12779
|
-
if (inputUrl?.endsWith("/")) fixedInputUrl = inputUrl.slice(0, -1);
|
|
12780
|
-
const url = isAbsoluteUrl ? new URL(fixedInputUrl) : new URL(fixedInputUrl, "http://example.com");
|
|
12781
|
-
const pathname = url.pathname;
|
|
12782
|
-
if (!pathname.startsWith("/")) url.pathname = `/${pathname}`;
|
|
12783
|
-
const pathSegments = pathname.split("/");
|
|
12784
|
-
const firstSegment = pathSegments[1];
|
|
12785
|
-
if (locales?.includes(firstSegment)) {
|
|
12786
|
-
pathSegments.splice(1, 1);
|
|
12787
|
-
url.pathname = pathSegments.join("/") ?? "/";
|
|
12788
|
-
}
|
|
12789
|
-
const searchParams = new URLSearchParams(url.search);
|
|
12790
|
-
if (searchParams.has("locale")) {
|
|
12791
|
-
searchParams.delete("locale");
|
|
12792
|
-
url.search = searchParams.toString();
|
|
12793
|
-
}
|
|
12794
|
-
if (isAbsoluteUrl) return url.toString();
|
|
12795
|
-
return url.toString().replace("http://example.com", "");
|
|
12796
|
-
};
|
|
12797
|
-
//#endregion
|
|
12798
11678
|
//#region ../@intlayer/core/dist/esm/localization/rewriteUtils.mjs
|
|
12799
11679
|
/**
|
|
12800
11680
|
* Normalizes legacy Record format or extracts specialized rules from RewriteObject.
|
|
@@ -12941,6 +11821,239 @@ var getLocalizedUrl = (url, currentLocale = configuration?.internationalization?
|
|
|
12941
11821
|
return `${baseUrl}${localizedPath}${parsedUrl.search}${parsedUrl.hash}`;
|
|
12942
11822
|
};
|
|
12943
11823
|
//#endregion
|
|
11824
|
+
//#region ../@intlayer/core/dist/esm/localization/localeResolver.mjs
|
|
11825
|
+
/**
|
|
11826
|
+
* Resolves the most specific locale from a user-provided list,
|
|
11827
|
+
* or falls back to the default locale if no match is found.
|
|
11828
|
+
*/
|
|
11829
|
+
var localeResolver = (selectedLocale, locales = configuration?.internationalization?.locales, defaultLocale = configuration?.internationalization?.defaultLocale) => {
|
|
11830
|
+
const requestedLocales = [selectedLocale].flat();
|
|
11831
|
+
const normalize = (locale) => locale.trim().toLowerCase();
|
|
11832
|
+
try {
|
|
11833
|
+
for (const requested of requestedLocales) {
|
|
11834
|
+
const normalizedRequested = normalize(requested);
|
|
11835
|
+
const exactMatch = locales.find((loc) => normalize(loc) === normalizedRequested);
|
|
11836
|
+
if (exactMatch) return exactMatch;
|
|
11837
|
+
const [requestedLang] = normalizedRequested.split("-");
|
|
11838
|
+
const partialMatch = locales.find((loc) => normalize(loc).split("-")[0] === requestedLang);
|
|
11839
|
+
if (partialMatch) return partialMatch;
|
|
11840
|
+
}
|
|
11841
|
+
} catch (_error) {}
|
|
11842
|
+
return defaultLocale;
|
|
11843
|
+
};
|
|
11844
|
+
//#endregion
|
|
11845
|
+
//#region ../@intlayer/core/dist/esm/utils/localeStorage.mjs
|
|
11846
|
+
var buildCookieString = (name, value, attributes) => {
|
|
11847
|
+
const parts = [`${name}=${encodeURIComponent(value)}`];
|
|
11848
|
+
if (attributes.path) parts.push(`Path=${attributes.path}`);
|
|
11849
|
+
if (attributes.domain) parts.push(`Domain=${attributes.domain}`);
|
|
11850
|
+
if (attributes.expires instanceof Date) parts.push(`Expires=${attributes.expires.toUTCString()}`);
|
|
11851
|
+
if (attributes.secure) parts.push("Secure");
|
|
11852
|
+
if (attributes.sameSite) parts.push(`SameSite=${attributes.sameSite}`);
|
|
11853
|
+
return parts.join("; ");
|
|
11854
|
+
};
|
|
11855
|
+
/**
|
|
11856
|
+
* Retrieves the locale from browser storage mechanisms
|
|
11857
|
+
* (cookies, localStorage, sessionStorage).
|
|
11858
|
+
* Does not read from headers — use `getLocaleFromStorageServer` for that.
|
|
11859
|
+
*/
|
|
11860
|
+
var getLocaleFromStorageClient = (options) => {
|
|
11861
|
+
const { routing, internationalization } = configuration;
|
|
11862
|
+
const { locales } = internationalization;
|
|
11863
|
+
const storageAttributes = routing.storage;
|
|
11864
|
+
if (options?.isCookieEnabled === false) return void 0;
|
|
11865
|
+
const isValidLocale = (value) => !!value && locales.includes(value);
|
|
11866
|
+
for (let i = 0; i < storageAttributes.cookies.length; i++) try {
|
|
11867
|
+
const value = options?.getCookie?.(storageAttributes.cookies[i].name);
|
|
11868
|
+
if (isValidLocale(value)) return value;
|
|
11869
|
+
} catch {}
|
|
11870
|
+
for (let i = 0; i < storageAttributes.localStorage.length; i++) try {
|
|
11871
|
+
const value = options?.getLocaleStorage?.(storageAttributes.localStorage[i].name);
|
|
11872
|
+
if (isValidLocale(value)) return value;
|
|
11873
|
+
} catch {}
|
|
11874
|
+
for (let i = 0; i < storageAttributes.sessionStorage.length; i++) try {
|
|
11875
|
+
const value = options?.getSessionStorage?.(storageAttributes.sessionStorage[i].name);
|
|
11876
|
+
if (isValidLocale(value)) return value;
|
|
11877
|
+
} catch {}
|
|
11878
|
+
};
|
|
11879
|
+
/**
|
|
11880
|
+
* Stores the locale in browser storage mechanisms
|
|
11881
|
+
* (cookies, localStorage, sessionStorage).
|
|
11882
|
+
* Does not write to headers — use `setLocaleInStorageServer` for that.
|
|
11883
|
+
*/
|
|
11884
|
+
var setLocaleInStorageClient = (locale, options) => {
|
|
11885
|
+
const { routing } = configuration;
|
|
11886
|
+
const storageAttributes = routing.storage;
|
|
11887
|
+
if (options?.isCookieEnabled === false) return;
|
|
11888
|
+
for (let i = 0; i < storageAttributes.cookies.length; i++) {
|
|
11889
|
+
const { name, attributes } = storageAttributes.cookies[i];
|
|
11890
|
+
try {
|
|
11891
|
+
if (options?.setCookieStore) options.setCookieStore(name, locale, {
|
|
11892
|
+
...attributes,
|
|
11893
|
+
expires: attributes.expires instanceof Date ? attributes.expires.getTime() : attributes.expires
|
|
11894
|
+
});
|
|
11895
|
+
} catch {
|
|
11896
|
+
try {
|
|
11897
|
+
if (options?.setCookieString) options.setCookieString(name, buildCookieString(name, locale, attributes));
|
|
11898
|
+
} catch {}
|
|
11899
|
+
}
|
|
11900
|
+
}
|
|
11901
|
+
if (options?.setLocaleStorage) for (let i = 0; i < storageAttributes.localStorage.length; i++) {
|
|
11902
|
+
const { name } = storageAttributes.localStorage[i];
|
|
11903
|
+
try {
|
|
11904
|
+
if (!(options?.overwrite ?? true) && options?.getLocaleStorage) {
|
|
11905
|
+
if (options.getLocaleStorage(name)) continue;
|
|
11906
|
+
}
|
|
11907
|
+
options.setLocaleStorage(name, locale);
|
|
11908
|
+
} catch {}
|
|
11909
|
+
}
|
|
11910
|
+
if (options?.setSessionStorage) for (let i = 0; i < storageAttributes.sessionStorage.length; i++) {
|
|
11911
|
+
const { name } = storageAttributes.sessionStorage[i];
|
|
11912
|
+
try {
|
|
11913
|
+
if (!(options?.overwrite ?? true) && options?.getSessionStorage) {
|
|
11914
|
+
if (options.getSessionStorage(name)) continue;
|
|
11915
|
+
}
|
|
11916
|
+
options.setSessionStorage(name, locale);
|
|
11917
|
+
} catch {}
|
|
11918
|
+
}
|
|
11919
|
+
};
|
|
11920
|
+
//#endregion
|
|
11921
|
+
//#region ../@intlayer/core/dist/esm/localization/getBrowserLocale.mjs
|
|
11922
|
+
var localeStorageOptions = {
|
|
11923
|
+
getCookie: (name) => document.cookie.split(";").find((c) => c.trim().startsWith(`${name}=`))?.split("=")[1],
|
|
11924
|
+
getLocaleStorage: (name) => localStorage.getItem(name),
|
|
11925
|
+
getSessionStorage: (name) => sessionStorage.getItem(name),
|
|
11926
|
+
isCookieEnabled: true,
|
|
11927
|
+
setCookieStore: (name, value, attributes) => cookieStore.set({
|
|
11928
|
+
name,
|
|
11929
|
+
value,
|
|
11930
|
+
path: attributes.path,
|
|
11931
|
+
domain: attributes.domain,
|
|
11932
|
+
expires: attributes.expires,
|
|
11933
|
+
sameSite: attributes.sameSite
|
|
11934
|
+
}),
|
|
11935
|
+
setCookieString: (_name, cookie) => {
|
|
11936
|
+
document.cookie = cookie;
|
|
11937
|
+
},
|
|
11938
|
+
setSessionStorage: (name, value) => sessionStorage.setItem(name, value),
|
|
11939
|
+
setLocaleStorage: (name, value) => localStorage.setItem(name, value)
|
|
11940
|
+
};
|
|
11941
|
+
//#endregion
|
|
11942
|
+
//#region ../@intlayer/core/dist/esm/localization/getHTMLTextDir.mjs
|
|
11943
|
+
/**
|
|
11944
|
+
* Returns the text direction of the given locale.
|
|
11945
|
+
*
|
|
11946
|
+
* Example:
|
|
11947
|
+
*
|
|
11948
|
+
* getHTMLTextDir('en-US') // 'ltr'
|
|
11949
|
+
* getHTMLTextDir('en') // 'ltr'
|
|
11950
|
+
* getHTMLTextDir('fr-CA') // 'ltr'
|
|
11951
|
+
* getHTMLTextDir('fr') // 'ltr'
|
|
11952
|
+
*
|
|
11953
|
+
* @param locale The locale to get the text direction for.
|
|
11954
|
+
* @returns The text direction of the given locale.
|
|
11955
|
+
*/
|
|
11956
|
+
var getHTMLTextDir = (locale) => {
|
|
11957
|
+
if (!locale) return "ltr";
|
|
11958
|
+
try {
|
|
11959
|
+
const localeInfo = new Intl.Locale(locale);
|
|
11960
|
+
if ("getTextInfo" in localeInfo) return localeInfo.getTextInfo().direction;
|
|
11961
|
+
if ("textInfo" in localeInfo) return localeInfo.textInfo.direction;
|
|
11962
|
+
const maximized = localeInfo.maximize();
|
|
11963
|
+
return [
|
|
11964
|
+
"Arab",
|
|
11965
|
+
"Hebr",
|
|
11966
|
+
"Thaa",
|
|
11967
|
+
"Syrc",
|
|
11968
|
+
"Mand",
|
|
11969
|
+
"Adlm",
|
|
11970
|
+
"Rohg",
|
|
11971
|
+
"Nkoo"
|
|
11972
|
+
].includes(maximized.script ?? "") ? "rtl" : "ltr";
|
|
11973
|
+
} catch {
|
|
11974
|
+
return "ltr";
|
|
11975
|
+
}
|
|
11976
|
+
};
|
|
11977
|
+
//#endregion
|
|
11978
|
+
//#region ../@intlayer/core/dist/esm/utils/intl.mjs
|
|
11979
|
+
/**
|
|
11980
|
+
* Cached Intl helper – drop‑in replacement for the global `Intl` object.
|
|
11981
|
+
* ‑‑‑
|
|
11982
|
+
* • Uses a `Proxy` to lazily wrap every *constructor* hanging off `Intl` (NumberFormat, DateTimeFormat, …).
|
|
11983
|
+
* • Each wrapped constructor keeps an in‑memory cache keyed by `[locales, options]` so that identical requests
|
|
11984
|
+
* reuse the same heavy instance instead of reparsing CLDR data every time.
|
|
11985
|
+
* • A polyfill warning for `Intl.DisplayNames` is emitted only once and only in dev.
|
|
11986
|
+
* • The public API is fully type‑safe and mirrors the native `Intl` surface exactly –
|
|
11987
|
+
* you can treat `CachedIntl` just like the built‑in `Intl`.
|
|
11988
|
+
*
|
|
11989
|
+
* Usage @example:
|
|
11990
|
+
* ---------------
|
|
11991
|
+
* ```ts
|
|
11992
|
+
* import { CachedIntl } from "./cached-intl";
|
|
11993
|
+
*
|
|
11994
|
+
* const nf = CachedIntl.NumberFormat("en-US", { style: "currency", currency: "USD" });
|
|
11995
|
+
* console.log(nf.format(1234));
|
|
11996
|
+
*
|
|
11997
|
+
* const dn = CachedIntl.DisplayNames(["fr"], { type: "language" });
|
|
11998
|
+
* console.log(dn.of("en")); * → "anglais"
|
|
11999
|
+
*
|
|
12000
|
+
* You can also spin up an isolated instance with its own caches (handy in test suites):
|
|
12001
|
+
* const TestIntl = createCachedIntl();
|
|
12002
|
+
* ```
|
|
12003
|
+
*/
|
|
12004
|
+
var MAX_CACHE_SIZE = 50;
|
|
12005
|
+
var cache = /* @__PURE__ */ new Map();
|
|
12006
|
+
/**
|
|
12007
|
+
* Generic caching instantiator for Intl constructors.
|
|
12008
|
+
*/
|
|
12009
|
+
var getCachedIntl = (Ctor, locale, options) => {
|
|
12010
|
+
const resLoc = locale ?? configuration?.internationalization?.defaultLocale;
|
|
12011
|
+
const key = `${resLoc}|${options ? JSON.stringify(options) : ""}`;
|
|
12012
|
+
let ctorCache = cache.get(Ctor);
|
|
12013
|
+
if (!ctorCache) {
|
|
12014
|
+
ctorCache = /* @__PURE__ */ new Map();
|
|
12015
|
+
cache.set(Ctor, ctorCache);
|
|
12016
|
+
}
|
|
12017
|
+
let instance = ctorCache.get(key);
|
|
12018
|
+
if (!instance) {
|
|
12019
|
+
if (ctorCache.size > MAX_CACHE_SIZE) ctorCache.clear();
|
|
12020
|
+
instance = new Ctor(resLoc, options);
|
|
12021
|
+
ctorCache.set(key, instance);
|
|
12022
|
+
}
|
|
12023
|
+
return instance;
|
|
12024
|
+
};
|
|
12025
|
+
var CachedIntl = {
|
|
12026
|
+
Collator: function Collator(locales, options) {
|
|
12027
|
+
return getCachedIntl(Intl.Collator, locales, options);
|
|
12028
|
+
},
|
|
12029
|
+
DateTimeFormat: function DateTimeFormat(locales, options) {
|
|
12030
|
+
return getCachedIntl(Intl.DateTimeFormat, locales, options);
|
|
12031
|
+
},
|
|
12032
|
+
DisplayNames: function DisplayNames(locales, options) {
|
|
12033
|
+
return getCachedIntl(Intl.DisplayNames, locales, options);
|
|
12034
|
+
},
|
|
12035
|
+
ListFormat: function ListFormat(locales, options) {
|
|
12036
|
+
return getCachedIntl(Intl.ListFormat, locales, options);
|
|
12037
|
+
},
|
|
12038
|
+
NumberFormat: function NumberFormat(locales, options) {
|
|
12039
|
+
return getCachedIntl(Intl.NumberFormat, locales, options);
|
|
12040
|
+
},
|
|
12041
|
+
PluralRules: function PluralRules(locales, options) {
|
|
12042
|
+
return getCachedIntl(Intl.PluralRules, locales, options);
|
|
12043
|
+
},
|
|
12044
|
+
RelativeTimeFormat: function RelativeTimeFormat(locales, options) {
|
|
12045
|
+
return getCachedIntl(Intl.RelativeTimeFormat, locales, options);
|
|
12046
|
+
},
|
|
12047
|
+
Segmenter: function Segmenter(locales, options) {
|
|
12048
|
+
return getCachedIntl(Intl.Segmenter, locales, options);
|
|
12049
|
+
}
|
|
12050
|
+
};
|
|
12051
|
+
//#endregion
|
|
12052
|
+
//#region ../@intlayer/core/dist/esm/localization/getLocaleName.mjs
|
|
12053
|
+
var getLocaleName = (displayLocale, targetLocale = displayLocale) => {
|
|
12054
|
+
return new CachedIntl.DisplayNames(targetLocale, { type: "language" }).of(displayLocale) ?? "Unknown locale";
|
|
12055
|
+
};
|
|
12056
|
+
//#endregion
|
|
12944
12057
|
//#region ../@intlayer/core/dist/esm/utils/isValidReactElement.mjs
|
|
12945
12058
|
/**
|
|
12946
12059
|
* Verifies the object is a ReactElement.
|
|
@@ -12961,11 +12074,11 @@ var isSameKeyPath = (keyPath1, keyPath2) => keyPath1.every((element, index) => k
|
|
|
12961
12074
|
/**
|
|
12962
12075
|
* Get the locale cookie
|
|
12963
12076
|
*/
|
|
12964
|
-
var localeInStorage =
|
|
12077
|
+
var localeInStorage = getLocaleFromStorageClient(localeStorageOptions);
|
|
12965
12078
|
/**
|
|
12966
12079
|
* Set the locale cookie
|
|
12967
12080
|
*/
|
|
12968
|
-
var setLocaleInStorage = (locale, isCookieEnabled) =>
|
|
12081
|
+
var setLocaleInStorage = (locale, isCookieEnabled) => setLocaleInStorageClient(locale, {
|
|
12969
12082
|
...localeStorageOptions,
|
|
12970
12083
|
isCookieEnabled
|
|
12971
12084
|
});
|
|
@@ -13022,7 +12135,7 @@ var IntlayerProviderContent = ({ locale: localeProp, defaultLocale: defaultLocal
|
|
|
13022
12135
|
* If the locale is not provided, it will use the locale from the client context
|
|
13023
12136
|
*/
|
|
13024
12137
|
var useDictionary = (dictionary, locale) => {
|
|
13025
|
-
const { locale: currentLocale } = (0, import_react.useContext)(IntlayerClientContext);
|
|
12138
|
+
const { locale: currentLocale } = (0, import_react.useContext)(IntlayerClientContext) ?? {};
|
|
13026
12139
|
return (0, import_react.useMemo)(() => {
|
|
13027
12140
|
return getDictionary(dictionary, locale ?? currentLocale);
|
|
13028
12141
|
}, [
|
|
@@ -13058,7 +12171,7 @@ var useDictionary = (dictionary, locale) => {
|
|
|
13058
12171
|
*/
|
|
13059
12172
|
var useLocale = ({ isCookieEnabled, onLocaleChange } = {}) => {
|
|
13060
12173
|
const { defaultLocale, locales: availableLocales } = configuration?.internationalization ?? {};
|
|
13061
|
-
const { locale, setLocale: setLocaleState, isCookieEnabled: isCookieEnabledContext } = (0, import_react.useContext)(IntlayerClientContext);
|
|
12174
|
+
const { locale, setLocale: setLocaleState, isCookieEnabled: isCookieEnabledContext } = (0, import_react.useContext)(IntlayerClientContext) ?? {};
|
|
13062
12175
|
return {
|
|
13063
12176
|
locale,
|
|
13064
12177
|
defaultLocale,
|
|
@@ -14147,6 +13260,7 @@ function Router({ basename: basenameProp = "/", children = null, location: locat
|
|
|
14147
13260
|
function Routes({ children, location }) {
|
|
14148
13261
|
return useRoutes(createRoutesFromChildren(children), location);
|
|
14149
13262
|
}
|
|
13263
|
+
import_react.Component;
|
|
14150
13264
|
function createRoutesFromChildren(children, parentPath = []) {
|
|
14151
13265
|
let routes = [];
|
|
14152
13266
|
import_react.Children.forEach(children, (element, index) => {
|
|
@@ -14590,6 +13704,7 @@ function mergeRefs(...refs) {
|
|
|
14590
13704
|
});
|
|
14591
13705
|
};
|
|
14592
13706
|
}
|
|
13707
|
+
import_react.Component;
|
|
14593
13708
|
var isBrowser2 = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined";
|
|
14594
13709
|
try {
|
|
14595
13710
|
if (isBrowser2) window.__reactRouterVersion = "7.13.1";
|
|
@@ -16990,7 +16105,7 @@ var getDefaultConfig = () => {
|
|
|
16990
16105
|
var twMerge = /* @__PURE__ */ createTailwindMerge(getDefaultConfig);
|
|
16991
16106
|
//#endregion
|
|
16992
16107
|
//#region ../@intlayer/design-system/dist/esm/utils/cn.mjs
|
|
16993
|
-
var cn$
|
|
16108
|
+
var cn$1 = (...inputs) => twMerge(clsx(inputs));
|
|
16994
16109
|
typeof window !== "undefined" && window.document && window.document.createElement;
|
|
16995
16110
|
function composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {
|
|
16996
16111
|
return function handleEvent(event) {
|
|
@@ -18299,9 +17414,9 @@ var cva = (base, config) => (props) => {
|
|
|
18299
17414
|
}, []), props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
|
|
18300
17415
|
};
|
|
18301
17416
|
//#endregion
|
|
18302
|
-
//#region ../../node_modules/.bun/lucide-react@1.0
|
|
17417
|
+
//#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/shared/src/utils/mergeClasses.js
|
|
18303
17418
|
/**
|
|
18304
|
-
* @license lucide-react v1.0
|
|
17419
|
+
* @license lucide-react v1.7.0 - ISC
|
|
18305
17420
|
*
|
|
18306
17421
|
* This source code is licensed under the ISC license.
|
|
18307
17422
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -18310,27 +17425,27 @@ var mergeClasses = (...classes) => classes.filter((className, index, array) => {
|
|
|
18310
17425
|
return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
|
|
18311
17426
|
}).join(" ").trim();
|
|
18312
17427
|
//#endregion
|
|
18313
|
-
//#region ../../node_modules/.bun/lucide-react@1.0
|
|
17428
|
+
//#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/shared/src/utils/toKebabCase.js
|
|
18314
17429
|
/**
|
|
18315
|
-
* @license lucide-react v1.0
|
|
17430
|
+
* @license lucide-react v1.7.0 - ISC
|
|
18316
17431
|
*
|
|
18317
17432
|
* This source code is licensed under the ISC license.
|
|
18318
17433
|
* See the LICENSE file in the root directory of this source tree.
|
|
18319
17434
|
*/
|
|
18320
17435
|
var toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
18321
17436
|
//#endregion
|
|
18322
|
-
//#region ../../node_modules/.bun/lucide-react@1.0
|
|
17437
|
+
//#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/shared/src/utils/toCamelCase.js
|
|
18323
17438
|
/**
|
|
18324
|
-
* @license lucide-react v1.0
|
|
17439
|
+
* @license lucide-react v1.7.0 - ISC
|
|
18325
17440
|
*
|
|
18326
17441
|
* This source code is licensed under the ISC license.
|
|
18327
17442
|
* See the LICENSE file in the root directory of this source tree.
|
|
18328
17443
|
*/
|
|
18329
17444
|
var toCamelCase = (string) => string.replace(/^([A-Z])|[\s-_]+(\w)/g, (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase());
|
|
18330
17445
|
//#endregion
|
|
18331
|
-
//#region ../../node_modules/.bun/lucide-react@1.0
|
|
17446
|
+
//#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/shared/src/utils/toPascalCase.js
|
|
18332
17447
|
/**
|
|
18333
|
-
* @license lucide-react v1.0
|
|
17448
|
+
* @license lucide-react v1.7.0 - ISC
|
|
18334
17449
|
*
|
|
18335
17450
|
* This source code is licensed under the ISC license.
|
|
18336
17451
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -18340,9 +17455,9 @@ var toPascalCase = (string) => {
|
|
|
18340
17455
|
return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
|
|
18341
17456
|
};
|
|
18342
17457
|
//#endregion
|
|
18343
|
-
//#region ../../node_modules/.bun/lucide-react@1.0
|
|
17458
|
+
//#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/defaultAttributes.js
|
|
18344
17459
|
/**
|
|
18345
|
-
* @license lucide-react v1.0
|
|
17460
|
+
* @license lucide-react v1.7.0 - ISC
|
|
18346
17461
|
*
|
|
18347
17462
|
* This source code is licensed under the ISC license.
|
|
18348
17463
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -18359,9 +17474,9 @@ var defaultAttributes = {
|
|
|
18359
17474
|
strokeLinejoin: "round"
|
|
18360
17475
|
};
|
|
18361
17476
|
//#endregion
|
|
18362
|
-
//#region ../../node_modules/.bun/lucide-react@1.0
|
|
17477
|
+
//#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/shared/src/utils/hasA11yProp.js
|
|
18363
17478
|
/**
|
|
18364
|
-
* @license lucide-react v1.0
|
|
17479
|
+
* @license lucide-react v1.7.0 - ISC
|
|
18365
17480
|
*
|
|
18366
17481
|
* This source code is licensed under the ISC license.
|
|
18367
17482
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -18371,9 +17486,9 @@ var hasA11yProp = (props) => {
|
|
|
18371
17486
|
return false;
|
|
18372
17487
|
};
|
|
18373
17488
|
//#endregion
|
|
18374
|
-
//#region ../../node_modules/.bun/lucide-react@1.0
|
|
17489
|
+
//#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/context.js
|
|
18375
17490
|
/**
|
|
18376
|
-
* @license lucide-react v1.0
|
|
17491
|
+
* @license lucide-react v1.7.0 - ISC
|
|
18377
17492
|
*
|
|
18378
17493
|
* This source code is licensed under the ISC license.
|
|
18379
17494
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -18381,9 +17496,9 @@ var hasA11yProp = (props) => {
|
|
|
18381
17496
|
var LucideContext = (0, import_react.createContext)({});
|
|
18382
17497
|
var useLucideContext = () => (0, import_react.useContext)(LucideContext);
|
|
18383
17498
|
//#endregion
|
|
18384
|
-
//#region ../../node_modules/.bun/lucide-react@1.0
|
|
17499
|
+
//#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/Icon.js
|
|
18385
17500
|
/**
|
|
18386
|
-
* @license lucide-react v1.0
|
|
17501
|
+
* @license lucide-react v1.7.0 - ISC
|
|
18387
17502
|
*
|
|
18388
17503
|
* This source code is licensed under the ISC license.
|
|
18389
17504
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -18404,9 +17519,9 @@ var Icon$1 = (0, import_react.forwardRef)(({ color, size, strokeWidth, absoluteS
|
|
|
18404
17519
|
}, [...iconNode.map(([tag, attrs]) => (0, import_react.createElement)(tag, attrs)), ...Array.isArray(children) ? children : [children]]);
|
|
18405
17520
|
});
|
|
18406
17521
|
//#endregion
|
|
18407
|
-
//#region ../../node_modules/.bun/lucide-react@1.0
|
|
17522
|
+
//#region ../../node_modules/.bun/lucide-react@1.7.0+b1ab299f0a400331/node_modules/lucide-react/dist/esm/createLucideIcon.js
|
|
18408
17523
|
/**
|
|
18409
|
-
* @license lucide-react v1.0
|
|
17524
|
+
* @license lucide-react v1.7.0 - ISC
|
|
18410
17525
|
*
|
|
18411
17526
|
* This source code is licensed under the ISC license.
|
|
18412
17527
|
* See the LICENSE file in the root directory of this source tree.
|
|
@@ -18610,6 +17725,13 @@ var MoveVertical = createLucideIcon("move-vertical", [
|
|
|
18610
17725
|
key: "ybng9g"
|
|
18611
17726
|
}]
|
|
18612
17727
|
]);
|
|
17728
|
+
var Pencil = createLucideIcon("pencil", [["path", {
|
|
17729
|
+
d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",
|
|
17730
|
+
key: "1a8usu"
|
|
17731
|
+
}], ["path", {
|
|
17732
|
+
d: "m15 5 4 4",
|
|
17733
|
+
key: "1mk7zo"
|
|
17734
|
+
}]]);
|
|
18613
17735
|
var PencilRuler = createLucideIcon("pencil-ruler", [
|
|
18614
17736
|
["path", {
|
|
18615
17737
|
d: "M13 7 8.7 2.7a2.41 2.41 0 0 0-3.4 0L2.7 5.3a2.41 2.41 0 0 0 0 3.4L7 13",
|
|
@@ -18636,13 +17758,6 @@ var PencilRuler = createLucideIcon("pencil-ruler", [
|
|
|
18636
17758
|
key: "1mk7zo"
|
|
18637
17759
|
}]
|
|
18638
17760
|
]);
|
|
18639
|
-
var Pencil = createLucideIcon("pencil", [["path", {
|
|
18640
|
-
d: "M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",
|
|
18641
|
-
key: "1a8usu"
|
|
18642
|
-
}], ["path", {
|
|
18643
|
-
d: "m15 5 4 4",
|
|
18644
|
-
key: "1mk7zo"
|
|
18645
|
-
}]]);
|
|
18646
17761
|
var Plus = createLucideIcon("plus", [["path", {
|
|
18647
17762
|
d: "M5 12h14",
|
|
18648
17763
|
key: "1ays0h"
|
|
@@ -18739,7 +17854,7 @@ var X$1 = createLucideIcon("x", [["path", {
|
|
|
18739
17854
|
//#region ../@intlayer/design-system/dist/esm/components/Toaster/Toast.mjs
|
|
18740
17855
|
var ToastProvider = dist_exports;
|
|
18741
17856
|
var ToastViewport = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Viewport$1, {
|
|
18742
|
-
className: cn$
|
|
17857
|
+
className: cn$1("fixed top-0 z-100 flex max-h-screen w-full flex-col-reverse p-4 sm:top-auto sm:right-0 sm:bottom-0 sm:flex-col md:max-w-[420px]", className),
|
|
18743
17858
|
...props
|
|
18744
17859
|
});
|
|
18745
17860
|
/**
|
|
@@ -18809,12 +17924,12 @@ var toastVariants = cva("group data-[state=closed]:fade-out-80 data-[state=close
|
|
|
18809
17924
|
*/
|
|
18810
17925
|
var Toast = ({ className, variant, ...props }) => {
|
|
18811
17926
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Root2$2, {
|
|
18812
|
-
className: cn$
|
|
17927
|
+
className: cn$1(toastVariants({ variant }), className),
|
|
18813
17928
|
...props
|
|
18814
17929
|
});
|
|
18815
17930
|
};
|
|
18816
17931
|
var ToastClose = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Close, {
|
|
18817
|
-
className: cn$
|
|
17932
|
+
className: cn$1("absolute top-1 right-1 rounded-md p-1 text-text/50 opacity-0 transition-opacity hover:text-text/80 focus:opacity-100 focus:outline-hidden focus:ring-1 group-hover:opacity-100 group-[.destructive]:text-red-300 group-[.destructive]:focus:ring-red-400 group-[.destructive]:focus:ring-offset-red-600 group-[.destructive]:hover:text-red-50", className),
|
|
18818
17933
|
"toast-close": "",
|
|
18819
17934
|
...props,
|
|
18820
17935
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(X$1, { className: "size-5" })
|
|
@@ -18838,7 +17953,7 @@ var ToastClose = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_run
|
|
|
18838
17953
|
* ```
|
|
18839
17954
|
*/
|
|
18840
17955
|
var ToastTitle = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Title, {
|
|
18841
|
-
className: cn$
|
|
17956
|
+
className: cn$1("font-semibold text-sm [&+div]:text-xs", className),
|
|
18842
17957
|
...props
|
|
18843
17958
|
});
|
|
18844
17959
|
/**
|
|
@@ -18869,7 +17984,7 @@ var ToastTitle = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_run
|
|
|
18869
17984
|
* ```
|
|
18870
17985
|
*/
|
|
18871
17986
|
var ToastDescription = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Description, {
|
|
18872
|
-
className: cn$
|
|
17987
|
+
className: cn$1("text-sm opacity-90", className),
|
|
18873
17988
|
...props
|
|
18874
17989
|
});
|
|
18875
17990
|
//#endregion
|
|
@@ -18987,7 +18102,7 @@ var reducer = (state, action) => {
|
|
|
18987
18102
|
};
|
|
18988
18103
|
return {
|
|
18989
18104
|
...state,
|
|
18990
|
-
toasts: state.toasts.filter((
|
|
18105
|
+
toasts: state.toasts.filter((toast) => toast.id !== action.toastId)
|
|
18991
18106
|
};
|
|
18992
18107
|
}
|
|
18993
18108
|
};
|
|
@@ -19360,7 +18475,7 @@ var ContainerRoundedSize = /* @__PURE__ */ function(ContainerRoundedSize) {
|
|
|
19360
18475
|
* @param props - Additional HTML div attributes including ARIA attributes
|
|
19361
18476
|
*/
|
|
19362
18477
|
var Container = ({ children, roundedSize, padding, transparency, separator, className, border, borderColor, background, gap, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
19363
|
-
className: cn$
|
|
18478
|
+
className: cn$1(containerVariants$1({
|
|
19364
18479
|
roundedSize,
|
|
19365
18480
|
transparency,
|
|
19366
18481
|
padding,
|
|
@@ -19435,7 +18550,7 @@ var Spinner = ({ className, strokeWidth = 4 }) => /* @__PURE__ */ (0, import_jsx
|
|
|
19435
18550
|
stroke: "currentColor",
|
|
19436
18551
|
role: "img",
|
|
19437
18552
|
"aria-label": "Spinner",
|
|
19438
|
-
className: cn$
|
|
18553
|
+
className: cn$1("size-full", className),
|
|
19439
18554
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("g", {
|
|
19440
18555
|
fill: "none",
|
|
19441
18556
|
fillRule: "evenodd",
|
|
@@ -19581,14 +18696,14 @@ var Spinner = ({ className, strokeWidth = 4 }) => /* @__PURE__ */ (0, import_jsx
|
|
|
19581
18696
|
var Loader = ({ children, isLoading = true, keepChildren = false, className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: isLoading && keepChildren ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
19582
18697
|
className: "relative size-full",
|
|
19583
18698
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
19584
|
-
className: cn$
|
|
18699
|
+
className: cn$1("absolute top-0 left-0 flex size-full max-h-screen max-w-[100vw] flex-1 items-center justify-center", className),
|
|
19585
18700
|
role: "status",
|
|
19586
18701
|
"aria-label": "Animated icon, meaning that the website is processing",
|
|
19587
18702
|
...props,
|
|
19588
18703
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Spinner, { className: "size-10 max-h-full max-w-full" })
|
|
19589
18704
|
}), children]
|
|
19590
18705
|
}) : isLoading ? /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
19591
|
-
className: cn$
|
|
18706
|
+
className: cn$1("flex size-full max-h-screen max-w-[100vw] flex-1 items-center justify-center", className),
|
|
19592
18707
|
role: "status",
|
|
19593
18708
|
"aria-label": "Animated icon, meaning that the website is processing",
|
|
19594
18709
|
...props,
|
|
@@ -19839,16 +18954,16 @@ var Button = ({ variant, size, color, children, Icon, IconRight, iconClassName,
|
|
|
19839
18954
|
Icon && !isLoading && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, {
|
|
19840
18955
|
className: buttonIconVariants({
|
|
19841
18956
|
size,
|
|
19842
|
-
className: cn$
|
|
18957
|
+
className: cn$1(!isSquareButton && "mr-3", iconClassName)
|
|
19843
18958
|
}),
|
|
19844
18959
|
"aria-hidden": "true"
|
|
19845
18960
|
}),
|
|
19846
18961
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
19847
|
-
className: cn$
|
|
18962
|
+
className: cn$1("flex items-center justify-center transition-[width] duration-300", isLoading && size === ButtonSize.SM && "w-3", isLoading && size === ButtonSize.MD && "w-4", isLoading && size === ButtonSize.LG && "w-5", isLoading && size === ButtonSize.XL && "w-6"),
|
|
19848
18963
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Loader, {
|
|
19849
18964
|
className: buttonIconVariants({
|
|
19850
18965
|
size,
|
|
19851
|
-
className: cn$
|
|
18966
|
+
className: cn$1(!isSquareButton && "mr-3", iconClassName)
|
|
19852
18967
|
}),
|
|
19853
18968
|
isLoading,
|
|
19854
18969
|
"aria-hidden": "true",
|
|
@@ -19866,7 +18981,7 @@ var Button = ({ variant, size, color, children, Icon, IconRight, iconClassName,
|
|
|
19866
18981
|
IconRight && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(IconRight, {
|
|
19867
18982
|
className: buttonIconVariants({
|
|
19868
18983
|
size,
|
|
19869
|
-
className: cn$
|
|
18984
|
+
className: cn$1(!isSquareButton && "ml-3", iconClassName)
|
|
19870
18985
|
}),
|
|
19871
18986
|
"aria-hidden": "true"
|
|
19872
18987
|
})
|
|
@@ -20003,11 +19118,11 @@ var MaxHeightSmoother = ({ children, isHidden, className = "", isOverable = fals
|
|
|
20003
19118
|
"aria-hidden": isFocusable ? isHidden : void 0,
|
|
20004
19119
|
tabIndex: isFocusable ? 0 : void 0,
|
|
20005
19120
|
role: isFocusable ? "button" : "none",
|
|
20006
|
-
className: cn$
|
|
19121
|
+
className: cn$1("group/height-smoother relative grid w-full grid-rows-[0fr] overflow-hidden transition-all duration-700 ease-in-out", typeof isHidden !== "undefined" && !isHidden && "grid-rows-[1fr] overflow-x-auto", isOverable && "hover:grid-rows-[1fr] hover:overflow-x-auto", isFocusable && "focus-within:grid-rows-[1fr] focus-within:overflow-x-auto focus:grid-rows-[1fr] focus:overflow-x-auto", className),
|
|
20007
19122
|
...props,
|
|
20008
19123
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
20009
19124
|
style: { minHeight: `${minHeight}px` },
|
|
20010
|
-
className: cn$
|
|
19125
|
+
className: cn$1(isOverable && "group-hover/height-smoother:visible", isFocusable && "group-focus/height-smoother:visible", className),
|
|
20011
19126
|
children
|
|
20012
19127
|
})
|
|
20013
19128
|
});
|
|
@@ -20079,9 +19194,9 @@ var Accordion = ({ children, header, isOpen, defaultIsOpen = false, onToggle, on
|
|
|
20079
19194
|
onKeyDown: handleKeyDown,
|
|
20080
19195
|
disabled,
|
|
20081
19196
|
isFullWidth: true,
|
|
20082
|
-
className: cn$
|
|
19197
|
+
className: cn$1("flex items-center justify-between gap-2", headerClassName),
|
|
20083
19198
|
IconRight: ChevronDown,
|
|
20084
|
-
iconClassName: cn$
|
|
19199
|
+
iconClassName: cn$1("transform transition-transform duration-500 ease-in-out", isExpandedState ? "rotate-0" : "-rotate-180"),
|
|
20085
19200
|
"aria-expanded": isExpandedState,
|
|
20086
19201
|
"aria-controls": generatedContentId,
|
|
20087
19202
|
"aria-label": ariaLabel,
|
|
@@ -20213,7 +19328,7 @@ var Badge = ({ className, variant = BadgeVariant.DEFAULT, color = BadgeColor.PRI
|
|
|
20213
19328
|
onDismiss?.();
|
|
20214
19329
|
};
|
|
20215
19330
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Component, {
|
|
20216
|
-
className: cn$
|
|
19331
|
+
className: cn$1(badgeVariants({
|
|
20217
19332
|
variant,
|
|
20218
19333
|
color,
|
|
20219
19334
|
size
|
|
@@ -20457,7 +19572,7 @@ var Link = (props) => {
|
|
|
20457
19572
|
target,
|
|
20458
19573
|
"aria-current": isActive ? "page" : void 0,
|
|
20459
19574
|
suppressHydrationWarning: true,
|
|
20460
|
-
className: cn$
|
|
19575
|
+
className: cn$1(linkVariants({
|
|
20461
19576
|
variant,
|
|
20462
19577
|
color,
|
|
20463
19578
|
roundedSize,
|
|
@@ -20590,7 +19705,7 @@ var ButtonLink = ({ children: text, onClick, color, position, className, ...prop
|
|
|
20590
19705
|
*/
|
|
20591
19706
|
var Span = ({ children, position, className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
20592
19707
|
itemProp: "item",
|
|
20593
|
-
className: cn$
|
|
19708
|
+
className: cn$1("inline-flex items-center", "font-medium text-neutral-700", "transition-colors duration-200", className),
|
|
20594
19709
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
20595
19710
|
itemProp: "name",
|
|
20596
19711
|
...props,
|
|
@@ -20635,7 +19750,7 @@ var Breadcrumb = ({ links, className, color = LinkColor.TEXT, locale, elementTyp
|
|
|
20635
19750
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("nav", {
|
|
20636
19751
|
"aria-label": ariaLabel,
|
|
20637
19752
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ol", {
|
|
20638
|
-
className: cn$
|
|
19753
|
+
className: cn$1(breadcrumbVariants({
|
|
20639
19754
|
size,
|
|
20640
19755
|
spacing
|
|
20641
19756
|
}), className),
|
|
@@ -20664,14 +19779,14 @@ var Breadcrumb = ({ links, className, color = LinkColor.TEXT, locale, elementTyp
|
|
|
20664
19779
|
"aria-hidden": "true",
|
|
20665
19780
|
className: "flex items-center",
|
|
20666
19781
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
20667
|
-
className: cn$
|
|
19782
|
+
className: cn$1(separatorColorClass),
|
|
20668
19783
|
children: separator
|
|
20669
19784
|
})
|
|
20670
19785
|
})] }, `truncated-${text}`);
|
|
20671
19786
|
let section = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Span, {
|
|
20672
19787
|
position: index + 1,
|
|
20673
19788
|
"aria-current": ariaCurrent,
|
|
20674
|
-
className: cn$
|
|
19789
|
+
className: cn$1("transition-colors duration-200", isActive && "text-neutral-900"),
|
|
20675
19790
|
children: text
|
|
20676
19791
|
}, text);
|
|
20677
19792
|
if (isLink) section = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(LinkLink, {
|
|
@@ -20680,7 +19795,7 @@ var Breadcrumb = ({ links, className, color = LinkColor.TEXT, locale, elementTyp
|
|
|
20680
19795
|
position: index + 1,
|
|
20681
19796
|
locale,
|
|
20682
19797
|
"aria-current": ariaCurrent,
|
|
20683
|
-
className: cn$
|
|
19798
|
+
className: cn$1(isActive && "cursor-default text-neutral-900"),
|
|
20684
19799
|
children: text
|
|
20685
19800
|
}, text);
|
|
20686
19801
|
else if (isButton) section = /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ButtonLink, {
|
|
@@ -20688,7 +19803,7 @@ var Breadcrumb = ({ links, className, color = LinkColor.TEXT, locale, elementTyp
|
|
|
20688
19803
|
color,
|
|
20689
19804
|
position: index + 1,
|
|
20690
19805
|
"aria-current": ariaCurrent,
|
|
20691
|
-
className: cn$
|
|
19806
|
+
className: cn$1(isActive && "cursor-default text-neutral-900"),
|
|
20692
19807
|
children: text
|
|
20693
19808
|
}, text);
|
|
20694
19809
|
const listElement = /* @__PURE__ */ (0, import_react.createElement)("li", {
|
|
@@ -20705,7 +19820,7 @@ var Breadcrumb = ({ links, className, color = LinkColor.TEXT, locale, elementTyp
|
|
|
20705
19820
|
"aria-hidden": "true",
|
|
20706
19821
|
className: "flex items-center",
|
|
20707
19822
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
20708
|
-
className: cn$
|
|
19823
|
+
className: cn$1(separatorColorClass),
|
|
20709
19824
|
children: separator
|
|
20710
19825
|
})
|
|
20711
19826
|
})] }, text);
|
|
@@ -20764,7 +19879,7 @@ var checkboxVariants = cva([
|
|
|
20764
19879
|
});
|
|
20765
19880
|
var Input$1 = ({ validationStyleEnabled = false, label, size, color, name, variant, className, labelClassName, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", {
|
|
20766
19881
|
type: "checkbox",
|
|
20767
|
-
className: cn$
|
|
19882
|
+
className: cn$1(checkboxVariants({
|
|
20768
19883
|
variant,
|
|
20769
19884
|
size,
|
|
20770
19885
|
color,
|
|
@@ -20776,7 +19891,7 @@ var Checkbox = (props) => {
|
|
|
20776
19891
|
const { label, name, id } = props;
|
|
20777
19892
|
return label ? /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", {
|
|
20778
19893
|
htmlFor: id ?? name,
|
|
20779
|
-
className: cn$
|
|
19894
|
+
className: cn$1("flex w-full cursor-pointer items-center gap-x-4 font-medium text-sm", props.size === "xs" && "text-xs", props.labelClassName),
|
|
20780
19895
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Input$1, {
|
|
20781
19896
|
id: id ?? name,
|
|
20782
19897
|
...props
|
|
@@ -20788,7 +19903,7 @@ var Checkbox = (props) => {
|
|
|
20788
19903
|
};
|
|
20789
19904
|
//#endregion
|
|
20790
19905
|
//#region ../@intlayer/design-system/dist/esm/components/Input/Input.mjs
|
|
20791
|
-
var cn
|
|
19906
|
+
var cn = (...classes) => classes.filter(Boolean).join(" ");
|
|
20792
19907
|
var inputVariants = cva([
|
|
20793
19908
|
"w-full select-text resize-none text-base shadow-none outline-none",
|
|
20794
19909
|
"transition-all duration-300 md:text-sm",
|
|
@@ -20833,7 +19948,7 @@ var InputVariant = /* @__PURE__ */ function(InputVariant) {
|
|
|
20833
19948
|
return InputVariant;
|
|
20834
19949
|
}({});
|
|
20835
19950
|
var Input = ({ validationStyleEnabled = false, variant, size, className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("input", {
|
|
20836
|
-
className: cn
|
|
19951
|
+
className: cn(inputVariants({
|
|
20837
19952
|
variant,
|
|
20838
19953
|
size,
|
|
20839
19954
|
validationStyleEnabled: validationStyleEnabled ? "enabled" : "disabled"
|
|
@@ -21283,7 +20398,7 @@ var OTPInput = ({ value: uncheckedValue, onChange: uncheckedOnChange, maxLength,
|
|
|
21283
20398
|
});
|
|
21284
20399
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [noScriptCSSFallback !== null && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("noscript", { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("style", { children: noScriptCSSFallback }) }), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
21285
20400
|
ref: containerRef,
|
|
21286
|
-
className: cn$
|
|
20401
|
+
className: cn$1("relative", props.disabled ? "cursor-default" : "cursor-text", containerClassName),
|
|
21287
20402
|
children: [renderedChildren, /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
21288
20403
|
className: "absolute inset-0",
|
|
21289
20404
|
children: renderedInput
|
|
@@ -21301,12 +20416,12 @@ cva("block text-center", {
|
|
|
21301
20416
|
});
|
|
21302
20417
|
var InputOTP = ({ className, render, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(OTPInput, {
|
|
21303
20418
|
containerClassName: "relative flex items-center gap-2 has-disabled:opacity-50",
|
|
21304
|
-
className: cn$
|
|
20419
|
+
className: cn$1("disabled:cursor-not-allowed", className),
|
|
21305
20420
|
render,
|
|
21306
20421
|
...props
|
|
21307
20422
|
});
|
|
21308
20423
|
var InputOTPGroup = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
21309
|
-
className: cn$
|
|
20424
|
+
className: cn$1("z-10 flex items-center gap-3", className),
|
|
21310
20425
|
...props
|
|
21311
20426
|
});
|
|
21312
20427
|
var InputOTPSlot = ({ index, className, onClick, onKeyDown, ...props }) => {
|
|
@@ -21329,7 +20444,7 @@ var InputOTPSlot = ({ index, className, onClick, onKeyDown, ...props }) => {
|
|
|
21329
20444
|
variant: "input",
|
|
21330
20445
|
color: "custom",
|
|
21331
20446
|
tabIndex: -1,
|
|
21332
|
-
className: cn$
|
|
20447
|
+
className: cn$1("relative z-10 px-2!", isActive && "ring-4!", className),
|
|
21333
20448
|
onClick: handleClick,
|
|
21334
20449
|
onKeyDown: handleKeyDown,
|
|
21335
20450
|
label: null,
|
|
@@ -21358,7 +20473,7 @@ var SearchInput = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_ru
|
|
|
21358
20473
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Search, { className: "absolute left-2 size-4" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Input, {
|
|
21359
20474
|
...props,
|
|
21360
20475
|
type: "search",
|
|
21361
|
-
className: cn$
|
|
20476
|
+
className: cn$1("pl-8", className)
|
|
21362
20477
|
})]
|
|
21363
20478
|
});
|
|
21364
20479
|
//#endregion
|
|
@@ -21571,7 +20686,7 @@ var KeyboardShortcut = ({ shortcut, onTriggered, display = true, disabled = fals
|
|
|
21571
20686
|
return pressedKeys.has(key) || pressedKeys.has(upperKey) || pressedKeys.has(normalizedKey) || key === "⌘" && pressedKeys.has("Meta") || key === "Ctrl" && pressedKeys.has("Control") || key === "⌥" && pressedKeys.has("Alt") || key === "Alt" && pressedKeys.has("Alt") || key === "←" && pressedKeys.has("ArrowLeft") || key === "→" && pressedKeys.has("ArrowRight") || key === "↑" && pressedKeys.has("ArrowUp") || key === "↓" && pressedKeys.has("ArrowDown");
|
|
21572
20687
|
};
|
|
21573
20688
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("kbd", {
|
|
21574
|
-
className: cn$
|
|
20689
|
+
className: cn$1("inline-flex items-center justify-center gap-0.5 p-0.5", "rounded-lg [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-xl", "font-medium font-sans", "border-1 border-neutral/20 text-neutral", size === "sm" && "text-xs", size === "md" && "text-sm", size === "lg" && "text-base", className),
|
|
21575
20690
|
children: keys.map((key, index) => {
|
|
21576
20691
|
const keyId = `${key}-${index}-${shortcut}`;
|
|
21577
20692
|
const displayKey = getDisplayKey(key);
|
|
@@ -21581,7 +20696,7 @@ var KeyboardShortcut = ({ shortcut, onTriggered, display = true, disabled = fals
|
|
|
21581
20696
|
className: "text-neutral/50",
|
|
21582
20697
|
children: "+"
|
|
21583
20698
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
21584
|
-
className: cn$
|
|
20699
|
+
className: cn$1("min-w-4 px-0.5 text-center", isKeyPressed(key) && "scale-120 font-bold text-text"),
|
|
21585
20700
|
suppressHydrationWarning: true,
|
|
21586
20701
|
children: displayKey
|
|
21587
20702
|
})]
|
|
@@ -21695,7 +20810,7 @@ var PopoverYAlign = /* @__PURE__ */ function(PopoverYAlign) {
|
|
|
21695
20810
|
* @returns Trigger container with popover functionality
|
|
21696
20811
|
*/
|
|
21697
20812
|
var PopoverStatic = ({ children, className, identifier, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
21698
|
-
className: cn$
|
|
20813
|
+
className: cn$1(`group/popover relative flex cursor-pointer`, className),
|
|
21699
20814
|
id: `unrollable-panel-button-${identifier}`,
|
|
21700
20815
|
"aria-haspopup": true,
|
|
21701
20816
|
...props,
|
|
@@ -21770,7 +20885,7 @@ var Detail$1 = ({ children, isHidden = void 0, isOverable = true, isFocusable =
|
|
|
21770
20885
|
"aria-hidden": isHidden,
|
|
21771
20886
|
"aria-labelledby": `unrollable-panel-button-${identifier}`,
|
|
21772
20887
|
id: `unrollable-panel-${identifier}`,
|
|
21773
|
-
className: cn$
|
|
20888
|
+
className: cn$1("absolute z-50 min-w-full rounded-md ring-1 ring-neutral", xAlign === "start" && "left-0", xAlign === "center" && "left-1/2 -translate-x-1/2", xAlign === "end" && "right-0", yAlign === "bellow" && "top-[calc(100%+1rem)]", yAlign === "above" && "bottom-[calc(100%+1rem)]", displayArrow && "before:absolute before:z-[999] before:h-0 before:w-0 before:content-[\"\"]", displayArrow && xAlign === "start" && "before:left-2", displayArrow && xAlign === "center" && "before:left-1/2 before:-translate-x-1/2", displayArrow && xAlign === "end" && "before:right-2", displayArrow && yAlign === "bellow" && "before:-top-[10px] before:border-r-[10px] before:border-r-transparent before:border-b-[10px] before:border-b-neutral before:border-l-[10px] before:border-l-transparent", displayArrow && yAlign === "above" && "before:-bottom-[10px] before:border-t-[10px] before:border-t-neutral before:border-r-[10px] before:border-r-transparent before:border-l-[10px] before:border-l-transparent", "overflow-x-visible opacity-0 transition-all duration-400 ease-in-out", isHidden !== false ? "invisible" : "visible opacity-100 delay-800", isOverable && `group-hover/popover:visible group-hover/popover:opacity-100 group-hover/popover:delay-800`, isFocusable && `group-focus-within/popover:visible group-focus-within/popover:opacity-100 group-focus-within/popover:delay-800`, className),
|
|
21774
20889
|
...props,
|
|
21775
20890
|
children
|
|
21776
20891
|
});
|
|
@@ -23682,7 +22797,7 @@ var Te = {
|
|
|
23682
22797
|
//#endregion
|
|
23683
22798
|
//#region ../@intlayer/design-system/dist/esm/components/Command/index.mjs
|
|
23684
22799
|
var CommandRoot = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_e, {
|
|
23685
|
-
className: cn$
|
|
22800
|
+
className: cn$1("flex flex-col overflow-hidden rounded-md", className),
|
|
23686
22801
|
...props
|
|
23687
22802
|
});
|
|
23688
22803
|
var CommandDialog = ({ children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Dialog, {
|
|
@@ -23699,12 +22814,12 @@ var CommandInput = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_r
|
|
|
23699
22814
|
className: "flex w-full items-center",
|
|
23700
22815
|
"cmdk-input-wrapper": "",
|
|
23701
22816
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Search, { className: "mr-2 size-4 shrink-0 opacity-50" }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_e.Input, {
|
|
23702
|
-
className: cn$
|
|
22817
|
+
className: cn$1("flex w-full rounded-md bg-transparent text-sm outline-hidden placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50", className),
|
|
23703
22818
|
...props
|
|
23704
22819
|
})]
|
|
23705
22820
|
});
|
|
23706
22821
|
var CommandList = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_e.List, {
|
|
23707
|
-
className: cn$
|
|
22822
|
+
className: cn$1("max-h-[300px] overflow-y-auto overflow-x-hidden", className),
|
|
23708
22823
|
...props
|
|
23709
22824
|
});
|
|
23710
22825
|
var CommandEmpty = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_e.Empty, {
|
|
@@ -23712,20 +22827,20 @@ var CommandEmpty = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_e.Emp
|
|
|
23712
22827
|
...props
|
|
23713
22828
|
});
|
|
23714
22829
|
var CommandGroup = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_e.Group, {
|
|
23715
|
-
className: cn$
|
|
22830
|
+
className: cn$1("overflow-hidden p-1 text-foreground [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group-heading]]:text-muted-foreground [&_[cmdk-group-heading]]:text-xs", className),
|
|
23716
22831
|
...props
|
|
23717
22832
|
});
|
|
23718
22833
|
var CommandSeparator = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_e.Separator, {
|
|
23719
|
-
className: cn$
|
|
22834
|
+
className: cn$1("-mx-1 h-px bg-border", className),
|
|
23720
22835
|
...props
|
|
23721
22836
|
});
|
|
23722
22837
|
var CommandItem = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(_e.Item, {
|
|
23723
|
-
className: cn$
|
|
22838
|
+
className: cn$1("relative flex cursor-default select-none items-center rounded-sm px-2 py-1.5 text-sm outline-hidden data-[disabled=true]:pointer-events-none data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground data-[disabled=true]:opacity-50", className),
|
|
23724
22839
|
...props
|
|
23725
22840
|
});
|
|
23726
22841
|
var CommandShortcut = ({ className, ...props }) => {
|
|
23727
22842
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
23728
|
-
className: cn$
|
|
22843
|
+
className: cn$1("ml-auto text-muted-foreground text-xs tracking-widest", className),
|
|
23729
22844
|
...props
|
|
23730
22845
|
});
|
|
23731
22846
|
};
|
|
@@ -23964,7 +23079,7 @@ var CopyToClipboard = ({ text, children, className, "aria-label": ariaLabel = "C
|
|
|
23964
23079
|
const currentAriaLabel = isCopied ? ariaCopiedLabel : ariaLabel;
|
|
23965
23080
|
const IconComponent = isCopied ? CopyCheck : Copy;
|
|
23966
23081
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("span", {
|
|
23967
|
-
className: cn$
|
|
23082
|
+
className: cn$1("inline-flex max-w-full cursor-pointer items-center gap-2 rounded-md p-0.5 hover:bg-neutral/10", className),
|
|
23968
23083
|
onClick: handleCopy,
|
|
23969
23084
|
onKeyDown: handleKeyDown,
|
|
23970
23085
|
role: "button",
|
|
@@ -24235,7 +23350,7 @@ var SwitchSelector = ({ choices = defaultChoices, value, defaultValue, onChange,
|
|
|
24235
23350
|
const isIndicatorOwner = index === indicatorIndex;
|
|
24236
23351
|
return /* @__PURE__ */ (0, import_react.createElement)("button", {
|
|
24237
23352
|
...buttonProps,
|
|
24238
|
-
className: cn$
|
|
23353
|
+
className: cn$1(choiceVariant({ size }), disabled && "cursor-not-allowed", itemClassName),
|
|
24239
23354
|
key: isKeyOfKey ? value : index,
|
|
24240
23355
|
role: "tab",
|
|
24241
23356
|
onClick: () => handleChange(value),
|
|
@@ -24250,7 +23365,7 @@ var SwitchSelector = ({ choices = defaultChoices, value, defaultValue, onChange,
|
|
|
24250
23365
|
onMouseLeave: () => !disabled && setHoveredIndex(null)
|
|
24251
23366
|
}, content);
|
|
24252
23367
|
}), choiceIndicatorPosition && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
24253
|
-
className: cn$
|
|
23368
|
+
className: cn$1(indicatorVariant$1({ color })),
|
|
24254
23369
|
style: choiceIndicatorPosition,
|
|
24255
23370
|
ref: indicatorRef
|
|
24256
23371
|
})]
|
|
@@ -24297,7 +23412,7 @@ var EditableFieldLayout = ({ value = "", onCancel, onSave, onClick, children, is
|
|
|
24297
23412
|
ref: editableFieldRef,
|
|
24298
23413
|
...props,
|
|
24299
23414
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
24300
|
-
className: cn$
|
|
23415
|
+
className: cn$1("flex flex-1 gap-2", isEditing ? "display" : "hidden"),
|
|
24301
23416
|
children: [
|
|
24302
23417
|
children,
|
|
24303
23418
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
|
|
@@ -24330,7 +23445,7 @@ var EditableFieldLayout = ({ value = "", onCancel, onSave, onClick, children, is
|
|
|
24330
23445
|
})
|
|
24331
23446
|
]
|
|
24332
23447
|
}, String(isEditing)), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
24333
|
-
className: cn$
|
|
23448
|
+
className: cn$1("flex flex-1 gap-2", isEditing ? "hidden" : "display"),
|
|
24334
23449
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
24335
23450
|
className: "ml-2 flex w-full whitespace-pre-wrap p-1 text-sm leading-6",
|
|
24336
23451
|
children: result
|
|
@@ -24830,7 +23945,7 @@ var ContentEditableTextArea = ({ value, defaultValue, onChange, placeholder, dis
|
|
|
24830
23945
|
onDrop: handleDrop,
|
|
24831
23946
|
onDragOver: handleDragOver,
|
|
24832
23947
|
onClick,
|
|
24833
|
-
className: cn$
|
|
23948
|
+
className: cn$1("resize-none whitespace-pre-wrap break-words outline-none", inputVariants({
|
|
24834
23949
|
variant,
|
|
24835
23950
|
validationStyleEnabled: validationStyleEnabled ? "enabled" : "disabled"
|
|
24836
23951
|
}), autoSize && "overflow-y-auto", className),
|
|
@@ -24972,7 +24087,7 @@ var AutoCompleteTextarea = ({ isActive = true, suggestion: suggestionProp, ...pr
|
|
|
24972
24087
|
* ```
|
|
24973
24088
|
*/
|
|
24974
24089
|
var TextArea = ({ className, variant, validationStyleEnabled = false, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("textarea", {
|
|
24975
|
-
className: cn$
|
|
24090
|
+
className: cn$1("resize-none", inputVariants({
|
|
24976
24091
|
variant,
|
|
24977
24092
|
validationStyleEnabled: validationStyleEnabled ? "enabled" : "disabled",
|
|
24978
24093
|
className
|
|
@@ -25072,7 +24187,7 @@ var AutoSizedTextArea = ({ className, autoSize = true, onChange, maxRows = 999,
|
|
|
25072
24187
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TextArea, {
|
|
25073
24188
|
ref: setRef,
|
|
25074
24189
|
onChange: handleChange,
|
|
25075
|
-
className: cn$
|
|
24190
|
+
className: cn$1("overflow-y-auto", autoSize && "resize-none", className),
|
|
25076
24191
|
...props
|
|
25077
24192
|
});
|
|
25078
24193
|
};
|
|
@@ -25147,7 +24262,7 @@ var EditableFieldTextArea = ({ onSave, onCancel, ref, ...props }) => {
|
|
|
25147
24262
|
//#endregion
|
|
25148
24263
|
//#region ../@intlayer/design-system/dist/esm/components/DictionaryEditor/ItemLayout.mjs
|
|
25149
24264
|
var ItemLayout = ({ level, title, description, children, rightParam, isSelected, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
25150
|
-
className: cn$
|
|
24265
|
+
className: cn$1("rounded-md p-2 transition", "hover:bg-card/30 [&:has(.section:hover)]:bg-transparent", level === 2 && "hover:bg-card/30", level >= 3 && "", isSelected === true && "bg-card/40"),
|
|
25151
24266
|
...props,
|
|
25152
24267
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Accordion, {
|
|
25153
24268
|
isOpen: isSelected,
|
|
@@ -25157,7 +24272,7 @@ var ItemLayout = ({ level, title, description, children, rightParam, isSelected,
|
|
|
25157
24272
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
25158
24273
|
className: "flex w-full items-center justify-between",
|
|
25159
24274
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
25160
|
-
className: cn$
|
|
24275
|
+
className: cn$1(level === 0 && "text-lg", level === 1 && "text-md", level === 2 && "text-md", level >= 3 && "text-base"),
|
|
25161
24276
|
children: title
|
|
25162
24277
|
}), rightParam && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
25163
24278
|
className: "flex w-auto items-center justify-between p-3",
|
|
@@ -25385,7 +24500,7 @@ var onGlobalEditorManagerChange = (changeCallback) => {
|
|
|
25385
24500
|
};
|
|
25386
24501
|
};
|
|
25387
24502
|
//#endregion
|
|
25388
|
-
//#region ../@intlayer/editor/dist/esm/_virtual/_@oxc-project_runtime@0.
|
|
24503
|
+
//#region ../@intlayer/editor/dist/esm/_virtual/_@oxc-project_runtime@0.122.0/helpers/decorate.mjs
|
|
25389
24504
|
function __decorate(decorators, target, key, desc) {
|
|
25390
24505
|
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
25391
24506
|
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
@@ -27065,7 +26180,7 @@ var EditorStateManager = class {
|
|
|
27065
26180
|
async _loadDictionaries() {
|
|
27066
26181
|
try {
|
|
27067
26182
|
const unmergedDictionaries = (await __vitePreload(async () => {
|
|
27068
|
-
const { getUnmergedDictionaries } = await import("./unmerged_dictionaries-
|
|
26183
|
+
const { getUnmergedDictionaries } = await import("./unmerged_dictionaries-DoWpZ8yJ.js");
|
|
27069
26184
|
return { getUnmergedDictionaries };
|
|
27070
26185
|
}, [])).getUnmergedDictionaries();
|
|
27071
26186
|
const dictionariesList = Object.fromEntries(Object.values(unmergedDictionaries).flat().map((dictionary) => [dictionary.localId, dictionary]));
|
|
@@ -27624,7 +26739,7 @@ var BooleanWrapper = ({ keyPath, section, editedContent, onContentChange, onFocu
|
|
|
27624
26739
|
const value = editedContentValue ?? section;
|
|
27625
26740
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
27626
26741
|
type: "button",
|
|
27627
|
-
className: cn$
|
|
26742
|
+
className: cn$1("w-full rounded-md p-2 text-left transition", "hover:bg-card/30 [&:has(.section:hover)]:bg-transparent", level === 2 && "hover:bg-card/30", level >= 3 && ""),
|
|
27628
26743
|
onClick: (e) => {
|
|
27629
26744
|
e.stopPropagation();
|
|
27630
26745
|
onFocusKeyPath(keyPath);
|
|
@@ -27698,7 +26813,7 @@ var StringWrapper = ({ keyPath, section, editedContent, editedContentValue: edit
|
|
|
27698
26813
|
const content = String(editedContentValue ?? section);
|
|
27699
26814
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
27700
26815
|
type: "button",
|
|
27701
|
-
className: cn$
|
|
26816
|
+
className: cn$1("w-full rounded-md p-2 text-left transition", "hover:bg-card/30 [&:has(.section:hover)]:bg-transparent", level === 2 && "hover:bg-card/30", level >= 3 && ""),
|
|
27702
26817
|
onClick: (e) => {
|
|
27703
26818
|
e.stopPropagation();
|
|
27704
26819
|
onFocusKeyPath(keyPath);
|
|
@@ -27837,7 +26952,7 @@ var NumberWrapper = ({ keyPath, section, editedContent, onContentChange, onFocus
|
|
|
27837
26952
|
const content = String(editedContentValue ?? section);
|
|
27838
26953
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
27839
26954
|
type: "button",
|
|
27840
|
-
className: cn$
|
|
26955
|
+
className: cn$1("w-full rounded-md p-2 text-left transition", "hover:bg-card/30 [&:has(.section:hover)]:bg-transparent", level === 2 && "hover:bg-card/30", level >= 3 && ""),
|
|
27841
26956
|
onClick: (e) => {
|
|
27842
26957
|
e.stopPropagation();
|
|
27843
26958
|
onFocusKeyPath(keyPath);
|
|
@@ -28019,7 +27134,7 @@ var DictionaryEditor = ({ dictionary, ...props }) => {
|
|
|
28019
27134
|
* - Maintains focus trap within dropdown when needed
|
|
28020
27135
|
*/
|
|
28021
27136
|
var DropDown = ({ children, className, identifier, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
28022
|
-
className: cn$
|
|
27137
|
+
className: cn$1(`group/dropdown relative flex`, className),
|
|
28023
27138
|
"aria-label": `DropDown ${identifier}`,
|
|
28024
27139
|
id: `dropdown-container-${identifier}`,
|
|
28025
27140
|
...props,
|
|
@@ -28048,7 +27163,7 @@ var DropDown = ({ children, className, identifier, ...props }) => /* @__PURE__ *
|
|
|
28048
27163
|
* @note Don't nest Button components inside the Trigger - it's already a button
|
|
28049
27164
|
*/
|
|
28050
27165
|
var Trigger$1 = ({ children, identifier, className, label, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
|
|
28051
|
-
className: cn$
|
|
27166
|
+
className: cn$1([
|
|
28052
27167
|
"w-full cursor-pointer",
|
|
28053
27168
|
"group-focus-within/dropdown:bg-current/20 group-focus-within/dropdown:ring-4",
|
|
28054
27169
|
className
|
|
@@ -28126,14 +27241,14 @@ var DropDownYAlign = /* @__PURE__ */ function(DropDownYAlign) {
|
|
|
28126
27241
|
* - Screen reader announcements for state changes
|
|
28127
27242
|
*/
|
|
28128
27243
|
var Panel = ({ children, isHidden = void 0, isOverable = false, isFocusable = false, align = DropDownAlign.START, yAlign = DropDownYAlign.BELOW, identifier, className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
28129
|
-
className: cn$
|
|
27244
|
+
className: cn$1("absolute z-100 min-w-full", align === DropDownAlign.START && "left-0", align === DropDownAlign.END && "right-0", yAlign === DropDownYAlign.BELOW && "top-[calc(100%+0.5rem)]", yAlign === DropDownYAlign.ABOVE && "bottom-[calc(100%+0.5rem)]", className),
|
|
28130
27245
|
"aria-hidden": isHidden,
|
|
28131
27246
|
role: "region",
|
|
28132
27247
|
"aria-labelledby": `dropdown-trigger-${identifier}`,
|
|
28133
27248
|
id: `dropdown-panel-${identifier}`,
|
|
28134
27249
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(MaxHeightSmoother, {
|
|
28135
27250
|
isHidden,
|
|
28136
|
-
className: cn$
|
|
27251
|
+
className: cn$1("overflow-x-visible", isHidden === false && "invisible", isHidden === true && "visible", isOverable && "group-hover/dropdown:visible group-hover/dropdown:grid-rows-[1fr]", isFocusable && "group-focus-within/dropdown:visible group-focus-within/dropdown:grid-rows-[1fr]"),
|
|
28137
27252
|
...props,
|
|
28138
27253
|
children
|
|
28139
27254
|
})
|
|
@@ -29751,7 +28866,7 @@ var LocaleSwitcherContent = ({ panelProps, isMultilingual = true }) => {
|
|
|
29751
28866
|
* - Screen reader compatible with proper ARIA relationships
|
|
29752
28867
|
*/
|
|
29753
28868
|
var Label$1 = ({ htmlFor, required = false, disabled = false, className, children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("label", {
|
|
29754
|
-
className: cn$
|
|
28869
|
+
className: cn$1("select-none font-medium text-sm leading-none", "peer-disabled:cursor-not-allowed peer-disabled:opacity-70", disabled && "cursor-not-allowed text-muted-foreground opacity-70", className),
|
|
29755
28870
|
htmlFor,
|
|
29756
28871
|
suppressHydrationWarning: true,
|
|
29757
28872
|
...props,
|
|
@@ -29773,7 +28888,7 @@ var styledAfter = `after:content-['#'] after:scale-75 after:px-6 after:text-neut
|
|
|
29773
28888
|
* Does not include clickable anchor functionality.
|
|
29774
28889
|
*/
|
|
29775
28890
|
var StyledH1 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h1", {
|
|
29776
|
-
className: cn$
|
|
28891
|
+
className: cn$1("font-bold text-2xl", className),
|
|
29777
28892
|
...props
|
|
29778
28893
|
});
|
|
29779
28894
|
/**
|
|
@@ -29783,7 +28898,7 @@ var StyledH1 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runti
|
|
|
29783
28898
|
* Used for major section headers in content.
|
|
29784
28899
|
*/
|
|
29785
28900
|
var StyledH2 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h2", {
|
|
29786
|
-
className: cn$
|
|
28901
|
+
className: cn$1("mb-2 font-bold text-2xl", styledHeading, className),
|
|
29787
28902
|
...props
|
|
29788
28903
|
});
|
|
29789
28904
|
/**
|
|
@@ -29793,7 +28908,7 @@ var StyledH2 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runti
|
|
|
29793
28908
|
* Used for subsection headers in content.
|
|
29794
28909
|
*/
|
|
29795
28910
|
var StyledH3 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h3", {
|
|
29796
|
-
className: cn$
|
|
28911
|
+
className: cn$1("mb-2 font-bold text-xl", styledHeading, className),
|
|
29797
28912
|
...props
|
|
29798
28913
|
});
|
|
29799
28914
|
/**
|
|
@@ -29803,7 +28918,7 @@ var StyledH3 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runti
|
|
|
29803
28918
|
* Used for minor section headers in content.
|
|
29804
28919
|
*/
|
|
29805
28920
|
var StyledH4 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h4", {
|
|
29806
|
-
className: cn$
|
|
28921
|
+
className: cn$1("font-bold text-lg", styledHeading, className),
|
|
29807
28922
|
...props
|
|
29808
28923
|
});
|
|
29809
28924
|
/**
|
|
@@ -29813,11 +28928,11 @@ var StyledH4 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runti
|
|
|
29813
28928
|
* Used for detailed subsection headers in content.
|
|
29814
28929
|
*/
|
|
29815
28930
|
var StyledH5 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h5", {
|
|
29816
|
-
className: cn$
|
|
28931
|
+
className: cn$1("font-bold text-base", styledHeading, className),
|
|
29817
28932
|
...props
|
|
29818
28933
|
});
|
|
29819
28934
|
var StyledH6 = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("h6", {
|
|
29820
|
-
className: cn$
|
|
28935
|
+
className: cn$1("ml-3 font-bold text-base", styledHeading, className),
|
|
29821
28936
|
...props
|
|
29822
28937
|
});
|
|
29823
28938
|
/**
|
|
@@ -29882,7 +28997,7 @@ var HeadingWrapper = ({ H, children, className, isClickable, ...props }) => {
|
|
|
29882
28997
|
id,
|
|
29883
28998
|
onClick: isClickable ? onClick : void 0,
|
|
29884
28999
|
"aria-label": isClickable ? `Click to scroll to section ${id} and copy the link to the clipboard` : void 0,
|
|
29885
|
-
className: cn$
|
|
29000
|
+
className: cn$1(isClickable && styledAfter, className),
|
|
29886
29001
|
...props,
|
|
29887
29002
|
children
|
|
29888
29003
|
});
|
|
@@ -30144,7 +29259,7 @@ var ExpandCollapse = ({ isRollable = true, minHeight = DEFAULT_MIN_HEIGHT, child
|
|
|
30144
29259
|
}, [children]);
|
|
30145
29260
|
if (!isRollable) return children;
|
|
30146
29261
|
if (!isTooBig) return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
30147
|
-
className: cn$
|
|
29262
|
+
className: cn$1("grid w-full", className),
|
|
30148
29263
|
ref: codeContainerRef,
|
|
30149
29264
|
children
|
|
30150
29265
|
});
|
|
@@ -30153,11 +29268,11 @@ var ExpandCollapse = ({ isRollable = true, minHeight = DEFAULT_MIN_HEIGHT, child
|
|
|
30153
29268
|
minHeight,
|
|
30154
29269
|
className: "w-full overflow-x-auto overflow-y-hidden",
|
|
30155
29270
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
30156
|
-
className: cn$
|
|
29271
|
+
className: cn$1("grid w-full", className),
|
|
30157
29272
|
ref: codeContainerRef,
|
|
30158
29273
|
children
|
|
30159
29274
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
30160
|
-
className: cn$
|
|
29275
|
+
className: cn$1("absolute right-0 bottom-0 flex w-full cursor-pointer items-center justify-center rounded-t-2xl bg-gradient-to-t from-card/80 to-transparent px-3 py-0.5 text-md text-neutral-700 shadow-[0_0_10px_-15px_rgba(0,0,0,0.3)] backdrop-blur transition-all duration-300 hover:py-1 dark:text-neutral-400", isCollapsed ? "w-full" : "w-32"),
|
|
30161
29276
|
type: "button",
|
|
30162
29277
|
onClick: () => setIsCollapsed((prev) => !prev),
|
|
30163
29278
|
children: expandCollapseContent(isCollapsed)
|
|
@@ -30176,9 +29291,9 @@ var CodeDefault = ({ children }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
|
30176
29291
|
}, `line-${index}-${line.slice(0, 10)}`)) : children })
|
|
30177
29292
|
})
|
|
30178
29293
|
});
|
|
30179
|
-
var CodeBlockShiki = (0, import_react.lazy)(() => __vitePreload(() => import("./CodeBlockShiki-
|
|
29294
|
+
var CodeBlockShiki = (0, import_react.lazy)(() => __vitePreload(() => import("./CodeBlockShiki-ie_3x4KO.js").then((mod) => ({ default: mod.CodeBlockShiki })), __vite__mapDeps([4,1,5,2,3])));
|
|
30180
29295
|
var CodeBlock = ({ className, onChange, isEditable, children, lang, isDarkMode, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
30181
|
-
className: cn$
|
|
29296
|
+
className: cn$1("flex w-full min-w-0 max-w-full overflow-x-auto", className),
|
|
30182
29297
|
...props,
|
|
30183
29298
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.Suspense, {
|
|
30184
29299
|
fallback: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CodeDefault, { children }),
|
|
@@ -30414,7 +29529,7 @@ var MultiSelectRoot = ({ values: valuesProp, defaultValues, onValueChange, loop
|
|
|
30414
29529
|
]),
|
|
30415
29530
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CommandRoot, {
|
|
30416
29531
|
onKeyDown: handleKeyDown,
|
|
30417
|
-
className: cn$
|
|
29532
|
+
className: cn$1("flex w-full flex-col gap-2 overflow-visible bg-transparent", className),
|
|
30418
29533
|
dir,
|
|
30419
29534
|
...props,
|
|
30420
29535
|
children
|
|
@@ -30428,12 +29543,12 @@ var MultiSelectTrigger = ({ className, getBadgeValue = (value) => value, validat
|
|
|
30428
29543
|
e.stopPropagation();
|
|
30429
29544
|
}, []);
|
|
30430
29545
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
30431
|
-
className: cn$
|
|
29546
|
+
className: cn$1("flex w-full flex-col gap-3", "cursor-pointer select-text text-base shadow-none outline-none md:text-sm", "rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl", "px-2 py-3 md:py-2", "bg-neutral-50 dark:bg-neutral-950", "text-text", "ring-0", "focus-within:outline-none", "focus-within:ring-3", "focus-within:ring-neutral-200", "dark:focus-within:ring-neutral-500", "focus-within:ring-offset-white", "dark:focus-within:ring-offset-neutral-500", "[box-shadow:none]", "disabled:cursor-not-allowed disabled:opacity-50", "aria-invalid:border-error", validationStyleEnabled && "valid:border-success invalid:border-error", className),
|
|
30432
29547
|
...props,
|
|
30433
29548
|
children: [value.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
30434
29549
|
className: "flex w-full flex-wrap gap-1",
|
|
30435
29550
|
children: value.map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Badge, {
|
|
30436
|
-
className: cn$
|
|
29551
|
+
className: cn$1("flex items-center gap-1 rounded-xl px-1", activeIndex === index && "ring-2 ring-muted-foreground"),
|
|
30437
29552
|
color: BadgeColor.TEXT,
|
|
30438
29553
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
30439
29554
|
className: "text-xs",
|
|
@@ -30468,7 +29583,7 @@ var MultiSelectInput = ({ className, ...props }) => {
|
|
|
30468
29583
|
onBlur: () => setOpen(false),
|
|
30469
29584
|
onFocus: () => setOpen(true),
|
|
30470
29585
|
onClick: () => setActiveIndex(-1),
|
|
30471
|
-
className: cn$
|
|
29586
|
+
className: cn$1("ml-2 flex-1 cursor-pointer outline-hidden", className, activeIndex !== -1 && "caret-transparent")
|
|
30472
29587
|
});
|
|
30473
29588
|
};
|
|
30474
29589
|
var MultiSelectContent = ({ children }) => {
|
|
@@ -30479,7 +29594,7 @@ var MultiSelectContent = ({ children }) => {
|
|
|
30479
29594
|
});
|
|
30480
29595
|
};
|
|
30481
29596
|
var MultiSelectList = ({ className, children }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Command.List, {
|
|
30482
|
-
className: cn$
|
|
29597
|
+
className: cn$1("absolute top-0 z-10 flex w-full flex-col gap-2", "rounded-xl p-2 shadow-md", "bg-white dark:bg-neutral-950", "text-text", "border border-neutral-200 dark:border-neutral-800", "transition-colors", className),
|
|
30483
29598
|
children: [children, /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Command.Empty, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
30484
29599
|
className: "text-muted-foreground",
|
|
30485
29600
|
children: "No results found"
|
|
@@ -30498,7 +29613,7 @@ var MultiSelectItem = ({ className, value, children, ...props }) => {
|
|
|
30498
29613
|
onValueChange(value);
|
|
30499
29614
|
setInputValue("");
|
|
30500
29615
|
},
|
|
30501
|
-
className: cn$
|
|
29616
|
+
className: cn$1("flex cursor-pointer justify-between", "rounded-lg px-2 py-1", "transition-colors", "hover:bg-neutral/10", isIncluded && "opacity-50", props.disabled && "cursor-not-allowed opacity-50", className),
|
|
30502
29617
|
onMouseDown: mousePreventDefault,
|
|
30503
29618
|
children: [children, isIncluded && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Check, { className: "size-4" })]
|
|
30504
29619
|
});
|
|
@@ -33495,7 +32610,7 @@ var SelectValue = Value;
|
|
|
33495
32610
|
*/
|
|
33496
32611
|
var SelectTrigger = ({ validationStyleEnabled = false, className, children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Trigger, {
|
|
33497
32612
|
suppressHydrationWarning: true,
|
|
33498
|
-
className: cn$
|
|
32613
|
+
className: cn$1("flex w-full cursor-pointer items-center justify-between whitespace-nowrap", "select-text text-base shadow-none outline-none md:text-sm", "rounded-xl [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-2xl", "px-2 py-3 md:py-2", "bg-neutral-50 dark:bg-neutral-950", "text-text", "ring-0", "focus-visible:outline-none", "focus-visible:ring-3", "focus-visible:ring-neutral-200", "dark:focus-visible:ring-neutral-500", "focus-visible:ring-offset-white", "dark:focus-visible:ring-offset-neutral-500", "[box-shadow:none] focus:[box-shadow:none]", "disabled:cursor-not-allowed disabled:opacity-50", "aria-invalid:border-error", "[&>span]:line-clamp-1", validationStyleEnabled && "valid:border-success invalid:border-error", className),
|
|
33499
32614
|
...props,
|
|
33500
32615
|
children: [children, /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Icon, {
|
|
33501
32616
|
asChild: true,
|
|
@@ -33511,7 +32626,7 @@ var SelectTrigger = ({ validationStyleEnabled = false, className, children, ...p
|
|
|
33511
32626
|
* @param className - Additional CSS classes for custom styling
|
|
33512
32627
|
*/
|
|
33513
32628
|
var SelectScrollUpButton = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ScrollUpButton, {
|
|
33514
|
-
className: cn$
|
|
32629
|
+
className: cn$1("flex cursor-default items-center justify-center py-1", className),
|
|
33515
32630
|
...props,
|
|
33516
32631
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronUp, {})
|
|
33517
32632
|
});
|
|
@@ -33524,7 +32639,7 @@ var SelectScrollUpButton = ({ className, ...props }) => /* @__PURE__ */ (0, impo
|
|
|
33524
32639
|
* @param className - Additional CSS classes for custom styling
|
|
33525
32640
|
*/
|
|
33526
32641
|
var SelectScrollDownButton = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ScrollDownButton, {
|
|
33527
|
-
className: cn$
|
|
32642
|
+
className: cn$1("flex cursor-default items-center justify-center py-1", className),
|
|
33528
32643
|
...props,
|
|
33529
32644
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ChevronDown, {})
|
|
33530
32645
|
});
|
|
@@ -33547,13 +32662,13 @@ var SelectScrollDownButton = ({ className, ...props }) => /* @__PURE__ */ (0, im
|
|
|
33547
32662
|
* ```
|
|
33548
32663
|
*/
|
|
33549
32664
|
var SelectContent = ({ className, children, position = SelectContentPosition.POPPER, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Portal, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Content2, {
|
|
33550
|
-
className: cn$
|
|
32665
|
+
className: cn$1("relative z-50 max-h-96 min-w-32 overflow-hidden", "rounded-xl shadow-md", "bg-white dark:bg-neutral-950", "text-text", "border border-neutral-200 dark:border-neutral-800", "data-[state=closed]:animate-out data-[state=open]:animate-in", "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95", "data-[side=bottom]:slide-in-from-top-2", "data-[side=left]:slide-in-from-right-2", "data-[side=right]:slide-in-from-left-2", "data-[side=top]:slide-in-from-bottom-2", position === "popper" && "data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=bottom]:translate-y-1 data-[side=top]:-translate-y-1", className),
|
|
33551
32666
|
position,
|
|
33552
32667
|
...props,
|
|
33553
32668
|
children: [
|
|
33554
32669
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectScrollUpButton, {}),
|
|
33555
32670
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Viewport, {
|
|
33556
|
-
className: cn$
|
|
32671
|
+
className: cn$1("p-1", position === "popper" && "h-(--radix-select-trigger-height) w-full min-w-(--radix-select-trigger-width)"),
|
|
33557
32672
|
children
|
|
33558
32673
|
}),
|
|
33559
32674
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(SelectScrollDownButton, {})
|
|
@@ -33580,7 +32695,7 @@ var SelectContent = ({ className, children, position = SelectContentPosition.POP
|
|
|
33580
32695
|
* ```
|
|
33581
32696
|
*/
|
|
33582
32697
|
var SelectLabel = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Label, {
|
|
33583
|
-
className: cn$
|
|
32698
|
+
className: cn$1("px-1 py-0.5 font-semibold text-sm", className),
|
|
33584
32699
|
...props
|
|
33585
32700
|
});
|
|
33586
32701
|
/**
|
|
@@ -33600,7 +32715,7 @@ var SelectLabel = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_ru
|
|
|
33600
32715
|
* ```
|
|
33601
32716
|
*/
|
|
33602
32717
|
var SelectItem = ({ className, children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Item, {
|
|
33603
|
-
className: cn$
|
|
32718
|
+
className: cn$1("relative flex w-full cursor-pointer select-none items-center rounded-lg py-1.5 pr-8 pl-2 text-sm outline-hidden focus:bg-neutral/10 data-disabled:pointer-events-none data-disabled:opacity-50", className),
|
|
33604
32719
|
...props,
|
|
33605
32720
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("span", {
|
|
33606
32721
|
className: "absolute right-2 flex size-3.5 items-center justify-center",
|
|
@@ -33625,7 +32740,7 @@ var SelectItem = ({ className, children, ...props }) => /* @__PURE__ */ (0, impo
|
|
|
33625
32740
|
* ```
|
|
33626
32741
|
*/
|
|
33627
32742
|
var SelectSeparator = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Separator, {
|
|
33628
|
-
className: cn$
|
|
32743
|
+
className: cn$1("-mx-1 my-1 h-px", "bg-neutral-200 dark:bg-neutral-800", className),
|
|
33629
32744
|
...props
|
|
33630
32745
|
});
|
|
33631
32746
|
/**
|
|
@@ -34155,7 +33270,7 @@ var Code = ({ children, language, isDarkMode, showHeader = true, showLineNumbers
|
|
|
34155
33270
|
codeFormat,
|
|
34156
33271
|
contentDeclarationFormat,
|
|
34157
33272
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Container, {
|
|
34158
|
-
className: cn$
|
|
33273
|
+
className: cn$1("relative min-w-0 max-w-full text-sm leading-6", showLineNumbers && "with-line-number ml-0", className),
|
|
34159
33274
|
transparency: "lg",
|
|
34160
33275
|
...props,
|
|
34161
33276
|
children: [showHeader && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
@@ -34174,7 +33289,7 @@ var Code = ({ children, language, isDarkMode, showHeader = true, showLineNumbers
|
|
|
34174
33289
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
34175
33290
|
className: "sticky top-46 z-20",
|
|
34176
33291
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
34177
|
-
className: cn$
|
|
33292
|
+
className: cn$1("absolute right-2 bottom-0 flex h-7 items-center", hadSelectInHeader && "h-11"),
|
|
34178
33293
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CopyCode, { code })
|
|
34179
33294
|
})
|
|
34180
33295
|
})] }), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(ExpandCollapse, {
|
|
@@ -34260,7 +33375,7 @@ var TabSelector = ({ tabs, selectedChoice, onTabClick, color = TabSelectorColor.
|
|
|
34260
33375
|
calculatePosition();
|
|
34261
33376
|
}, [selectedChoice, tabs]);
|
|
34262
33377
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
34263
|
-
className: cn$
|
|
33378
|
+
className: cn$1(tabSelectorVariant({ color }), className),
|
|
34264
33379
|
"aria-orientation": orientation,
|
|
34265
33380
|
"aria-multiselectable": "false",
|
|
34266
33381
|
role: "tablist",
|
|
@@ -34282,7 +33397,7 @@ var TabSelector = ({ tabs, selectedChoice, onTabClick, color = TabSelectorColor.
|
|
|
34282
33397
|
}
|
|
34283
33398
|
});
|
|
34284
33399
|
}), choiceIndicatorPosition && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
34285
|
-
className: cn$
|
|
33400
|
+
className: cn$1(indicatorVariant({
|
|
34286
33401
|
color,
|
|
34287
33402
|
orientation
|
|
34288
33403
|
})),
|
|
@@ -34511,17 +33626,17 @@ var TabComponent = ({ defaultTab, group, variant, children, className, headerCla
|
|
|
34511
33626
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TabContext.Provider, {
|
|
34512
33627
|
value: contextValue,
|
|
34513
33628
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
34514
|
-
className: cn$
|
|
33629
|
+
className: cn$1(tabContainerVariant({ variant }), fullHeight && "flex h-full flex-col overflow-hidden", className),
|
|
34515
33630
|
...props,
|
|
34516
33631
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
34517
|
-
className: cn$
|
|
33632
|
+
className: cn$1("flex shrink-0 gap-3 p-3", headerClassName),
|
|
34518
33633
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(TabSelector, {
|
|
34519
33634
|
selectedChoice: currentTabValue,
|
|
34520
33635
|
tabs: tabItems.map((child) => {
|
|
34521
33636
|
const { label, value, disabled } = child.props;
|
|
34522
33637
|
const isActive = currentTabValue === value;
|
|
34523
33638
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("button", {
|
|
34524
|
-
className: cn$
|
|
33639
|
+
className: cn$1("cursor-pointer whitespace-nowrap rounded-md px-4 py-1 font-medium text-sm transition-colors focus:outline-none", !isActive && "text-neutral/70"),
|
|
34525
33640
|
"data-active": isActive,
|
|
34526
33641
|
disabled,
|
|
34527
33642
|
onClick: () => !disabled && handleSetActiveTab(value),
|
|
@@ -34537,12 +33652,12 @@ var TabComponent = ({ defaultTab, group, variant, children, className, headerCla
|
|
|
34537
33652
|
color: TabSelectorColor.TEXT
|
|
34538
33653
|
})
|
|
34539
33654
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
34540
|
-
className: cn$
|
|
33655
|
+
className: cn$1("relative w-full min-w-0 overflow-x-clip [-webkit-clip-path:inset(0)] [clip-path:inset(0)]", fullHeight && "min-h-0 flex-1"),
|
|
34541
33656
|
...containerProps,
|
|
34542
33657
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
34543
33658
|
role: "tablist",
|
|
34544
33659
|
"aria-orientation": "horizontal",
|
|
34545
|
-
className: cn$
|
|
33660
|
+
className: cn$1("grid w-full min-w-0", fullHeight && "h-full", isDragging ? "transition-none" : "transition-transform duration-300 ease-in-out"),
|
|
34546
33661
|
style: {
|
|
34547
33662
|
gridTemplateColumns: `repeat(${tabItems.length}, 100%)`,
|
|
34548
33663
|
transform: `translateX(-${activeTabIndex * 100 - (isDragging ? dragDeltaPct : 0)}%)`
|
|
@@ -34557,9 +33672,9 @@ var TabComponent = ({ defaultTab, group, variant, children, className, headerCla
|
|
|
34557
33672
|
"aria-hidden": !isActive,
|
|
34558
33673
|
tabIndex: isActive ? 0 : -1,
|
|
34559
33674
|
"data-active": isActive,
|
|
34560
|
-
className: cn$
|
|
33675
|
+
className: cn$1("w-full min-w-0 p-6 opacity-100 transition-opacity duration-300 ease-in-out", fullHeight && "h-full overflow-y-auto", !isActive && "pointer-events-none opacity-0", itemClassName),
|
|
34561
33676
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
34562
|
-
className: cn$
|
|
33677
|
+
className: cn$1("flex w-full min-w-0 flex-col items-stretch gap-6", fullHeight && "min-h-full"),
|
|
34563
33678
|
children
|
|
34564
33679
|
})
|
|
34565
33680
|
}, value);
|
|
@@ -44475,7 +43590,7 @@ var Modal = ({ children, isOpen, container, onClose, hasCloseButton = false, tit
|
|
|
44475
43590
|
padding: "none",
|
|
44476
43591
|
...props,
|
|
44477
43592
|
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
44478
|
-
className: cn$
|
|
43593
|
+
className: cn$1("relative flex-none px-4 pt-4", hasCloseButton && hasTitle ? `flex items-start` : hasCloseButton ? `flex justify-end` : hasTitle ? `items-center` : `hidden`),
|
|
44479
43594
|
children: [hasTitle && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(H3, {
|
|
44480
43595
|
className: "mb-2 ml-1 flex items-center justify-center font-bold text-lg",
|
|
44481
43596
|
children: title
|
|
@@ -44492,9 +43607,9 @@ var Modal = ({ children, isOpen, container, onClose, hasCloseButton = false, tit
|
|
|
44492
43607
|
size: ButtonSize.ICON_MD
|
|
44493
43608
|
})]
|
|
44494
43609
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
44495
|
-
className: cn$
|
|
43610
|
+
className: cn$1("flex min-h-0 w-full flex-1 flex-col", isScrollable === true && "overflow-auto", isScrollable === "y" && "overflow-y-auto overflow-x-hidden", isScrollable === "x" && "overflow-x-auto overflow-y-hidden", !isScrollable && "overflow-visible"),
|
|
44496
43611
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
44497
|
-
className: cn$
|
|
43612
|
+
className: cn$1("flex h-full w-full flex-1 flex-col", contentPaddingClass),
|
|
44498
43613
|
children
|
|
44499
43614
|
})
|
|
44500
43615
|
})]
|
|
@@ -44809,7 +43924,7 @@ var Table = ({ className, isRollable = false, displayModal, onClick, ...props })
|
|
|
44809
43924
|
className: "max-w-full overflow-x-auto rounded-2xl bg-background text-left [corner-shape:squircle] supports-[corner-shape:squircle]:rounded-3xl",
|
|
44810
43925
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("table", {
|
|
44811
43926
|
ref: tableRef,
|
|
44812
|
-
className: cn$
|
|
43927
|
+
className: cn$1("w-full table-auto overflow-hidden", displayModal && "[&_tbody_tr:hover]:bg-neutral/40 [&_tbody_tr:hover]:dark:bg-neutral-dark/40 [&_tbody_tr]:cursor-pointer [&_tbody_tr]:transition-colors", className),
|
|
44813
43928
|
onClick: handleTableClick,
|
|
44814
43929
|
onKeyDown: (e) => {
|
|
44815
43930
|
if (e.key === "Enter" || e.key === " ") handleTableClick(e);
|
|
@@ -44827,7 +43942,7 @@ var Table = ({ className, isRollable = false, displayModal, onClick, ...props })
|
|
|
44827
43942
|
className: "grid",
|
|
44828
43943
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("table", {
|
|
44829
43944
|
ref: modalTableRef,
|
|
44830
|
-
className: cn$
|
|
43945
|
+
className: cn$1("min-w-full max-w-full table-auto text-left", className),
|
|
44831
43946
|
...props
|
|
44832
43947
|
})
|
|
44833
43948
|
}) : /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, {})
|
|
@@ -44895,22 +44010,22 @@ var createCodeRenderer = (isDarkMode) => {
|
|
|
44895
44010
|
};
|
|
44896
44011
|
};
|
|
44897
44012
|
var BlockquoteRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("blockquote", {
|
|
44898
|
-
className: cn$
|
|
44013
|
+
className: cn$1("mt-5 gap-3 border-card border-l-4 pl-5 text-neutral [&_strong]:text-neutral", className),
|
|
44899
44014
|
...props
|
|
44900
44015
|
});
|
|
44901
44016
|
var UlRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ul", {
|
|
44902
|
-
className: cn$
|
|
44017
|
+
className: cn$1("mt-5 flex list-disc flex-col gap-3 pl-5 marker:text-neutral/80", className),
|
|
44903
44018
|
...props
|
|
44904
44019
|
});
|
|
44905
44020
|
var OlRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("ol", {
|
|
44906
|
-
className: cn$
|
|
44021
|
+
className: cn$1("mt-5 flex list-decimal flex-col gap-3 pl-5 marker:text-neutral/80", className),
|
|
44907
44022
|
...props
|
|
44908
44023
|
});
|
|
44909
44024
|
var ImgRenderer = ({ className, alt, src, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("img", {
|
|
44910
44025
|
...props,
|
|
44911
44026
|
alt: alt ?? "",
|
|
44912
44027
|
loading: "lazy",
|
|
44913
|
-
className: cn$
|
|
44028
|
+
className: cn$1("max-h-[80vh] max-w-full rounded-md", className),
|
|
44914
44029
|
src: src?.includes("github.com") ? src?.replace("github.com", "raw.githubusercontent.com").replace("/blob/", "/") : src
|
|
44915
44030
|
});
|
|
44916
44031
|
var createLinkRenderer = (locale) => {
|
|
@@ -44930,19 +44045,19 @@ var TableRenderer = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Table
|
|
|
44930
44045
|
...props
|
|
44931
44046
|
});
|
|
44932
44047
|
var ThRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("th", {
|
|
44933
|
-
className: cn$
|
|
44048
|
+
className: cn$1("border-neutral border-b bg-neutral/10 p-4", className),
|
|
44934
44049
|
...props
|
|
44935
44050
|
});
|
|
44936
44051
|
var TrRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("tr", {
|
|
44937
|
-
className: cn$
|
|
44052
|
+
className: cn$1("hover:/10 hover:bg-neutral/10", className),
|
|
44938
44053
|
...props
|
|
44939
44054
|
});
|
|
44940
44055
|
var TdRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", {
|
|
44941
|
-
className: cn$
|
|
44056
|
+
className: cn$1("border-neutral-500/50 border-b p-4", className),
|
|
44942
44057
|
...props
|
|
44943
44058
|
});
|
|
44944
44059
|
var HrRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("hr", {
|
|
44945
|
-
className: cn$
|
|
44060
|
+
className: cn$1("mx-6 mt-16 text-neutral", className),
|
|
44946
44061
|
...props
|
|
44947
44062
|
});
|
|
44948
44063
|
var TabsRenderer = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Tab, {
|
|
@@ -44951,11 +44066,11 @@ var TabsRenderer = (props) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Tab, {
|
|
|
44951
44066
|
headerClassName: "sticky rounded-xl top-24 z-5 bg-background/70 backdrop-blur overflow-x-auto"
|
|
44952
44067
|
});
|
|
44953
44068
|
var ColumnsRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
44954
|
-
className: cn$
|
|
44069
|
+
className: cn$1("flex gap-4 max-md:flex-col", className),
|
|
44955
44070
|
...props
|
|
44956
44071
|
});
|
|
44957
44072
|
var ColumnRenderer = ({ className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
44958
|
-
className: cn$
|
|
44073
|
+
className: cn$1("flex-1", className),
|
|
44959
44074
|
...props
|
|
44960
44075
|
});
|
|
44961
44076
|
var staticMarkdownComponents = {
|
|
@@ -45320,22 +44435,104 @@ var navigation_view_default = {
|
|
|
45320
44435
|
localIds: ["navigation-view::local::../@intlayer/design-system/dist/esm/components/DictionaryFieldEditor/NavigationView/navigationViewNode.content.mjs"]
|
|
45321
44436
|
};
|
|
45322
44437
|
//#endregion
|
|
45323
|
-
//#region ../@intlayer/design-system/dist/esm/
|
|
44438
|
+
//#region ../@intlayer/design-system/dist/esm/components/ContentEditor/ContentEditorInput.mjs
|
|
45324
44439
|
/**
|
|
45325
|
-
*
|
|
44440
|
+
* ContentEditorInput Component
|
|
45326
44441
|
*
|
|
45327
|
-
*
|
|
45328
|
-
*
|
|
45329
|
-
*
|
|
45330
|
-
*
|
|
44442
|
+
* An inline editing component for single-line text input with validation,
|
|
44443
|
+
* cancel/save functionality, and support for additional action buttons.
|
|
44444
|
+
*
|
|
44445
|
+
* ## Features
|
|
44446
|
+
* - **Inline Input Editing**: Edit single-line content with immediate feedback
|
|
44447
|
+
* - **Validation Support**: Optional content validation with visual feedback
|
|
44448
|
+
* - **Action Buttons**: Built-in save/cancel with support for additional buttons
|
|
44449
|
+
* - **Keyboard Shortcuts**: Enter to save, Escape to cancel
|
|
44450
|
+
* - **Accessibility**: Full ARIA support and keyboard navigation
|
|
44451
|
+
* - **State Management**: Handles editing states and validation
|
|
44452
|
+
*
|
|
44453
|
+
* ## Accessibility
|
|
44454
|
+
* - Proper ARIA labels and descriptions for all controls
|
|
44455
|
+
* - Keyboard navigation (Tab, Enter, Escape)
|
|
44456
|
+
* - Screen reader support for validation states
|
|
44457
|
+
* - Focus management and visual indicators
|
|
44458
|
+
*
|
|
44459
|
+
* @param children - Current input value
|
|
44460
|
+
* @param onContentChange - Callback when content is saved
|
|
44461
|
+
* @param disabled - Whether the editor is disabled
|
|
44462
|
+
* @param validate - Optional validation function
|
|
44463
|
+
* @param additionalButtons - Extra buttons to display
|
|
44464
|
+
* @param props - Additional Input component props
|
|
45331
44465
|
*/
|
|
45332
|
-
var
|
|
45333
|
-
const
|
|
45334
|
-
|
|
45335
|
-
|
|
45336
|
-
|
|
45337
|
-
|
|
45338
|
-
|
|
44466
|
+
var ContentEditorInput$1 = ({ children, onContentChange, disabled, validate, additionalButtons, ...props }) => {
|
|
44467
|
+
const [newValue, setNewValue] = (0, import_react.useState)(children);
|
|
44468
|
+
const [resetIncrementor, setResetIncrementor] = (0, import_react.useState)(0);
|
|
44469
|
+
const isEdited = newValue !== children;
|
|
44470
|
+
const handleCancel = () => {
|
|
44471
|
+
setNewValue(children);
|
|
44472
|
+
setResetIncrementor((prev) => prev + 1);
|
|
44473
|
+
};
|
|
44474
|
+
const handleValid = () => {
|
|
44475
|
+
onContentChange(newValue);
|
|
44476
|
+
};
|
|
44477
|
+
const handleOnContentChange = (e) => {
|
|
44478
|
+
setNewValue(e.currentTarget.value);
|
|
44479
|
+
};
|
|
44480
|
+
const handleKeyDown = (e) => {
|
|
44481
|
+
if (e.key === "Enter" && !disabled && isValid) {
|
|
44482
|
+
e.preventDefault();
|
|
44483
|
+
handleValid();
|
|
44484
|
+
} else if (e.key === "Escape") {
|
|
44485
|
+
e.preventDefault();
|
|
44486
|
+
handleCancel();
|
|
44487
|
+
}
|
|
44488
|
+
};
|
|
44489
|
+
(0, import_react.useEffect)(() => {
|
|
44490
|
+
setNewValue(children);
|
|
44491
|
+
setResetIncrementor((prev) => prev + 1);
|
|
44492
|
+
}, [children]);
|
|
44493
|
+
const isValid = validate?.(newValue) ?? true;
|
|
44494
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
44495
|
+
className: "flex size-full flex-col items-center justify-between gap-2",
|
|
44496
|
+
role: "group",
|
|
44497
|
+
"aria-label": "Content editor input",
|
|
44498
|
+
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Input, {
|
|
44499
|
+
onChange: handleOnContentChange,
|
|
44500
|
+
onKeyDown: handleKeyDown,
|
|
44501
|
+
"aria-label": "Editable input value",
|
|
44502
|
+
"aria-describedby": isEdited || additionalButtons ? "content-editor-input-actions" : void 0,
|
|
44503
|
+
"aria-invalid": !isValid,
|
|
44504
|
+
variant: InputVariant.INVISIBLE,
|
|
44505
|
+
className: "size-full",
|
|
44506
|
+
defaultValue: children,
|
|
44507
|
+
disabled,
|
|
44508
|
+
...props
|
|
44509
|
+
}, resetIncrementor), (isEdited || additionalButtons) && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
44510
|
+
id: "content-editor-input-actions",
|
|
44511
|
+
className: "flex w-full items-center justify-end gap-2",
|
|
44512
|
+
role: "group",
|
|
44513
|
+
"aria-label": "Edit actions",
|
|
44514
|
+
children: [isEdited && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
|
|
44515
|
+
Icon: Check,
|
|
44516
|
+
label: `Save changes${!isValid ? " (invalid content)" : ""}`,
|
|
44517
|
+
variant: ButtonVariant.HOVERABLE,
|
|
44518
|
+
color: ButtonColor.TEXT,
|
|
44519
|
+
size: ButtonSize.ICON_SM,
|
|
44520
|
+
className: "cursor-pointer hover:scale-110",
|
|
44521
|
+
disabled: disabled || !isValid,
|
|
44522
|
+
onClick: handleValid,
|
|
44523
|
+
"aria-describedby": !isValid ? "validation-error" : void 0
|
|
44524
|
+
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
|
|
44525
|
+
Icon: X$1,
|
|
44526
|
+
label: "Cancel changes",
|
|
44527
|
+
variant: ButtonVariant.HOVERABLE,
|
|
44528
|
+
size: ButtonSize.ICON_SM,
|
|
44529
|
+
color: ButtonColor.TEXT,
|
|
44530
|
+
className: "cursor-pointer hover:scale-110",
|
|
44531
|
+
onClick: handleCancel,
|
|
44532
|
+
disabled
|
|
44533
|
+
})] }), additionalButtons]
|
|
44534
|
+
})]
|
|
44535
|
+
}, String(children));
|
|
45339
44536
|
};
|
|
45340
44537
|
//#endregion
|
|
45341
44538
|
//#region ../../node_modules/.bun/@tanstack+query-core@5.95.2/node_modules/@tanstack/query-core/build/modern/subscribable.js
|
|
@@ -48809,7 +48006,7 @@ function defineErrorCodes(codes) {
|
|
|
48809
48006
|
}]));
|
|
48810
48007
|
}
|
|
48811
48008
|
//#endregion
|
|
48812
|
-
//#region ../../node_modules/.bun/@better-auth+passkey@1.5.5+
|
|
48009
|
+
//#region ../../node_modules/.bun/@better-auth+passkey@1.5.5+31e0a94cb89c09dd/node_modules/@better-auth/passkey/dist/error-codes-Dvu2mv33.mjs
|
|
48813
48010
|
var PASSKEY_ERROR_CODES = defineErrorCodes({
|
|
48814
48011
|
CHALLENGE_NOT_FOUND: "Challenge not found",
|
|
48815
48012
|
YOU_ARE_NOT_ALLOWED_TO_REGISTER_THIS_PASSKEY: "You are not allowed to register this passkey",
|
|
@@ -49271,7 +48468,7 @@ async function startAuthentication(options) {
|
|
|
49271
48468
|
};
|
|
49272
48469
|
}
|
|
49273
48470
|
//#endregion
|
|
49274
|
-
//#region ../../node_modules/.bun/better-auth@1.5.5+
|
|
48471
|
+
//#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/broadcast-channel.mjs
|
|
49275
48472
|
var kBroadcastChannel = Symbol.for("better-auth:broadcast-channel");
|
|
49276
48473
|
var now$1 = () => Math.floor(Date.now() / 1e3);
|
|
49277
48474
|
var WindowBroadcastChannel = class {
|
|
@@ -49314,7 +48511,7 @@ function getGlobalBroadcastChannel(name = "better-auth.message") {
|
|
|
49314
48511
|
return globalThis[kBroadcastChannel];
|
|
49315
48512
|
}
|
|
49316
48513
|
//#endregion
|
|
49317
|
-
//#region ../../node_modules/.bun/better-auth@1.5.5+
|
|
48514
|
+
//#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/focus-manager.mjs
|
|
49318
48515
|
var kFocusManager = Symbol.for("better-auth:focus-manager");
|
|
49319
48516
|
var WindowFocusManager = class {
|
|
49320
48517
|
listeners = /* @__PURE__ */ new Set();
|
|
@@ -49343,7 +48540,7 @@ function getGlobalFocusManager() {
|
|
|
49343
48540
|
return globalThis[kFocusManager];
|
|
49344
48541
|
}
|
|
49345
48542
|
//#endregion
|
|
49346
|
-
//#region ../../node_modules/.bun/better-auth@1.5.5+
|
|
48543
|
+
//#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/online-manager.mjs
|
|
49347
48544
|
var kOnlineManager = Symbol.for("better-auth:online-manager");
|
|
49348
48545
|
var WindowOnlineManager = class {
|
|
49349
48546
|
listeners = /* @__PURE__ */ new Set();
|
|
@@ -49375,7 +48572,7 @@ function getGlobalOnlineManager() {
|
|
|
49375
48572
|
return globalThis[kOnlineManager];
|
|
49376
48573
|
}
|
|
49377
48574
|
//#endregion
|
|
49378
|
-
//#region ../../node_modules/.bun/better-auth@1.5.5+
|
|
48575
|
+
//#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/parser.mjs
|
|
49379
48576
|
var PROTO_POLLUTION_PATTERNS = {
|
|
49380
48577
|
proto: /"(?:_|\\u0{2}5[Ff]){2}(?:p|\\u0{2}70)(?:r|\\u0{2}72)(?:o|\\u0{2}6[Ff])(?:t|\\u0{2}74)(?:o|\\u0{2}6[Ff])(?:_|\\u0{2}5[Ff]){2}"\s*:/,
|
|
49381
48578
|
constructor: /"(?:c|\\u0063)(?:o|\\u006[Ff])(?:n|\\u006[Ee])(?:s|\\u0073)(?:t|\\u0074)(?:r|\\u0072)(?:u|\\u0075)(?:c|\\u0063)(?:t|\\u0074)(?:o|\\u006[Ff])(?:r|\\u0072)"\s*:/,
|
|
@@ -49557,7 +48754,7 @@ var onMount = ($store, initialize) => {
|
|
|
49557
48754
|
});
|
|
49558
48755
|
};
|
|
49559
48756
|
//#endregion
|
|
49560
|
-
//#region ../../node_modules/.bun/better-auth@1.5.5+
|
|
48757
|
+
//#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/query.mjs
|
|
49561
48758
|
var isServer = () => typeof window === "undefined";
|
|
49562
48759
|
var useAuthQuery = (initializedAtom, path, $fetch, options) => {
|
|
49563
48760
|
const value = /* @__PURE__ */ atom({
|
|
@@ -49651,7 +48848,7 @@ var useAuthQuery = (initializedAtom, path, $fetch, options) => {
|
|
|
49651
48848
|
return value;
|
|
49652
48849
|
};
|
|
49653
48850
|
//#endregion
|
|
49654
|
-
//#region ../../node_modules/.bun/better-auth@1.5.5+
|
|
48851
|
+
//#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/session-refresh.mjs
|
|
49655
48852
|
var now = () => Math.floor(Date.now() / 1e3);
|
|
49656
48853
|
/**
|
|
49657
48854
|
* Rate limit: don't refetch on focus if a session request was made within this many seconds
|
|
@@ -49850,7 +49047,7 @@ var BetterAuthError = class extends Error {
|
|
|
49850
49047
|
}
|
|
49851
49048
|
};
|
|
49852
49049
|
//#endregion
|
|
49853
|
-
//#region ../../node_modules/.bun/better-auth@1.5.5+
|
|
49050
|
+
//#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/utils/url.mjs
|
|
49854
49051
|
function checkHasPath(url) {
|
|
49855
49052
|
try {
|
|
49856
49053
|
return (new URL(url).pathname.replace(/\/+$/, "") || "/") !== "/";
|
|
@@ -49922,7 +49119,7 @@ function getOrigin(url) {
|
|
|
49922
49119
|
}
|
|
49923
49120
|
}
|
|
49924
49121
|
//#endregion
|
|
49925
|
-
//#region ../../node_modules/.bun/better-auth@1.5.5+
|
|
49122
|
+
//#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/fetch-plugins.mjs
|
|
49926
49123
|
var redirectPlugin = {
|
|
49927
49124
|
id: "redirect",
|
|
49928
49125
|
name: "Redirect",
|
|
@@ -49937,7 +49134,7 @@ var redirectPlugin = {
|
|
|
49937
49134
|
} }
|
|
49938
49135
|
};
|
|
49939
49136
|
//#endregion
|
|
49940
|
-
//#region ../../node_modules/.bun/better-auth@1.5.5+
|
|
49137
|
+
//#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/session-atom.mjs
|
|
49941
49138
|
function getSessionAtom($fetch, options) {
|
|
49942
49139
|
const $signal = /* @__PURE__ */ atom(false);
|
|
49943
49140
|
const session = useAuthQuery($signal, "/get-session", $fetch, { method: "GET" });
|
|
@@ -50396,7 +49593,7 @@ var betterFetch = async (url, options) => {
|
|
|
50396
49593
|
};
|
|
50397
49594
|
};
|
|
50398
49595
|
//#endregion
|
|
50399
|
-
//#region ../../node_modules/.bun/better-auth@1.5.5+
|
|
49596
|
+
//#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/config.mjs
|
|
50400
49597
|
var resolvePublicAuthUrl = (basePath) => {
|
|
50401
49598
|
if (typeof process === "undefined") return void 0;
|
|
50402
49599
|
const path = basePath ?? "/api/auth";
|
|
@@ -50494,12 +49691,12 @@ var getClientConfig = (options, loadEnv) => {
|
|
|
50494
49691
|
};
|
|
50495
49692
|
};
|
|
50496
49693
|
//#endregion
|
|
50497
|
-
//#region ../../node_modules/.bun/better-auth@1.5.5+
|
|
49694
|
+
//#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/utils/is-atom.mjs
|
|
50498
49695
|
function isAtom(value) {
|
|
50499
49696
|
return typeof value === "object" && value !== null && "get" in value && typeof value.get === "function" && "lc" in value && typeof value.lc === "number";
|
|
50500
49697
|
}
|
|
50501
49698
|
//#endregion
|
|
50502
|
-
//#region ../../node_modules/.bun/better-auth@1.5.5+
|
|
49699
|
+
//#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/proxy.mjs
|
|
50503
49700
|
function getMethod(path, knownPathMethods, args) {
|
|
50504
49701
|
const method = knownPathMethods[path];
|
|
50505
49702
|
const { fetchOptions, query: _query, ...body } = args || {};
|
|
@@ -50579,7 +49776,7 @@ function capitalizeFirstLetter(str) {
|
|
|
50579
49776
|
return str.charAt(0).toUpperCase() + str.slice(1);
|
|
50580
49777
|
}
|
|
50581
49778
|
//#endregion
|
|
50582
|
-
//#region ../../node_modules/.bun/better-auth@1.5.5+
|
|
49779
|
+
//#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/client/vanilla.mjs
|
|
50583
49780
|
function createAuthClient(options) {
|
|
50584
49781
|
const { pluginPathMethods, pluginsActions, pluginsAtoms, $fetch, atomListeners, $store } = getClientConfig(options);
|
|
50585
49782
|
const resolvedHooks = {};
|
|
@@ -50592,7 +49789,7 @@ function createAuthClient(options) {
|
|
|
50592
49789
|
}, $fetch, pluginPathMethods, pluginsAtoms, atomListeners);
|
|
50593
49790
|
}
|
|
50594
49791
|
//#endregion
|
|
50595
|
-
//#region ../../node_modules/.bun/@better-auth+passkey@1.5.5+
|
|
49792
|
+
//#region ../../node_modules/.bun/@better-auth+passkey@1.5.5+31e0a94cb89c09dd/node_modules/@better-auth/passkey/dist/client.mjs
|
|
50596
49793
|
var getPasskeyActions = ($fetch, { $listPasskeys, $store }) => {
|
|
50597
49794
|
const signInPasskey = async (opts, options) => {
|
|
50598
49795
|
const response = await $fetch("/passkey/generate-authenticate-options", {
|
|
@@ -50734,7 +49931,7 @@ var passkeyClient = () => {
|
|
|
50734
49931
|
};
|
|
50735
49932
|
};
|
|
50736
49933
|
//#endregion
|
|
50737
|
-
//#region ../../node_modules/.bun/@better-auth+sso@1.5.5+
|
|
49934
|
+
//#region ../../node_modules/.bun/@better-auth+sso@1.5.5+8a01f4d48779b378/node_modules/@better-auth/sso/dist/client.mjs
|
|
50738
49935
|
var ssoClient = (options) => {
|
|
50739
49936
|
return {
|
|
50740
49937
|
id: "sso-client",
|
|
@@ -50746,7 +49943,7 @@ var ssoClient = (options) => {
|
|
|
50746
49943
|
};
|
|
50747
49944
|
};
|
|
50748
49945
|
//#endregion
|
|
50749
|
-
//#region ../../node_modules/.bun/better-auth@1.5.5+
|
|
49946
|
+
//#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/plugins/magic-link/client.mjs
|
|
50750
49947
|
var magicLinkClient = () => {
|
|
50751
49948
|
return {
|
|
50752
49949
|
id: "magic-link",
|
|
@@ -50754,7 +49951,7 @@ var magicLinkClient = () => {
|
|
|
50754
49951
|
};
|
|
50755
49952
|
};
|
|
50756
49953
|
//#endregion
|
|
50757
|
-
//#region ../../node_modules/.bun/better-auth@1.5.5+
|
|
49954
|
+
//#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/plugins/two-factor/error-code.mjs
|
|
50758
49955
|
var TWO_FACTOR_ERROR_CODES = defineErrorCodes({
|
|
50759
49956
|
OTP_NOT_ENABLED: "OTP not enabled",
|
|
50760
49957
|
OTP_HAS_EXPIRED: "OTP has expired",
|
|
@@ -50767,7 +49964,7 @@ var TWO_FACTOR_ERROR_CODES = defineErrorCodes({
|
|
|
50767
49964
|
INVALID_TWO_FACTOR_COOKIE: "Invalid two factor cookie"
|
|
50768
49965
|
});
|
|
50769
49966
|
//#endregion
|
|
50770
|
-
//#region ../../node_modules/.bun/better-auth@1.5.5+
|
|
49967
|
+
//#region ../../node_modules/.bun/better-auth@1.5.5+4f9b01d25afb9007/node_modules/better-auth/dist/plugins/two-factor/client.mjs
|
|
50771
49968
|
var twoFactorClient = (options) => {
|
|
50772
49969
|
return {
|
|
50773
49970
|
id: "two-factor",
|
|
@@ -51147,106 +50344,6 @@ var useWriteDictionary = () => {
|
|
|
51147
50344
|
});
|
|
51148
50345
|
};
|
|
51149
50346
|
//#endregion
|
|
51150
|
-
//#region ../@intlayer/design-system/dist/esm/components/ContentEditor/ContentEditorInput.mjs
|
|
51151
|
-
/**
|
|
51152
|
-
* ContentEditorInput Component
|
|
51153
|
-
*
|
|
51154
|
-
* An inline editing component for single-line text input with validation,
|
|
51155
|
-
* cancel/save functionality, and support for additional action buttons.
|
|
51156
|
-
*
|
|
51157
|
-
* ## Features
|
|
51158
|
-
* - **Inline Input Editing**: Edit single-line content with immediate feedback
|
|
51159
|
-
* - **Validation Support**: Optional content validation with visual feedback
|
|
51160
|
-
* - **Action Buttons**: Built-in save/cancel with support for additional buttons
|
|
51161
|
-
* - **Keyboard Shortcuts**: Enter to save, Escape to cancel
|
|
51162
|
-
* - **Accessibility**: Full ARIA support and keyboard navigation
|
|
51163
|
-
* - **State Management**: Handles editing states and validation
|
|
51164
|
-
*
|
|
51165
|
-
* ## Accessibility
|
|
51166
|
-
* - Proper ARIA labels and descriptions for all controls
|
|
51167
|
-
* - Keyboard navigation (Tab, Enter, Escape)
|
|
51168
|
-
* - Screen reader support for validation states
|
|
51169
|
-
* - Focus management and visual indicators
|
|
51170
|
-
*
|
|
51171
|
-
* @param children - Current input value
|
|
51172
|
-
* @param onContentChange - Callback when content is saved
|
|
51173
|
-
* @param disabled - Whether the editor is disabled
|
|
51174
|
-
* @param validate - Optional validation function
|
|
51175
|
-
* @param additionalButtons - Extra buttons to display
|
|
51176
|
-
* @param props - Additional Input component props
|
|
51177
|
-
*/
|
|
51178
|
-
var ContentEditorInput$1 = ({ children, onContentChange, disabled, validate, additionalButtons, ...props }) => {
|
|
51179
|
-
const [newValue, setNewValue] = (0, import_react.useState)(children);
|
|
51180
|
-
const [resetIncrementor, setResetIncrementor] = (0, import_react.useState)(0);
|
|
51181
|
-
const isEdited = newValue !== children;
|
|
51182
|
-
const handleCancel = () => {
|
|
51183
|
-
setNewValue(children);
|
|
51184
|
-
setResetIncrementor((prev) => prev + 1);
|
|
51185
|
-
};
|
|
51186
|
-
const handleValid = () => {
|
|
51187
|
-
onContentChange(newValue);
|
|
51188
|
-
};
|
|
51189
|
-
const handleOnContentChange = (e) => {
|
|
51190
|
-
setNewValue(e.currentTarget.value);
|
|
51191
|
-
};
|
|
51192
|
-
const handleKeyDown = (e) => {
|
|
51193
|
-
if (e.key === "Enter" && !disabled && isValid) {
|
|
51194
|
-
e.preventDefault();
|
|
51195
|
-
handleValid();
|
|
51196
|
-
} else if (e.key === "Escape") {
|
|
51197
|
-
e.preventDefault();
|
|
51198
|
-
handleCancel();
|
|
51199
|
-
}
|
|
51200
|
-
};
|
|
51201
|
-
(0, import_react.useEffect)(() => {
|
|
51202
|
-
setNewValue(children);
|
|
51203
|
-
setResetIncrementor((prev) => prev + 1);
|
|
51204
|
-
}, [children]);
|
|
51205
|
-
const isValid = validate?.(newValue) ?? true;
|
|
51206
|
-
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
51207
|
-
className: "flex size-full flex-col items-center justify-between gap-2",
|
|
51208
|
-
role: "group",
|
|
51209
|
-
"aria-label": "Content editor input",
|
|
51210
|
-
children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Input, {
|
|
51211
|
-
onChange: handleOnContentChange,
|
|
51212
|
-
onKeyDown: handleKeyDown,
|
|
51213
|
-
"aria-label": "Editable input value",
|
|
51214
|
-
"aria-describedby": isEdited || additionalButtons ? "content-editor-input-actions" : void 0,
|
|
51215
|
-
"aria-invalid": !isValid,
|
|
51216
|
-
variant: InputVariant.INVISIBLE,
|
|
51217
|
-
className: "size-full",
|
|
51218
|
-
defaultValue: children,
|
|
51219
|
-
disabled,
|
|
51220
|
-
...props
|
|
51221
|
-
}, resetIncrementor), (isEdited || additionalButtons) && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
51222
|
-
id: "content-editor-input-actions",
|
|
51223
|
-
className: "flex w-full items-center justify-end gap-2",
|
|
51224
|
-
role: "group",
|
|
51225
|
-
"aria-label": "Edit actions",
|
|
51226
|
-
children: [isEdited && /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
|
|
51227
|
-
Icon: Check,
|
|
51228
|
-
label: `Save changes${!isValid ? " (invalid content)" : ""}`,
|
|
51229
|
-
variant: ButtonVariant.HOVERABLE,
|
|
51230
|
-
color: ButtonColor.TEXT,
|
|
51231
|
-
size: ButtonSize.ICON_SM,
|
|
51232
|
-
className: "cursor-pointer hover:scale-110",
|
|
51233
|
-
disabled: disabled || !isValid,
|
|
51234
|
-
onClick: handleValid,
|
|
51235
|
-
"aria-describedby": !isValid ? "validation-error" : void 0
|
|
51236
|
-
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Button, {
|
|
51237
|
-
Icon: X$1,
|
|
51238
|
-
label: "Cancel changes",
|
|
51239
|
-
variant: ButtonVariant.HOVERABLE,
|
|
51240
|
-
size: ButtonSize.ICON_SM,
|
|
51241
|
-
color: ButtonColor.TEXT,
|
|
51242
|
-
className: "cursor-pointer hover:scale-110",
|
|
51243
|
-
onClick: handleCancel,
|
|
51244
|
-
disabled
|
|
51245
|
-
})] }), additionalButtons]
|
|
51246
|
-
})]
|
|
51247
|
-
}, String(children));
|
|
51248
|
-
};
|
|
51249
|
-
//#endregion
|
|
51250
50347
|
//#region ../@intlayer/design-system/dist/esm/hooks/useUser/index.mjs
|
|
51251
50348
|
var useUser = () => {
|
|
51252
50349
|
const { session, revalidateSession, setSession } = useAuth();
|
|
@@ -51370,6 +50467,24 @@ var ContentEditorTextArea$1 = ({ children, onContentChange, disabled, validate,
|
|
|
51370
50467
|
}, children);
|
|
51371
50468
|
};
|
|
51372
50469
|
//#endregion
|
|
50470
|
+
//#region ../@intlayer/design-system/dist/esm/components/DictionaryFieldEditor/ContentEditorView/object.mjs
|
|
50471
|
+
/**
|
|
50472
|
+
* Rename a key in an object by keeping the element order
|
|
50473
|
+
*
|
|
50474
|
+
* @param obj The original object
|
|
50475
|
+
* @param oldKey The key in the object that needs to be renamed
|
|
50476
|
+
* @param newKey The new key name to replace the old key
|
|
50477
|
+
* @returns A new object with the renamed key
|
|
50478
|
+
*/
|
|
50479
|
+
var renameKey = (obj, oldKey, newKey) => {
|
|
50480
|
+
const newObj = { ...obj };
|
|
50481
|
+
for (const key of Object.keys(obj)) if (key === oldKey) {
|
|
50482
|
+
newObj[newKey] = obj[oldKey];
|
|
50483
|
+
delete newObj[oldKey];
|
|
50484
|
+
} else newObj[key] = obj[key];
|
|
50485
|
+
return newObj;
|
|
50486
|
+
};
|
|
50487
|
+
//#endregion
|
|
51373
50488
|
//#region ../@intlayer/design-system/dist/esm/components/DictionaryFieldEditor/EnumKeyInput.mjs
|
|
51374
50489
|
var extractInitialState = (value) => {
|
|
51375
50490
|
let comparator;
|
|
@@ -54368,7 +53483,7 @@ var useFormField = () => {
|
|
|
54368
53483
|
* @returns A rendered information tag with icon and text content
|
|
54369
53484
|
*/
|
|
54370
53485
|
var InformationTag = ({ className, children, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("i", {
|
|
54371
|
-
className: cn$
|
|
53486
|
+
className: cn$1("text-neutral-400 text-xs", className),
|
|
54372
53487
|
...props,
|
|
54373
53488
|
children: ["ⓘ ", children]
|
|
54374
53489
|
});
|
|
@@ -57287,7 +56402,7 @@ var Form$1 = ({ schema, onSubmit: onSubmitProp, onSubmitSuccess: onSubmitSuccess
|
|
|
57287
56402
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(FormProvider, {
|
|
57288
56403
|
...props,
|
|
57289
56404
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("form", {
|
|
57290
|
-
className: cn$
|
|
56405
|
+
className: cn$1("flex flex-col gap-y-6", className),
|
|
57291
56406
|
onSubmit: props.handleSubmit(onSubmit),
|
|
57292
56407
|
autoComplete: autoComplete ? "on" : "off",
|
|
57293
56408
|
noValidate: true,
|
|
@@ -57314,7 +56429,7 @@ var useForm = (schema, props) => {
|
|
|
57314
56429
|
var FormLabel = ({ className, ...props }) => {
|
|
57315
56430
|
const { error, formItemId } = useFormField();
|
|
57316
56431
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Label$1, {
|
|
57317
|
-
className: cn$
|
|
56432
|
+
className: cn$1("mb-2", error && "text-error", className),
|
|
57318
56433
|
htmlFor: formItemId,
|
|
57319
56434
|
...props
|
|
57320
56435
|
});
|
|
@@ -57333,7 +56448,7 @@ var FormLabelLayout = ({ children, isRequired, info, htmlFor, className }) => /*
|
|
|
57333
56448
|
htmlFor,
|
|
57334
56449
|
id: `${htmlFor}-label`,
|
|
57335
56450
|
suppressHydrationWarning: true,
|
|
57336
|
-
className:
|
|
56451
|
+
className: cn$1("font-bold", className),
|
|
57337
56452
|
children: [children, /* @__PURE__ */ (0, import_jsx_runtime.jsx)(RequiredStar, { isRequired })]
|
|
57338
56453
|
}), info && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(InformationTag, { content: info })]
|
|
57339
56454
|
});
|
|
@@ -58542,7 +57657,7 @@ var SaveForm = ({ dictionary, mode, className, onDelete, onSave, ...props }) =>
|
|
|
58542
57657
|
})]
|
|
58543
57658
|
})
|
|
58544
57659
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("form", {
|
|
58545
|
-
className: cn$
|
|
57660
|
+
className: cn$1("flex justify-end gap-2 max-md:flex-col", className),
|
|
58546
57661
|
...props,
|
|
58547
57662
|
children: [
|
|
58548
57663
|
mode.includes("remote") && isDistantDictionary && onDelete && isAuthenticated && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Form.Button, {
|
|
@@ -59002,7 +58117,7 @@ var DictionaryDetailsForm = ({ dictionary, mode }) => {
|
|
|
59002
58117
|
};
|
|
59003
58118
|
//#endregion
|
|
59004
58119
|
//#region ../@intlayer/design-system/dist/esm/components/IDE/MonacoCode.mjs
|
|
59005
|
-
var Editor = (0, import_react.lazy)(() => __vitePreload(() => import("./dist-D8J9DkzO.js").then((mod) => ({ default: mod.Editor })), __vite__mapDeps([6,1,
|
|
58120
|
+
var Editor = (0, import_react.lazy)(() => __vitePreload(() => import("./dist-D8J9DkzO.js").then((mod) => ({ default: mod.Editor })), __vite__mapDeps([6,1,3])));
|
|
59006
58121
|
var MonacoCode = ({ children, language, isDarkMode, showLineNumbers, showCopyButton = true, isReadOnly = false, onChange }) => {
|
|
59007
58122
|
const containerRef = (0, import_react.useRef)(null);
|
|
59008
58123
|
const ideRef = (0, import_react.useRef)(null);
|
|
@@ -59050,11 +58165,11 @@ var MonacoCode = ({ children, language, isDarkMode, showLineNumbers, showCopyBut
|
|
|
59050
58165
|
};
|
|
59051
58166
|
const isShowLineNumbers = showLineNumbers ?? (typeof children === "string" ? children.split("\n").length > 1 : false);
|
|
59052
58167
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("div", {
|
|
59053
|
-
className: cn$
|
|
58168
|
+
className: cn$1("relative h-full w-full text-sm", showLineNumbers && "ml-0"),
|
|
59054
58169
|
children: [showCopyButton && /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
59055
58170
|
className: "sticky top-5 z-10",
|
|
59056
58171
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
59057
|
-
className: cn$
|
|
58172
|
+
className: cn$1("absolute right-2 bottom-0 flex h-7 items-center"),
|
|
59058
58173
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(CopyButton, { content: children })
|
|
59059
58174
|
})
|
|
59060
58175
|
}), /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
@@ -59820,13 +58935,13 @@ var DictionaryFieldEditor = ({ dictionary, onClickDictionaryList, isDarkMode, mo
|
|
|
59820
58935
|
//#endregion
|
|
59821
58936
|
//#region ../@intlayer/design-system/dist/esm/components/MaxWidthSmoother/index.mjs
|
|
59822
58937
|
var MaxWidthSmoother = ({ children, isHidden, minWidth = 0, align = "left", className, ...props }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
59823
|
-
className: cn$
|
|
58938
|
+
className: cn$1("relative grid h-full grid-cols-[0fr] overflow-x-hidden overflow-y-hidden transition-all duration-500 ease-in-out", isHidden ? "" : "grid-cols-[1fr]", className),
|
|
59824
58939
|
"aria-hidden": isHidden,
|
|
59825
58940
|
inert: isHidden ? true : void 0,
|
|
59826
58941
|
...props,
|
|
59827
58942
|
children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
59828
58943
|
style: { minWidth: `${minWidth}px` },
|
|
59829
|
-
className: cn$
|
|
58944
|
+
className: cn$1(align === "right" && "ml-auto"),
|
|
59830
58945
|
children
|
|
59831
58946
|
})
|
|
59832
58947
|
});
|
|
@@ -61201,15 +60316,12 @@ var long_press_message_default = {
|
|
|
61201
60316
|
localIds: ["long-press-message::local::client/src/components/Editor/LongPressMessage/index.content.ts"]
|
|
61202
60317
|
};
|
|
61203
60318
|
//#endregion
|
|
61204
|
-
//#region client/src/utils/cn.ts
|
|
61205
|
-
var cn = (...inputs) => twMerge(clsx(inputs));
|
|
61206
|
-
//#endregion
|
|
61207
60319
|
//#region client/src/components/Editor/LongPressMessage/index.tsx
|
|
61208
60320
|
var LongPressMessage = () => {
|
|
61209
60321
|
const { message } = useDictionary(long_press_message_default);
|
|
61210
60322
|
const [hoveredContent] = useCrossFrameState(MessageKey.INTLAYER_HOVERED_CONTENT_CHANGED, null);
|
|
61211
60323
|
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)("div", {
|
|
61212
|
-
className: cn("rounded-2xl bg-neutral/30 px-3 py-1 font-bold text-sm text-text transition-opacity duration-100", hoveredContent?.dictionaryKey ? "opacity-100" : "opacity-0"),
|
|
60324
|
+
className: cn$1("rounded-2xl bg-neutral/30 px-3 py-1 font-bold text-sm text-text transition-opacity duration-100", hoveredContent?.dictionaryKey ? "opacity-100" : "opacity-0"),
|
|
61213
60325
|
children: hoveredContent?.dictionaryKey ? message({ dictionaryKey: hoveredContent.dictionaryKey }) : ""
|
|
61214
60326
|
});
|
|
61215
60327
|
};
|
|
@@ -61520,7 +60632,7 @@ var IframeController = ({ iframeRef, applicationPath }) => {
|
|
|
61520
60632
|
src: `${editor.applicationURL}${applicationPath}`,
|
|
61521
60633
|
title: content.intlayerApplication.value,
|
|
61522
60634
|
sandbox: "allow-scripts allow-same-origin",
|
|
61523
|
-
className: cn("size-full", loading && "hidden"),
|
|
60635
|
+
className: cn$1("size-full", loading && "hidden"),
|
|
61524
60636
|
ref: iframeRef,
|
|
61525
60637
|
onLoad: () => {
|
|
61526
60638
|
setLoading(false);
|