@seij/common-ui 0.1.1 → 0.1.3

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.
Files changed (41) hide show
  1. package/README.md +15 -3
  2. package/dist/index.d.ts +3 -2
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +101 -95
  5. package/dist/index.js.map +1 -1
  6. package/dist/init/SeijUIProvider.d.ts.map +1 -1
  7. package/dist/init/SeijUIProvider.js +8 -8
  8. package/dist/init/SeijUIProvider.js.map +1 -1
  9. package/dist/lib/applicationshell/ApplicationShell.js +30 -30
  10. package/dist/lib/applicationshell/ApplicationShell.js.map +1 -1
  11. package/dist/lib/i18n/i18n.detect.js +5 -6
  12. package/dist/lib/i18n/i18n.detect.js.map +1 -1
  13. package/dist/lib/i18n/i18n.react.d.ts +2 -11
  14. package/dist/lib/i18n/i18n.react.d.ts.map +1 -1
  15. package/dist/lib/i18n/i18n.react.js +29 -23
  16. package/dist/lib/i18n/i18n.react.js.map +1 -1
  17. package/dist/lib/i18n/i18n.service.d.ts +27 -0
  18. package/dist/lib/i18n/i18n.service.d.ts.map +1 -0
  19. package/dist/lib/i18n/i18n.service.js +65 -0
  20. package/dist/lib/i18n/i18n.service.js.map +1 -0
  21. package/dist/lib/i18n/i18n.types.d.ts +3 -3
  22. package/dist/lib/i18n/i18n.types.d.ts.map +1 -1
  23. package/dist/lib/i18n/index.d.ts +2 -1
  24. package/dist/lib/i18n/index.d.ts.map +1 -1
  25. package/dist/lib/localdate/InputLocalDate.js +1 -1
  26. package/dist/lib/localdate/InputLocalDate.js.map +1 -1
  27. package/dist/lib/month/InputMonth.js +1 -1
  28. package/dist/lib/month/InputMonth.js.map +1 -1
  29. package/dist/lib/number/InputNumber.js +56 -56
  30. package/dist/lib/number/InputNumber.js.map +1 -1
  31. package/dist/lib/percent/InputPercent.js +12 -12
  32. package/dist/lib/percent/InputPercent.js.map +1 -1
  33. package/dist/lib/select/InputSelect.js +15 -16
  34. package/dist/lib/select/InputSelect.js.map +1 -1
  35. package/dist/lib/view_layout/ViewTitle.js +16 -17
  36. package/dist/lib/view_layout/ViewTitle.js.map +1 -1
  37. package/package.json +4 -4
  38. package/dist/lib/i18n/i18n.factory.d.ts +0 -3
  39. package/dist/lib/i18n/i18n.factory.d.ts.map +0 -1
  40. package/dist/lib/i18n/i18n.factory.js +0 -70
  41. package/dist/lib/i18n/i18n.factory.js.map +0 -1
@@ -1,8 +1,8 @@
1
1
  import { jsxs as c, jsx as n } from "react/jsx-runtime";
2
- import { makeStyles as y, Button as r, Title3 as x, Menu as b, MenuTrigger as g, MenuPopover as C, MenuList as I, MenuItem as k } from "@fluentui/react-components";
3
- import { ArrowLeftFilled as A, MoreVerticalFilled as M, AddSquareRegular as N, DeleteRegular as j } from "@fluentui/react-icons";
4
- import { isFunction as v } from "lodash-es";
5
- const B = y({
2
+ import { makeStyles as h, Button as r, Title3 as y, Menu as x, MenuTrigger as b, MenuPopover as g, MenuList as C, MenuItem as I } from "@fluentui/react-components";
3
+ import { ArrowLeftFilled as k, MoreVerticalFilled as A, AddSquareRegular as M, DeleteRegular as N } from "@fluentui/react-icons";
4
+ import { isFunction as j } from "lodash-es";
5
+ const v = h({
6
6
  root: {
7
7
  display: "flex",
8
8
  align: "center",
@@ -34,38 +34,37 @@ const B = y({
34
34
  justifyContent: "flex-end"
35
35
  }
36
36
  });
37
- function E({
37
+ function w({
38
38
  children: l,
39
39
  onBack: t,
40
40
  actions: i
41
41
  }) {
42
- const s = B(), d = v(t), o = (i ?? []).filter((e) => e.type === "ADDITIONAL"), p = (i ?? []).filter((e) => e.type === "SECONDARY"), u = (i ?? []).filter((e) => e.type === "PRIMARY"), m = () => {
42
+ const s = v(), d = j(t), o = (i ?? []).filter((e) => e.type === "ADDITIONAL"), p = (i ?? []).filter((e) => e.type === "SECONDARY"), u = (i ?? []).filter((e) => e.type === "PRIMARY"), f = () => {
43
43
  d && t && t();
44
44
  }, a = async (e) => {
45
- var f;
46
- (f = (i ?? []).find((h) => h.id === e)) == null || f.onClick();
45
+ (i ?? []).find((m) => m.id === e)?.onClick();
47
46
  };
48
47
  return /* @__PURE__ */ c("div", { className: s.root, children: [
49
- d && /* @__PURE__ */ n("div", { className: s.backButton, children: /* @__PURE__ */ n(r, { icon: /* @__PURE__ */ n(A, {}), appearance: "subtle", onClick: m }) }),
50
- /* @__PURE__ */ n("div", { className: s.title, children: /* @__PURE__ */ n(x, { children: l }) }),
48
+ d && /* @__PURE__ */ n("div", { className: s.backButton, children: /* @__PURE__ */ n(r, { icon: /* @__PURE__ */ n(k, {}), appearance: "subtle", onClick: f }) }),
49
+ /* @__PURE__ */ n("div", { className: s.title, children: /* @__PURE__ */ n(y, { children: l }) }),
51
50
  /* @__PURE__ */ c("div", { className: s.actions, children: [
52
51
  p.length > 0 && p.map((e) => /* @__PURE__ */ n(r, { disabled: e.disabled, appearance: "secondary", onClick: () => a(e.id), children: e.label }, e.id)),
53
52
  u.length > 0 && u.map((e) => /* @__PURE__ */ n(r, { disabled: e.disabled, appearance: "primary", onClick: () => a(e.id), children: e.label }, e.id))
54
53
  ] }),
55
- /* @__PURE__ */ n("div", { className: s.moreActions, children: o.length > 0 && /* @__PURE__ */ c(b, { positioning: { autoSize: !0 }, children: [
56
- /* @__PURE__ */ n(g, { disableButtonEnhancement: !0, children: /* @__PURE__ */ n(r, { icon: /* @__PURE__ */ n(M, {}) }) }),
57
- /* @__PURE__ */ n(C, { children: /* @__PURE__ */ n(I, { children: o.map((e) => /* @__PURE__ */ n(R, { action: e, onClick: a }, e.id)) }) })
54
+ /* @__PURE__ */ n("div", { className: s.moreActions, children: o.length > 0 && /* @__PURE__ */ c(x, { positioning: { autoSize: !0 }, children: [
55
+ /* @__PURE__ */ n(b, { disableButtonEnhancement: !0, children: /* @__PURE__ */ n(r, { icon: /* @__PURE__ */ n(A, {}) }) }),
56
+ /* @__PURE__ */ n(g, { children: /* @__PURE__ */ n(C, { children: o.map((e) => /* @__PURE__ */ n(L, { action: e, onClick: a }, e.id)) }) })
58
57
  ] }) })
59
58
  ] });
60
59
  }
61
- function L() {
60
+ function B() {
62
61
  return /* @__PURE__ */ n("span", {});
63
62
  }
64
- function R({ action: l, onClick: t }) {
63
+ function L({ action: l, onClick: t }) {
65
64
  let i;
66
- return l.icon === "plus" ? i = N : l.icon === "trash" ? i = j : i = L, /* @__PURE__ */ n(k, { disabled: l.disabled, onClick: () => t(l.id), icon: /* @__PURE__ */ n(i, {}), children: l.label });
65
+ return l.icon === "plus" ? i = M : l.icon === "trash" ? i = N : i = B, /* @__PURE__ */ n(I, { disabled: l.disabled, onClick: () => t(l.id), icon: /* @__PURE__ */ n(i, {}), children: l.label });
67
66
  }
68
67
  export {
69
- E as ViewTitle
68
+ w as ViewTitle
70
69
  };
71
70
  //# sourceMappingURL=ViewTitle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ViewTitle.js","sources":["../../../src/lib/view_layout/ViewTitle.tsx"],"sourcesContent":["import {\n Button,\n makeStyles,\n Menu,\n MenuItem,\n MenuList,\n MenuPopover,\n MenuTrigger,\n Title3,\n} from \"@fluentui/react-components\";\nimport { AddSquareRegular, ArrowLeftFilled, DeleteRegular, MoreVerticalFilled } from \"@fluentui/react-icons\";\nimport { isFunction } from \"lodash-es\";\nimport { ReactNode } from \"react\";\n\nexport interface Action {\n id: string;\n label: string;\n icon?: \"plus\" | \"trash\";\n onClick: () => any;\n disabled?: boolean;\n type: \"PRIMARY\" | \"SECONDARY\" | \"ADDITIONAL\";\n}\n\nconst useStyles = makeStyles({\n root: {\n display: \"flex\",\n align: \"center\",\n justify: \"space-between\",\n justifyContent: \"center\",\n height: \"48px\",\n },\n title: {\n flex: 1,\n display: \"flex\",\n alignItems: \"center\",\n },\n backButton: {\n flex: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n },\n actions: {\n flex: 0,\n display: \"flex\",\n alignItems: \"center\",\n },\n moreActions: {\n flex: 0,\n display: \"flex\",\n alignItems: \"center\",\n minWidth: \"48px\",\n justifyContent: \"flex-end\",\n },\n});\n\n/**\n * Zone de titre d'une vue\n */\nexport function ViewTitle({\n children,\n onBack,\n actions,\n}: {\n /** Titre de la vue (en tout cas ce que l'on met dans la zone de titre) */\n children: ReactNode;\n /** Si spécifié, on ajoute une fleche \"back\" pour revenir en arrière */\n onBack?: () => void;\n /** Liste d'actions a ajouter à droite dans la zone d'actions */\n actions?: Action[];\n}) {\n const styles = useStyles();\n\n const displayBackButton = isFunction(onBack);\n const additionalList = (actions ?? []).filter((it) => it.type === \"ADDITIONAL\");\n const secondaryList = (actions ?? []).filter((it) => it.type === \"SECONDARY\");\n const primary = (actions ?? []).filter((it) => it.type === \"PRIMARY\");\n const handleBack = () => {\n if (displayBackButton && onBack) onBack();\n };\n const handleClick = async (id: string) => {\n (actions ?? []).find((it) => it.id === id)?.onClick();\n };\n return (\n <div className={styles.root}>\n {displayBackButton && (\n <div className={styles.backButton}>\n <Button icon={<ArrowLeftFilled />} appearance=\"subtle\" onClick={handleBack} />\n </div>\n )}\n <div className={styles.title}>\n <Title3>{children}</Title3>\n </div>\n <div className={styles.actions}>\n {secondaryList.length > 0 &&\n secondaryList.map((it) => (\n <Button key={it.id} disabled={it.disabled} appearance=\"secondary\" onClick={() => handleClick(it.id)}>\n {it.label}\n </Button>\n ))}\n {primary.length > 0 &&\n primary.map((it) => (\n <Button key={it.id} disabled={it.disabled} appearance=\"primary\" onClick={() => handleClick(it.id)}>\n {it.label}\n </Button>\n ))}\n </div>\n <div className={styles.moreActions}>\n {additionalList.length > 0 && (\n <Menu positioning={{ autoSize: true }}>\n <MenuTrigger disableButtonEnhancement>\n <Button icon={<MoreVerticalFilled />} />\n </MenuTrigger>\n <MenuPopover>\n <MenuList>\n {additionalList.map((it) => (\n <AdditionalActionMenuItem key={it.id} action={it} onClick={handleClick} />\n ))}\n </MenuList>\n </MenuPopover>\n </Menu>\n )}\n </div>\n </div>\n );\n}\n\nfunction EmptyIcon() {\n return <span />;\n}\n\nfunction AdditionalActionMenuItem({ action, onClick }: { action: Action; onClick: (id: string) => void }) {\n let Icon: any;\n if (action.icon === \"plus\") {\n Icon = AddSquareRegular;\n } else if (action.icon === \"trash\") {\n Icon = DeleteRegular;\n } else {\n Icon = EmptyIcon;\n }\n return (\n <MenuItem disabled={action.disabled} onClick={() => onClick(action.id)} icon={<Icon />}>\n {action.label}\n </MenuItem>\n );\n}\n"],"names":["useStyles","makeStyles","ViewTitle","children","onBack","actions","styles","displayBackButton","isFunction","additionalList","it","secondaryList","primary","handleBack","handleClick","id","_a","jsxs","jsx","Button","ArrowLeftFilled","Title3","Menu","MenuTrigger","MoreVerticalFilled","MenuPopover","MenuList","AdditionalActionMenuItem","EmptyIcon","action","onClick","Icon","AddSquareRegular","DeleteRegular","MenuItem"],"mappings":"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"}
1
+ {"version":3,"file":"ViewTitle.js","sources":["../../../src/lib/view_layout/ViewTitle.tsx"],"sourcesContent":["import {\n Button,\n makeStyles,\n Menu,\n MenuItem,\n MenuList,\n MenuPopover,\n MenuTrigger,\n Title3,\n} from \"@fluentui/react-components\";\nimport { AddSquareRegular, ArrowLeftFilled, DeleteRegular, MoreVerticalFilled } from \"@fluentui/react-icons\";\nimport { isFunction } from \"lodash-es\";\nimport { ReactNode } from \"react\";\n\nexport interface Action {\n id: string;\n label: string;\n icon?: \"plus\" | \"trash\";\n onClick: () => any;\n disabled?: boolean;\n type: \"PRIMARY\" | \"SECONDARY\" | \"ADDITIONAL\";\n}\n\nconst useStyles = makeStyles({\n root: {\n display: \"flex\",\n align: \"center\",\n justify: \"space-between\",\n justifyContent: \"center\",\n height: \"48px\",\n },\n title: {\n flex: 1,\n display: \"flex\",\n alignItems: \"center\",\n },\n backButton: {\n flex: 0,\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"flex-start\",\n },\n actions: {\n flex: 0,\n display: \"flex\",\n alignItems: \"center\",\n },\n moreActions: {\n flex: 0,\n display: \"flex\",\n alignItems: \"center\",\n minWidth: \"48px\",\n justifyContent: \"flex-end\",\n },\n});\n\n/**\n * Zone de titre d'une vue\n */\nexport function ViewTitle({\n children,\n onBack,\n actions,\n}: {\n /** Titre de la vue (en tout cas ce que l'on met dans la zone de titre) */\n children: ReactNode;\n /** Si spécifié, on ajoute une fleche \"back\" pour revenir en arrière */\n onBack?: () => void;\n /** Liste d'actions a ajouter à droite dans la zone d'actions */\n actions?: Action[];\n}) {\n const styles = useStyles();\n\n const displayBackButton = isFunction(onBack);\n const additionalList = (actions ?? []).filter((it) => it.type === \"ADDITIONAL\");\n const secondaryList = (actions ?? []).filter((it) => it.type === \"SECONDARY\");\n const primary = (actions ?? []).filter((it) => it.type === \"PRIMARY\");\n const handleBack = () => {\n if (displayBackButton && onBack) onBack();\n };\n const handleClick = async (id: string) => {\n (actions ?? []).find((it) => it.id === id)?.onClick();\n };\n return (\n <div className={styles.root}>\n {displayBackButton && (\n <div className={styles.backButton}>\n <Button icon={<ArrowLeftFilled />} appearance=\"subtle\" onClick={handleBack} />\n </div>\n )}\n <div className={styles.title}>\n <Title3>{children}</Title3>\n </div>\n <div className={styles.actions}>\n {secondaryList.length > 0 &&\n secondaryList.map((it) => (\n <Button key={it.id} disabled={it.disabled} appearance=\"secondary\" onClick={() => handleClick(it.id)}>\n {it.label}\n </Button>\n ))}\n {primary.length > 0 &&\n primary.map((it) => (\n <Button key={it.id} disabled={it.disabled} appearance=\"primary\" onClick={() => handleClick(it.id)}>\n {it.label}\n </Button>\n ))}\n </div>\n <div className={styles.moreActions}>\n {additionalList.length > 0 && (\n <Menu positioning={{ autoSize: true }}>\n <MenuTrigger disableButtonEnhancement>\n <Button icon={<MoreVerticalFilled />} />\n </MenuTrigger>\n <MenuPopover>\n <MenuList>\n {additionalList.map((it) => (\n <AdditionalActionMenuItem key={it.id} action={it} onClick={handleClick} />\n ))}\n </MenuList>\n </MenuPopover>\n </Menu>\n )}\n </div>\n </div>\n );\n}\n\nfunction EmptyIcon() {\n return <span />;\n}\n\nfunction AdditionalActionMenuItem({ action, onClick }: { action: Action; onClick: (id: string) => void }) {\n let Icon: any;\n if (action.icon === \"plus\") {\n Icon = AddSquareRegular;\n } else if (action.icon === \"trash\") {\n Icon = DeleteRegular;\n } else {\n Icon = EmptyIcon;\n }\n return (\n <MenuItem disabled={action.disabled} onClick={() => onClick(action.id)} icon={<Icon />}>\n {action.label}\n </MenuItem>\n );\n}\n"],"names":["useStyles","makeStyles","ViewTitle","children","onBack","actions","styles","displayBackButton","isFunction","additionalList","it","secondaryList","primary","handleBack","handleClick","id","jsxs","jsx","Button","ArrowLeftFilled","Title3","Menu","MenuTrigger","MoreVerticalFilled","MenuPopover","MenuList","AdditionalActionMenuItem","EmptyIcon","action","onClick","Icon","AddSquareRegular","DeleteRegular","MenuItem"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@seij/common-ui",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -9,11 +9,11 @@
9
9
  },
10
10
  "dependencies": {
11
11
  "@fluentui/react-components": "9.72.9",
12
- "@fluentui/react-icons": "2.0.316",
13
12
  "@seij/common-types": "0.1.3",
14
13
  "i18next": "25.7.3",
15
14
  "date-fns": "4.1.0",
16
15
  "i18next-icu": "2.4.1",
16
+ "@fluentui/react-icons": "2.0.316",
17
17
  "lodash-es": "4.17.22",
18
18
  "rifm": "0.12.1"
19
19
  },
@@ -21,8 +21,8 @@
21
21
  "@types/lodash-es": "4.17.12"
22
22
  },
23
23
  "peerDependencies": {
24
- "react-dom": "18.3.1",
25
- "react": "18.3.1"
24
+ "react-dom": "19.2.3",
25
+ "react": "19.2.3"
26
26
  },
27
27
  "exports": {
28
28
  ".": {
@@ -1,3 +0,0 @@
1
- import { Formats, I18n, Messages } from './i18n.types';
2
- export declare const createI18nEngine: (locale: string, messages: Messages, formats: Formats) => I18n;
3
- //# sourceMappingURL=i18n.factory.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n.factory.d.ts","sourceRoot":"","sources":["../../../src/lib/i18n/i18n.factory.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAEvD,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,EAAE,UAAU,QAAQ,EAAE,SAAS,OAAO,KAAG,IAwEvF,CAAC"}
@@ -1,70 +0,0 @@
1
- import { isDate as s, isValid as c, format as I, parse as D, formatISO as g } from "date-fns";
2
- import F from "i18next";
3
- import w from "i18next-icu";
4
- import { isString as M } from "lodash-es";
5
- const L = (o, a, e) => {
6
- const r = F.createInstance();
7
- r.use(w).init({
8
- debug: !0,
9
- lng: o,
10
- resources: { [o]: { translation: a } },
11
- interpolation: { escapeValue: !1 },
12
- initAsync: !1
13
- });
14
- const i = r.getFixedT(o), l = (t) => new Intl.DateTimeFormat(o, t && e.date[t] || void 0), d = (t) => new Intl.NumberFormat(o, t && e.number[t] || void 0), f = (t) => new Intl.ListFormat(o, t && e.list[t] || { type: "conjunction", style: "long" }), h = () => new Intl.RelativeTimeFormat(o, { numeric: "auto" });
15
- return {
16
- t(t, n) {
17
- return console.log(r), i(t, n);
18
- },
19
- rich(t, n) {
20
- return i(t, n);
21
- },
22
- formatDate(t, n) {
23
- return l(n).format(t);
24
- },
25
- formatNumber(t, n) {
26
- return d(n).format(t);
27
- },
28
- formatList(t, n) {
29
- return f(n).format(t);
30
- },
31
- formatRelative(t) {
32
- const n = (Number(t) - Date.now()) / 1e3, u = Math.abs(n), m = u < 60 ? "second" : u < 3600 ? "minute" : u < 86400 ? "hour" : u < 2592e3 ? "day" : u < 31536e3 ? "month" : "year", p = Math.round(m === "second" ? n : m === "minute" ? n / 60 : m === "hour" ? n / 3600 : m === "day" ? n / 86400 : m === "month" ? n / 2592e3 : n / 31536e3);
33
- return h().format(p, m);
34
- },
35
- localDatePlaceholder: e.localdate.placeholder,
36
- localDateInputMask: e.localdate.inputmask,
37
- localDateFormattedToISO: (t) => b(t, e.localdate.inputmask),
38
- localDateISOToFormattedInput: (t) => T(t, e.localdate.inputmask),
39
- monthList: S(o),
40
- getLocale() {
41
- return o;
42
- }
43
- };
44
- };
45
- function b(o, a) {
46
- const e = D(
47
- o,
48
- a,
49
- /* @__PURE__ */ new Date()
50
- // { locale: fr }
51
- );
52
- return !s(e) || !c(e) ? "" : g(e, { representation: "date" });
53
- }
54
- const T = (o, a) => {
55
- let e;
56
- if (M(o)) {
57
- const r = new Date(o);
58
- s(r) && c(r) ? e = I(r, a) : e = "";
59
- } else
60
- e = "";
61
- return e;
62
- };
63
- function S(o) {
64
- const a = new Intl.DateTimeFormat(o, { month: "long" });
65
- return Array.from({ length: 12 }, (r, i) => a.format(new Date(2e3, i, 1))).map((r, i) => ({ code: i + 1, label: r }));
66
- }
67
- export {
68
- L as createI18nEngine
69
- };
70
- //# sourceMappingURL=i18n.factory.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n.factory.js","sources":["../../../src/lib/i18n/i18n.factory.ts"],"sourcesContent":["// adapter-i18next.ts (exemple d’implémentation)\nimport { format, formatISO, isDate, isValid, parse } from \"date-fns\";\nimport i18next from \"i18next\";\nimport ICU from \"i18next-icu\";\nimport { isString } from \"lodash-es\";\nimport { Formats, I18n, Messages } from \"./i18n.types\";\n\nexport const createI18nEngine = (locale: string, messages: Messages, formats: Formats): I18n => {\n const inst = i18next.createInstance();\n inst.use(ICU).init({\n debug: true,\n lng: locale,\n resources: { [locale]: { translation: messages } },\n interpolation: { escapeValue: false },\n initAsync: false,\n });\n\n const t = inst.getFixedT(locale);\n const dtf = (style?: string) => new Intl.DateTimeFormat(locale, (style && formats.date[style]) || undefined);\n const nf = (style?: string) => new Intl.NumberFormat(locale, (style && formats.number[style]) || undefined);\n const lf = (style?: string) =>\n new Intl.ListFormat(locale, (style && formats.list[style]) || { type: \"conjunction\", style: \"long\" });\n const rtf = () => new Intl.RelativeTimeFormat(locale, { numeric: \"auto\" });\n\n return {\n t(id, values) {\n console.log(inst);\n return t(id, values);\n },\n rich(id, values) {\n return t(id, values);\n },\n formatDate(d, style) {\n return dtf(style).format(d);\n },\n formatNumber(n, style) {\n return nf(style).format(n);\n },\n formatList(items, style) {\n return lf(style).format(items);\n },\n formatRelative(d) {\n const diff = (Number(d) - Date.now()) / 1000;\n const abs = Math.abs(diff);\n const unit =\n abs < 60\n ? \"second\"\n : abs < 3600\n ? \"minute\"\n : abs < 86400\n ? \"hour\"\n : abs < 2592000\n ? \"day\"\n : abs < 31536000\n ? \"month\"\n : \"year\";\n const value =\n unit === \"second\"\n ? Math.round(diff)\n : unit === \"minute\"\n ? Math.round(diff / 60)\n : unit === \"hour\"\n ? Math.round(diff / 3600)\n : unit === \"day\"\n ? Math.round(diff / 86400)\n : unit === \"month\"\n ? Math.round(diff / 2592000)\n : Math.round(diff / 31536000);\n return rtf().format(value, unit as Intl.RelativeTimeFormatUnit);\n },\n localDatePlaceholder: formats.localdate.placeholder,\n localDateInputMask: formats.localdate.inputmask,\n localDateFormattedToISO: (str: string) => localDateFormattedToISO(str, formats.localdate.inputmask),\n localDateISOToFormattedInput: (str: string) => localDateISOToFormattedInput(str, formats.localdate.inputmask),\n monthList: getMonthNames(locale),\n getLocale() {\n return locale;\n },\n };\n};\n\nfunction localDateFormattedToISO(str: string, inputMask: string): string {\n const parsed = parse(\n str,\n inputMask,\n new Date(),\n // { locale: fr }\n );\n if (!isDate(parsed) || !isValid(parsed)) return \"\";\n return formatISO(parsed, { representation: \"date\" });\n}\n\nconst localDateISOToFormattedInput = (str: string, inputMask: string): string => {\n let result;\n if (isString(str)) {\n const date = new Date(str);\n if (isDate(date) && isValid(date)) {\n result = format(date, inputMask);\n } else {\n result = \"\";\n }\n } else {\n result = \"\";\n }\n return result;\n};\nfunction getMonthNames(locale: string): { code: number; label: string }[] {\n const formatter = new Intl.DateTimeFormat(locale, { month: \"long\" });\n const months = Array.from({ length: 12 }, (_, i) => formatter.format(new Date(2000, i, 1)));\n return months.map((i, index) => ({ code: index + 1, label: i }));\n}\n"],"names":["createI18nEngine","locale","messages","formats","inst","i18next","ICU","t","dtf","style","nf","lf","rtf","id","values","d","n","items","diff","abs","unit","value","str","localDateFormattedToISO","localDateISOToFormattedInput","getMonthNames","inputMask","parsed","parse","isDate","isValid","formatISO","result","isString","date","format","formatter","_","i","index"],"mappings":"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"}