@chayns-components/textstring 5.0.0-beta.576 → 5.0.0-beta.578
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/lib/cjs/components/textstring/Textstring.js +60 -0
- package/lib/cjs/components/textstring/Textstring.js.map +1 -0
- package/lib/cjs/components/textstring/types.js.map +1 -0
- package/lib/cjs/components/textstring-provider/TextstringProvider.js +41 -0
- package/lib/cjs/components/textstring-provider/TextstringProvider.js.map +1 -0
- package/lib/cjs/hooks/useTextstringValue.js +21 -0
- package/lib/cjs/hooks/useTextstringValue.js.map +1 -0
- package/lib/cjs/index.js +35 -0
- package/lib/cjs/index.js.map +1 -0
- package/lib/cjs/types/chayns.js +13 -0
- package/lib/cjs/types/chayns.js.map +1 -0
- package/lib/cjs/types/textstring.js.map +1 -0
- package/lib/cjs/utils/textstring.js +46 -0
- package/lib/cjs/utils/textstring.js.map +1 -0
- package/lib/esm/components/textstring/Textstring.js.map +1 -0
- package/lib/esm/components/textstring/types.js +2 -0
- package/lib/esm/components/textstring/types.js.map +1 -0
- package/lib/esm/components/textstring-provider/TextstringProvider.js.map +1 -0
- package/lib/esm/hooks/useTextstringValue.js.map +1 -0
- package/lib/esm/index.js.map +1 -0
- package/lib/esm/types/chayns.js.map +1 -0
- package/lib/esm/types/textstring.js +2 -0
- package/lib/esm/types/textstring.js.map +1 -0
- package/lib/esm/utils/textstring.js.map +1 -0
- package/package.json +17 -7
- package/lib/components/textstring/Textstring.js.map +0 -1
- package/lib/components/textstring/types.js.map +0 -1
- package/lib/components/textstring-provider/TextstringProvider.js.map +0 -1
- package/lib/hooks/useTextstringValue.js.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/types/chayns.js.map +0 -1
- package/lib/types/textstring.js.map +0 -1
- package/lib/utils/textstring.js.map +0 -1
- /package/lib/{components → cjs/components}/textstring/types.js +0 -0
- /package/lib/{types → cjs/types}/textstring.js +0 -0
- /package/lib/{components → esm/components}/textstring/Textstring.js +0 -0
- /package/lib/{components → esm/components}/textstring-provider/TextstringProvider.js +0 -0
- /package/lib/{hooks → esm/hooks}/useTextstringValue.js +0 -0
- /package/lib/{index.js → esm/index.js} +0 -0
- /package/lib/{types → esm/types}/chayns.js +0 -0
- /package/lib/{utils → esm/utils}/textstring.js +0 -0
- /package/lib/{components → types/components}/textstring/Textstring.d.ts +0 -0
- /package/lib/{components → types/components}/textstring/types.d.ts +0 -0
- /package/lib/{components → types/components}/textstring-provider/TextstringProvider.d.ts +0 -0
- /package/lib/{hooks → types/hooks}/useTextstringValue.d.ts +0 -0
- /package/lib/{index.d.ts → types/index.d.ts} +0 -0
- /package/lib/types/{chayns.d.ts → types/chayns.d.ts} +0 -0
- /package/lib/types/{textstring.d.ts → types/textstring.d.ts} +0 -0
- /package/lib/{utils → types/utils}/textstring.d.ts +0 -0
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var _core = require("@chayns-components/core");
|
|
8
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
9
|
+
var _useTextstringValue = require("../../hooks/useTextstringValue");
|
|
10
|
+
var _textstring = require("../../utils/textstring");
|
|
11
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
12
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
13
|
+
const Textstring = ({
|
|
14
|
+
children,
|
|
15
|
+
childrenClassName,
|
|
16
|
+
childrenStyles,
|
|
17
|
+
childrenTagName,
|
|
18
|
+
isTextstringHTML,
|
|
19
|
+
replacements,
|
|
20
|
+
textstring
|
|
21
|
+
}) => {
|
|
22
|
+
const text = (0, _useTextstringValue.useTextstringValue)({
|
|
23
|
+
textstring,
|
|
24
|
+
replacements
|
|
25
|
+
});
|
|
26
|
+
const handleClick = (0, _react.useCallback)(({
|
|
27
|
+
ctrlKey
|
|
28
|
+
}) => {
|
|
29
|
+
if (ctrlKey) {
|
|
30
|
+
void (0, _core.isTobitEmployee)().then(inGroup => {
|
|
31
|
+
if (inGroup) {
|
|
32
|
+
(0, _textstring.selectLanguageToChange)({
|
|
33
|
+
textstringName: textstring.name
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
}, [textstring.name]);
|
|
39
|
+
if (children) {
|
|
40
|
+
return /*#__PURE__*/_react.default.cloneElement(children, {
|
|
41
|
+
dangerouslySetInnerHTML: isTextstringHTML ? {
|
|
42
|
+
__html: text
|
|
43
|
+
} : undefined,
|
|
44
|
+
onClick: handleClick
|
|
45
|
+
}, isTextstringHTML ? undefined : text);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
// eslint-disable-next-line react/no-danger-with-children
|
|
49
|
+
return /*#__PURE__*/_react.default.createElement(childrenTagName || 'span', {
|
|
50
|
+
dangerouslySetInnerHTML: isTextstringHTML ? {
|
|
51
|
+
__html: text
|
|
52
|
+
} : undefined,
|
|
53
|
+
className: childrenClassName,
|
|
54
|
+
onClick: handleClick,
|
|
55
|
+
style: childrenStyles
|
|
56
|
+
}, isTextstringHTML ? undefined : text);
|
|
57
|
+
};
|
|
58
|
+
Textstring.displayName = 'Textstring';
|
|
59
|
+
var _default = exports.default = Textstring;
|
|
60
|
+
//# sourceMappingURL=Textstring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Textstring.js","names":["_core","require","_react","_interopRequireWildcard","_useTextstringValue","_textstring","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","Textstring","children","childrenClassName","childrenStyles","childrenTagName","isTextstringHTML","replacements","textstring","text","useTextstringValue","handleClick","useCallback","ctrlKey","isTobitEmployee","then","inGroup","selectLanguageToChange","textstringName","name","React","cloneElement","dangerouslySetInnerHTML","__html","undefined","onClick","createElement","className","style","displayName","_default","exports"],"sources":["../../../../src/components/textstring/Textstring.tsx"],"sourcesContent":["import { isTobitEmployee } from '@chayns-components/core';\nimport React, {\n CSSProperties,\n FC,\n MouseEvent,\n ReactHTML,\n useCallback,\n type ReactElement,\n} from 'react';\nimport { useTextstringValue } from '../../hooks/useTextstringValue';\nimport { selectLanguageToChange } from '../../utils/textstring';\nimport type { ITextstring, TextstringReplacement } from './types';\n\nexport type TextstringProps = {\n /**\n * The element that the text should be displayed in.\n */\n children?: ReactElement;\n /**\n * The class name of the HTML element that the text should be displayed in. Only used if `children` is not set.\n */\n childrenClassName?: string;\n /**\n * The styles of the HTML element that the text should be displayed in. Only used if `children` is not set.\n */\n childrenStyles?: CSSProperties;\n /**\n * The tag of the HTML element that the text should be displayed in. Only used if `children` is not set.\n */\n childrenTagName?: keyof ReactHTML;\n /**\n * Whether the textstring contains HTML elements and should be displayed as HTML.\n */\n isTextstringHTML?: boolean;\n /**\n * Replacement values for the textstring.\n */\n replacements?: TextstringReplacement;\n /**\n * The text that should be displayed.\n */\n textstring: ITextstring;\n};\n\nconst Textstring: FC<TextstringProps> = ({\n children,\n childrenClassName,\n childrenStyles,\n childrenTagName,\n isTextstringHTML,\n replacements,\n textstring,\n}) => {\n const text = useTextstringValue({ textstring, replacements });\n\n const handleClick = useCallback(\n ({ ctrlKey }: MouseEvent<HTMLElement>) => {\n if (ctrlKey) {\n void isTobitEmployee().then((inGroup) => {\n if (inGroup) {\n selectLanguageToChange({\n textstringName: textstring.name,\n });\n }\n });\n }\n },\n [textstring.name],\n );\n\n if (children) {\n return React.cloneElement(\n children,\n {\n dangerouslySetInnerHTML: isTextstringHTML ? { __html: text } : undefined,\n onClick: handleClick,\n },\n isTextstringHTML ? undefined : text,\n );\n }\n\n // eslint-disable-next-line react/no-danger-with-children\n return React.createElement(\n childrenTagName || 'span',\n {\n dangerouslySetInnerHTML: isTextstringHTML ? { __html: text } : undefined,\n className: childrenClassName,\n onClick: handleClick,\n style: childrenStyles,\n },\n isTextstringHTML ? undefined : text,\n );\n};\n\nTextstring.displayName = 'Textstring';\n\nexport default Textstring;\n"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AACA,IAAAC,MAAA,GAAAC,uBAAA,CAAAF,OAAA;AAQA,IAAAG,mBAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AAAgE,SAAAK,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAJ,wBAAAI,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAkChE,MAAMW,UAA+B,GAAGA,CAAC;EACrCC,QAAQ;EACRC,iBAAiB;EACjBC,cAAc;EACdC,eAAe;EACfC,gBAAgB;EAChBC,YAAY;EACZC;AACJ,CAAC,KAAK;EACF,MAAMC,IAAI,GAAG,IAAAC,sCAAkB,EAAC;IAAEF,UAAU;IAAED;EAAa,CAAC,CAAC;EAE7D,MAAMI,WAAW,GAAG,IAAAC,kBAAW,EAC3B,CAAC;IAAEC;EAAiC,CAAC,KAAK;IACtC,IAAIA,OAAO,EAAE;MACT,KAAK,IAAAC,qBAAe,EAAC,CAAC,CAACC,IAAI,CAAEC,OAAO,IAAK;QACrC,IAAIA,OAAO,EAAE;UACT,IAAAC,kCAAsB,EAAC;YACnBC,cAAc,EAAEV,UAAU,CAACW;UAC/B,CAAC,CAAC;QACN;MACJ,CAAC,CAAC;IACN;EACJ,CAAC,EACD,CAACX,UAAU,CAACW,IAAI,CACpB,CAAC;EAED,IAAIjB,QAAQ,EAAE;IACV,oBAAOkB,cAAK,CAACC,YAAY,CACrBnB,QAAQ,EACR;MACIoB,uBAAuB,EAAEhB,gBAAgB,GAAG;QAAEiB,MAAM,EAAEd;MAAK,CAAC,GAAGe,SAAS;MACxEC,OAAO,EAAEd;IACb,CAAC,EACDL,gBAAgB,GAAGkB,SAAS,GAAGf,IACnC,CAAC;EACL;;EAEA;EACA,oBAAOW,cAAK,CAACM,aAAa,CACtBrB,eAAe,IAAI,MAAM,EACzB;IACIiB,uBAAuB,EAAEhB,gBAAgB,GAAG;MAAEiB,MAAM,EAAEd;IAAK,CAAC,GAAGe,SAAS;IACxEG,SAAS,EAAExB,iBAAiB;IAC5BsB,OAAO,EAAEd,WAAW;IACpBiB,KAAK,EAAExB;EACX,CAAC,EACDE,gBAAgB,GAAGkB,SAAS,GAAGf,IACnC,CAAC;AACL,CAAC;AAEDR,UAAU,CAAC4B,WAAW,GAAG,YAAY;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAA5C,OAAA,GAEvBc,UAAU","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/components/textstring/types.ts"],"sourcesContent":["export interface TextstringReplacement {\n [key: string]: string;\n}\n\nexport interface ITextstring {\n fallback: string;\n name: string;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = exports.TextstringContext = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _textstring = require("../../utils/textstring");
|
|
9
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
10
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
11
|
+
const TextstringContext = exports.TextstringContext = /*#__PURE__*/(0, _react.createContext)({});
|
|
12
|
+
const TextstringProvider = ({
|
|
13
|
+
children,
|
|
14
|
+
libraryName,
|
|
15
|
+
language
|
|
16
|
+
}) => {
|
|
17
|
+
const [textstrings, setTextstrings] = (0, _react.useState)({});
|
|
18
|
+
(0, _react.useEffect)(() => {
|
|
19
|
+
const loadData = async () => {
|
|
20
|
+
const textstringResult = await (0, _textstring.loadLibrary)({
|
|
21
|
+
libraryName,
|
|
22
|
+
language
|
|
23
|
+
});
|
|
24
|
+
if (textstringResult) {
|
|
25
|
+
const prevTextstrings = window.Textstrings;
|
|
26
|
+
window.Textstrings = {
|
|
27
|
+
...prevTextstrings,
|
|
28
|
+
[libraryName]: textstringResult
|
|
29
|
+
};
|
|
30
|
+
setTextstrings(textstringResult);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
void loadData();
|
|
34
|
+
}, [language, libraryName]);
|
|
35
|
+
return /*#__PURE__*/_react.default.createElement(TextstringContext.Provider, {
|
|
36
|
+
value: textstrings
|
|
37
|
+
}, children);
|
|
38
|
+
};
|
|
39
|
+
TextstringProvider.displayName = 'TextstringProvider';
|
|
40
|
+
var _default = exports.default = TextstringProvider;
|
|
41
|
+
//# sourceMappingURL=TextstringProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextstringProvider.js","names":["_react","_interopRequireWildcard","require","_textstring","_getRequireWildcardCache","e","WeakMap","r","t","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","hasOwnProperty","call","i","set","TextstringContext","exports","createContext","TextstringProvider","children","libraryName","language","textstrings","setTextstrings","useState","useEffect","loadData","textstringResult","loadLibrary","prevTextstrings","window","Textstrings","createElement","Provider","value","displayName","_default"],"sources":["../../../../src/components/textstring-provider/TextstringProvider.tsx"],"sourcesContent":["import React, { createContext, FC, ReactNode, useEffect, useState } from 'react';\nimport type { TextstringValue } from '../../types/textstring';\nimport { loadLibrary } from '../../utils/textstring';\n\nexport const TextstringContext = createContext<TextstringValue>({});\n\nexport type TextstringProviderProps = {\n /**\n * The element that should use the library.\n */\n children?: ReactNode;\n /**\n * The language that should be used.\n */\n language: string;\n /**\n * The name of the library.\n */\n libraryName: string;\n};\n\nconst TextstringProvider: FC<TextstringProviderProps> = ({ children, libraryName, language }) => {\n const [textstrings, setTextstrings] = useState<TextstringValue>({});\n\n useEffect(() => {\n const loadData = async () => {\n const textstringResult = await loadLibrary({ libraryName, language });\n\n if (textstringResult) {\n const prevTextstrings = window.Textstrings;\n\n window.Textstrings = {\n ...prevTextstrings,\n [libraryName]: textstringResult,\n };\n\n setTextstrings(textstringResult);\n }\n };\n\n void loadData();\n }, [language, libraryName]);\n\n return <TextstringContext.Provider value={textstrings}>{children}</TextstringContext.Provider>;\n};\n\nTextstringProvider.displayName = 'TextstringProvider';\n\nexport default TextstringProvider;\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,WAAA,GAAAD,OAAA;AAAqD,SAAAE,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAJ,wBAAAI,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAI,UAAA,SAAAJ,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAK,OAAA,EAAAL,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAG,GAAA,CAAAN,CAAA,UAAAG,CAAA,CAAAI,GAAA,CAAAP,CAAA,OAAAQ,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAd,CAAA,oBAAAc,CAAA,OAAAC,cAAA,CAAAC,IAAA,CAAAhB,CAAA,EAAAc,CAAA,SAAAG,CAAA,GAAAP,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAb,CAAA,EAAAc,CAAA,UAAAG,CAAA,KAAAA,CAAA,CAAAV,GAAA,IAAAU,CAAA,CAAAC,GAAA,IAAAP,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAG,CAAA,IAAAT,CAAA,CAAAM,CAAA,IAAAd,CAAA,CAAAc,CAAA,YAAAN,CAAA,CAAAH,OAAA,GAAAL,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAe,GAAA,CAAAlB,CAAA,EAAAQ,CAAA,GAAAA,CAAA;AAE9C,MAAMW,iBAAiB,GAAAC,OAAA,CAAAD,iBAAA,gBAAG,IAAAE,oBAAa,EAAkB,CAAC,CAAC,CAAC;AAiBnE,MAAMC,kBAA+C,GAAGA,CAAC;EAAEC,QAAQ;EAAEC,WAAW;EAAEC;AAAS,CAAC,KAAK;EAC7F,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAAC,eAAQ,EAAkB,CAAC,CAAC,CAAC;EAEnE,IAAAC,gBAAS,EAAC,MAAM;IACZ,MAAMC,QAAQ,GAAG,MAAAA,CAAA,KAAY;MACzB,MAAMC,gBAAgB,GAAG,MAAM,IAAAC,uBAAW,EAAC;QAAER,WAAW;QAAEC;MAAS,CAAC,CAAC;MAErE,IAAIM,gBAAgB,EAAE;QAClB,MAAME,eAAe,GAAGC,MAAM,CAACC,WAAW;QAE1CD,MAAM,CAACC,WAAW,GAAG;UACjB,GAAGF,eAAe;UAClB,CAACT,WAAW,GAAGO;QACnB,CAAC;QAEDJ,cAAc,CAACI,gBAAgB,CAAC;MACpC;IACJ,CAAC;IAED,KAAKD,QAAQ,CAAC,CAAC;EACnB,CAAC,EAAE,CAACL,QAAQ,EAAED,WAAW,CAAC,CAAC;EAE3B,oBAAO7B,MAAA,CAAAU,OAAA,CAAA+B,aAAA,CAACjB,iBAAiB,CAACkB,QAAQ;IAACC,KAAK,EAAEZ;EAAY,GAAEH,QAAqC,CAAC;AAClG,CAAC;AAEDD,kBAAkB,CAACiB,WAAW,GAAG,oBAAoB;AAAC,IAAAC,QAAA,GAAApB,OAAA,CAAAf,OAAA,GAEvCiB,kBAAkB","ignoreList":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.useTextstringValue = void 0;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _TextstringProvider = require("../components/textstring-provider/TextstringProvider");
|
|
9
|
+
const useTextstringValue = ({
|
|
10
|
+
replacements,
|
|
11
|
+
textstring
|
|
12
|
+
}) => {
|
|
13
|
+
const textstrings = (0, _react.useContext)(_TextstringProvider.TextstringContext);
|
|
14
|
+
const value = textstrings[textstring.name] ?? textstring.fallback;
|
|
15
|
+
if (!replacements) {
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
return Object.keys(replacements).reduce((current, key) => current.replace(new RegExp(key, 'g'), replacements[key] || ''), value);
|
|
19
|
+
};
|
|
20
|
+
exports.useTextstringValue = useTextstringValue;
|
|
21
|
+
//# sourceMappingURL=useTextstringValue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTextstringValue.js","names":["_react","require","_TextstringProvider","useTextstringValue","replacements","textstring","textstrings","useContext","TextstringContext","value","name","fallback","Object","keys","reduce","current","key","replace","RegExp","exports"],"sources":["../../../src/hooks/useTextstringValue.ts"],"sourcesContent":["import { useContext } from 'react';\nimport { TextstringContext } from '../components/textstring-provider/TextstringProvider';\nimport type { ITextstring, TextstringReplacement } from '../components/textstring/types';\n\nexport interface UseTextstringValue {\n textstring: ITextstring;\n replacements?: TextstringReplacement;\n}\n\nexport const useTextstringValue = ({ replacements, textstring }: UseTextstringValue) => {\n const textstrings = useContext(TextstringContext);\n\n const value = textstrings[textstring.name] ?? textstring.fallback;\n\n if (!replacements) {\n return value;\n }\n\n return Object.keys(replacements).reduce(\n (current, key) => current.replace(new RegExp(key, 'g'), <string>replacements[key] || ''),\n value,\n );\n};\n"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,mBAAA,GAAAD,OAAA;AAQO,MAAME,kBAAkB,GAAGA,CAAC;EAAEC,YAAY;EAAEC;AAA+B,CAAC,KAAK;EACpF,MAAMC,WAAW,GAAG,IAAAC,iBAAU,EAACC,qCAAiB,CAAC;EAEjD,MAAMC,KAAK,GAAGH,WAAW,CAACD,UAAU,CAACK,IAAI,CAAC,IAAIL,UAAU,CAACM,QAAQ;EAEjE,IAAI,CAACP,YAAY,EAAE;IACf,OAAOK,KAAK;EAChB;EAEA,OAAOG,MAAM,CAACC,IAAI,CAACT,YAAY,CAAC,CAACU,MAAM,CACnC,CAACC,OAAO,EAAEC,GAAG,KAAKD,OAAO,CAACE,OAAO,CAAC,IAAIC,MAAM,CAACF,GAAG,EAAE,GAAG,CAAC,EAAUZ,YAAY,CAACY,GAAG,CAAC,IAAI,EAAE,CAAC,EACxFP,KACJ,CAAC;AACL,CAAC;AAACU,OAAA,CAAAhB,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|
package/lib/cjs/index.js
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "Textstring", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _Textstring.default;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "TextstringProvider", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _TextstringProvider.default;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
Object.defineProperty(exports, "getTextstringValue", {
|
|
19
|
+
enumerable: true,
|
|
20
|
+
get: function () {
|
|
21
|
+
return _textstring.getTextstringValue;
|
|
22
|
+
}
|
|
23
|
+
});
|
|
24
|
+
Object.defineProperty(exports, "useTextstringValue", {
|
|
25
|
+
enumerable: true,
|
|
26
|
+
get: function () {
|
|
27
|
+
return _useTextstringValue.useTextstringValue;
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
var _TextstringProvider = _interopRequireDefault(require("./components/textstring-provider/TextstringProvider"));
|
|
31
|
+
var _Textstring = _interopRequireDefault(require("./components/textstring/Textstring"));
|
|
32
|
+
var _useTextstringValue = require("./hooks/useTextstringValue");
|
|
33
|
+
var _textstring = require("./utils/textstring");
|
|
34
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
35
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["_TextstringProvider","_interopRequireDefault","require","_Textstring","_useTextstringValue","_textstring","obj","__esModule","default"],"sources":["../../src/index.ts"],"sourcesContent":["// noinspection JSUnusedGlobalSymbols\n\nexport { default as TextstringProvider } from './components/textstring-provider/TextstringProvider';\nexport { default as Textstring } from './components/textstring/Textstring';\nexport type { ITextstring, TextstringReplacement } from './components/textstring/types';\nexport { useTextstringValue } from './hooks/useTextstringValue';\nexport { getTextstringValue } from './utils/textstring';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,IAAAA,mBAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,WAAA,GAAAF,sBAAA,CAAAC,OAAA;AAEA,IAAAE,mBAAA,GAAAF,OAAA;AACA,IAAAG,WAAA,GAAAH,OAAA;AAAwD,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA","ignoreList":[]}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ButtonType = void 0;
|
|
7
|
+
let ButtonType = exports.ButtonType = /*#__PURE__*/function (ButtonType) {
|
|
8
|
+
ButtonType[ButtonType["Cancel"] = -1] = "Cancel";
|
|
9
|
+
ButtonType[ButtonType["Negative"] = 0] = "Negative";
|
|
10
|
+
ButtonType[ButtonType["Positive"] = 1] = "Positive";
|
|
11
|
+
return ButtonType;
|
|
12
|
+
}({});
|
|
13
|
+
//# sourceMappingURL=chayns.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chayns.js","names":["ButtonType","exports"],"sources":["../../../src/types/chayns.ts"],"sourcesContent":["declare global {\n let chayns: Chayns;\n}\n\nexport interface Chayns {\n dialog: Dialog;\n env: Env;\n openImage(urls: string | string[], start?: number): Promise<undefined>;\n openVideo(url: string): Promise<void>;\n register(config: object): any;\n}\n\nexport interface Dialog {\n select(config: {\n title?: string;\n message?: string;\n list: Array<SelectDialogItem>;\n multiselect?: boolean;\n type?: SelectType;\n preventCloseOnClick?: boolean;\n buttons?: DialogButton[];\n selectAllButton?: string;\n }): Promise<SelectDialogResult>;\n alert(headline: string, text: string): Promise<ButtonType>;\n iFrame(config: {\n url: string;\n input?: object;\n title?: string;\n message?: string;\n buttons?: DialogButton[];\n seamless?: boolean;\n transparent?: boolean;\n waitCursor?: boolean;\n maxHeight?: string;\n width?: number;\n customTransitionTimeout?: number;\n }): Promise<any>;\n}\n\ndeclare enum ButtonText {\n Cancel = 'Abbrechen',\n No = 'Nein',\n Ok = 'OK',\n Yes = 'Ja',\n}\n\nexport enum ButtonType {\n Cancel = -1,\n Negative = 0,\n Positive = 1,\n}\n\nexport interface DialogButton {\n text: ButtonText | string;\n buttonType: ButtonType | number;\n collapseTime?: number;\n textColor?: string;\n backgroundColor?: string;\n}\n\nexport interface SelectDialogItem {\n name: string;\n value: string | number;\n isSelected?: boolean;\n}\n\nexport interface SelectDialogResult {\n buttonType: ButtonType | number;\n selection: Array<SelectDialogItem>;\n}\n\ndeclare enum SelectType {\n Default = 0,\n Icon = 1,\n IconAndText,\n}\n\nexport interface Group {\n id: number;\n isActive: boolean;\n}\n\nexport interface User {\n name: string;\n firstName: string;\n gender: number;\n lastName: string;\n id: number;\n personId: string;\n tobitAccessToken: string;\n groups: Group[];\n isAuthenticated: boolean;\n adminMode: boolean;\n isAdmin: boolean;\n}\n\nexport interface Site {\n id: string;\n}\n\nexport interface Env {\n site: Site;\n user: User;\n language: any;\n parameters: any;\n isApp: boolean;\n isMobile: boolean;\n isTablet: boolean;\n}\n"],"mappings":";;;;;;IA8CYA,UAAU,GAAAC,OAAA,CAAAD,UAAA,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textstring.js","names":[],"sources":["../../../src/types/textstring.ts"],"sourcesContent":["declare global {\n interface Window {\n Textstrings: TextstringValues;\n }\n}\n\ntype TextstringValues = {\n [key: string]: TextstringValue;\n};\n\nexport type TextstringValue = {\n [key: string]: string;\n};\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.selectLanguageToChange = exports.loadLibrary = exports.getTextstringValue = void 0;
|
|
7
|
+
const loadLibrary = async ({
|
|
8
|
+
language,
|
|
9
|
+
libraryName
|
|
10
|
+
}) => {
|
|
11
|
+
const response = await fetch(`https://webapi.tobit.com/TextstringService/v1.0/LangStrings/${libraryName}?language=${language}`);
|
|
12
|
+
if (response.status !== 200) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
return await response.json();
|
|
16
|
+
};
|
|
17
|
+
exports.loadLibrary = loadLibrary;
|
|
18
|
+
const selectLanguageToChange = ({
|
|
19
|
+
textstringName
|
|
20
|
+
}) => {
|
|
21
|
+
void chayns.dialog.iFrame({
|
|
22
|
+
url: 'https://tapp-staging.chayns-static.space/text-string-tapp/v1/iframe-edit.html',
|
|
23
|
+
buttons: [],
|
|
24
|
+
input: {
|
|
25
|
+
textstring: textstringName
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
};
|
|
29
|
+
exports.selectLanguageToChange = selectLanguageToChange;
|
|
30
|
+
const getTextstringValue = ({
|
|
31
|
+
libraryName,
|
|
32
|
+
textstring,
|
|
33
|
+
replacements
|
|
34
|
+
}) => {
|
|
35
|
+
const textstrings = window.Textstrings[libraryName];
|
|
36
|
+
if (!textstrings) {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
const value = textstrings[textstring.name] ?? textstring.fallback;
|
|
40
|
+
if (!replacements) {
|
|
41
|
+
return value;
|
|
42
|
+
}
|
|
43
|
+
return Object.keys(replacements).reduce((current, key) => current.replace(new RegExp(key, 'g'), replacements[key] || ''), value);
|
|
44
|
+
};
|
|
45
|
+
exports.getTextstringValue = getTextstringValue;
|
|
46
|
+
//# sourceMappingURL=textstring.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textstring.js","names":["loadLibrary","language","libraryName","response","fetch","status","json","exports","selectLanguageToChange","textstringName","chayns","dialog","iFrame","url","buttons","input","textstring","getTextstringValue","replacements","textstrings","window","Textstrings","undefined","value","name","fallback","Object","keys","reduce","current","key","replace","RegExp"],"sources":["../../../src/utils/textstring.ts"],"sourcesContent":["import type { ITextstring, TextstringReplacement } from '../components/textstring/types';\nimport type { TextstringValue } from '../types/textstring';\n\ninterface LoadLibraryOptions {\n libraryName: string;\n language: string;\n}\n\nexport const loadLibrary = async ({ language, libraryName }: LoadLibraryOptions) => {\n const response = await fetch(\n `https://webapi.tobit.com/TextstringService/v1.0/LangStrings/${libraryName}?language=${language}`,\n );\n\n if (response.status !== 200) {\n return null;\n }\n\n return (await response.json()) as TextstringValue;\n};\n\ninterface SelectLanguageToChangeOptions {\n textstringName: string;\n}\n\nexport const selectLanguageToChange = ({ textstringName }: SelectLanguageToChangeOptions) => {\n void chayns.dialog.iFrame({\n url: 'https://tapp-staging.chayns-static.space/text-string-tapp/v1/iframe-edit.html',\n buttons: [],\n input: { textstring: textstringName },\n });\n};\n\ninterface GetTextstringValueOptions {\n textstring: ITextstring;\n libraryName: string;\n replacements?: TextstringReplacement;\n}\n\nexport const getTextstringValue = ({\n libraryName,\n textstring,\n replacements,\n}: GetTextstringValueOptions) => {\n const textstrings = window.Textstrings[libraryName];\n\n if (!textstrings) {\n return undefined;\n }\n\n const value = textstrings[textstring.name] ?? textstring.fallback;\n\n if (!replacements) {\n return value;\n }\n\n return Object.keys(replacements).reduce(\n (current, key) => current.replace(new RegExp(key, 'g'), <string>replacements[key] || ''),\n value,\n );\n};\n"],"mappings":";;;;;;AAQO,MAAMA,WAAW,GAAG,MAAAA,CAAO;EAAEC,QAAQ;EAAEC;AAAgC,CAAC,KAAK;EAChF,MAAMC,QAAQ,GAAG,MAAMC,KAAK,CACvB,+DAA8DF,WAAY,aAAYD,QAAS,EACpG,CAAC;EAED,IAAIE,QAAQ,CAACE,MAAM,KAAK,GAAG,EAAE;IACzB,OAAO,IAAI;EACf;EAEA,OAAQ,MAAMF,QAAQ,CAACG,IAAI,CAAC,CAAC;AACjC,CAAC;AAACC,OAAA,CAAAP,WAAA,GAAAA,WAAA;AAMK,MAAMQ,sBAAsB,GAAGA,CAAC;EAAEC;AAA8C,CAAC,KAAK;EACzF,KAAKC,MAAM,CAACC,MAAM,CAACC,MAAM,CAAC;IACtBC,GAAG,EAAE,+EAA+E;IACpFC,OAAO,EAAE,EAAE;IACXC,KAAK,EAAE;MAAEC,UAAU,EAAEP;IAAe;EACxC,CAAC,CAAC;AACN,CAAC;AAACF,OAAA,CAAAC,sBAAA,GAAAA,sBAAA;AAQK,MAAMS,kBAAkB,GAAGA,CAAC;EAC/Bf,WAAW;EACXc,UAAU;EACVE;AACuB,CAAC,KAAK;EAC7B,MAAMC,WAAW,GAAGC,MAAM,CAACC,WAAW,CAACnB,WAAW,CAAC;EAEnD,IAAI,CAACiB,WAAW,EAAE;IACd,OAAOG,SAAS;EACpB;EAEA,MAAMC,KAAK,GAAGJ,WAAW,CAACH,UAAU,CAACQ,IAAI,CAAC,IAAIR,UAAU,CAACS,QAAQ;EAEjE,IAAI,CAACP,YAAY,EAAE;IACf,OAAOK,KAAK;EAChB;EAEA,OAAOG,MAAM,CAACC,IAAI,CAACT,YAAY,CAAC,CAACU,MAAM,CACnC,CAACC,OAAO,EAAEC,GAAG,KAAKD,OAAO,CAACE,OAAO,CAAC,IAAIC,MAAM,CAACF,GAAG,EAAE,GAAG,CAAC,EAAUZ,YAAY,CAACY,GAAG,CAAC,IAAI,EAAE,CAAC,EACxFP,KACJ,CAAC;AACL,CAAC;AAAChB,OAAA,CAAAU,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Textstring.js","names":["isTobitEmployee","React","useCallback","useTextstringValue","selectLanguageToChange","Textstring","_ref","children","childrenClassName","childrenStyles","childrenTagName","isTextstringHTML","replacements","textstring","text","handleClick","_ref2","ctrlKey","then","inGroup","textstringName","name","cloneElement","dangerouslySetInnerHTML","__html","undefined","onClick","createElement","className","style","displayName"],"sources":["../../../../src/components/textstring/Textstring.tsx"],"sourcesContent":["import { isTobitEmployee } from '@chayns-components/core';\nimport React, {\n CSSProperties,\n FC,\n MouseEvent,\n ReactHTML,\n useCallback,\n type ReactElement,\n} from 'react';\nimport { useTextstringValue } from '../../hooks/useTextstringValue';\nimport { selectLanguageToChange } from '../../utils/textstring';\nimport type { ITextstring, TextstringReplacement } from './types';\n\nexport type TextstringProps = {\n /**\n * The element that the text should be displayed in.\n */\n children?: ReactElement;\n /**\n * The class name of the HTML element that the text should be displayed in. Only used if `children` is not set.\n */\n childrenClassName?: string;\n /**\n * The styles of the HTML element that the text should be displayed in. Only used if `children` is not set.\n */\n childrenStyles?: CSSProperties;\n /**\n * The tag of the HTML element that the text should be displayed in. Only used if `children` is not set.\n */\n childrenTagName?: keyof ReactHTML;\n /**\n * Whether the textstring contains HTML elements and should be displayed as HTML.\n */\n isTextstringHTML?: boolean;\n /**\n * Replacement values for the textstring.\n */\n replacements?: TextstringReplacement;\n /**\n * The text that should be displayed.\n */\n textstring: ITextstring;\n};\n\nconst Textstring: FC<TextstringProps> = ({\n children,\n childrenClassName,\n childrenStyles,\n childrenTagName,\n isTextstringHTML,\n replacements,\n textstring,\n}) => {\n const text = useTextstringValue({ textstring, replacements });\n\n const handleClick = useCallback(\n ({ ctrlKey }: MouseEvent<HTMLElement>) => {\n if (ctrlKey) {\n void isTobitEmployee().then((inGroup) => {\n if (inGroup) {\n selectLanguageToChange({\n textstringName: textstring.name,\n });\n }\n });\n }\n },\n [textstring.name],\n );\n\n if (children) {\n return React.cloneElement(\n children,\n {\n dangerouslySetInnerHTML: isTextstringHTML ? { __html: text } : undefined,\n onClick: handleClick,\n },\n isTextstringHTML ? undefined : text,\n );\n }\n\n // eslint-disable-next-line react/no-danger-with-children\n return React.createElement(\n childrenTagName || 'span',\n {\n dangerouslySetInnerHTML: isTextstringHTML ? { __html: text } : undefined,\n className: childrenClassName,\n onClick: handleClick,\n style: childrenStyles,\n },\n isTextstringHTML ? undefined : text,\n );\n};\n\nTextstring.displayName = 'Textstring';\n\nexport default Textstring;\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,yBAAyB;AACzD,OAAOC,KAAK,IAKRC,WAAW,QAER,OAAO;AACd,SAASC,kBAAkB,QAAQ,gCAAgC;AACnE,SAASC,sBAAsB,QAAQ,wBAAwB;AAkC/D,MAAMC,UAA+B,GAAGC,IAAA,IAQlC;EAAA,IARmC;IACrCC,QAAQ;IACRC,iBAAiB;IACjBC,cAAc;IACdC,eAAe;IACfC,gBAAgB;IAChBC,YAAY;IACZC;EACJ,CAAC,GAAAP,IAAA;EACG,MAAMQ,IAAI,GAAGX,kBAAkB,CAAC;IAAEU,UAAU;IAAED;EAAa,CAAC,CAAC;EAE7D,MAAMG,WAAW,GAAGb,WAAW,CAC3Bc,KAAA,IAA0C;IAAA,IAAzC;MAAEC;IAAiC,CAAC,GAAAD,KAAA;IACjC,IAAIC,OAAO,EAAE;MACT,KAAKjB,eAAe,CAAC,CAAC,CAACkB,IAAI,CAAEC,OAAO,IAAK;QACrC,IAAIA,OAAO,EAAE;UACTf,sBAAsB,CAAC;YACnBgB,cAAc,EAAEP,UAAU,CAACQ;UAC/B,CAAC,CAAC;QACN;MACJ,CAAC,CAAC;IACN;EACJ,CAAC,EACD,CAACR,UAAU,CAACQ,IAAI,CACpB,CAAC;EAED,IAAId,QAAQ,EAAE;IACV,oBAAON,KAAK,CAACqB,YAAY,CACrBf,QAAQ,EACR;MACIgB,uBAAuB,EAAEZ,gBAAgB,GAAG;QAAEa,MAAM,EAAEV;MAAK,CAAC,GAAGW,SAAS;MACxEC,OAAO,EAAEX;IACb,CAAC,EACDJ,gBAAgB,GAAGc,SAAS,GAAGX,IACnC,CAAC;EACL;;EAEA;EACA,oBAAOb,KAAK,CAAC0B,aAAa,CACtBjB,eAAe,IAAI,MAAM,EACzB;IACIa,uBAAuB,EAAEZ,gBAAgB,GAAG;MAAEa,MAAM,EAAEV;IAAK,CAAC,GAAGW,SAAS;IACxEG,SAAS,EAAEpB,iBAAiB;IAC5BkB,OAAO,EAAEX,WAAW;IACpBc,KAAK,EAAEpB;EACX,CAAC,EACDE,gBAAgB,GAAGc,SAAS,GAAGX,IACnC,CAAC;AACL,CAAC;AAEDT,UAAU,CAACyB,WAAW,GAAG,YAAY;AAErC,eAAezB,UAAU","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","names":[],"sources":["../../../../src/components/textstring/types.ts"],"sourcesContent":["export interface TextstringReplacement {\n [key: string]: string;\n}\n\nexport interface ITextstring {\n fallback: string;\n name: string;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TextstringProvider.js","names":["React","createContext","useEffect","useState","loadLibrary","TextstringContext","TextstringProvider","_ref","children","libraryName","language","textstrings","setTextstrings","loadData","textstringResult","prevTextstrings","window","Textstrings","createElement","Provider","value","displayName"],"sources":["../../../../src/components/textstring-provider/TextstringProvider.tsx"],"sourcesContent":["import React, { createContext, FC, ReactNode, useEffect, useState } from 'react';\nimport type { TextstringValue } from '../../types/textstring';\nimport { loadLibrary } from '../../utils/textstring';\n\nexport const TextstringContext = createContext<TextstringValue>({});\n\nexport type TextstringProviderProps = {\n /**\n * The element that should use the library.\n */\n children?: ReactNode;\n /**\n * The language that should be used.\n */\n language: string;\n /**\n * The name of the library.\n */\n libraryName: string;\n};\n\nconst TextstringProvider: FC<TextstringProviderProps> = ({ children, libraryName, language }) => {\n const [textstrings, setTextstrings] = useState<TextstringValue>({});\n\n useEffect(() => {\n const loadData = async () => {\n const textstringResult = await loadLibrary({ libraryName, language });\n\n if (textstringResult) {\n const prevTextstrings = window.Textstrings;\n\n window.Textstrings = {\n ...prevTextstrings,\n [libraryName]: textstringResult,\n };\n\n setTextstrings(textstringResult);\n }\n };\n\n void loadData();\n }, [language, libraryName]);\n\n return <TextstringContext.Provider value={textstrings}>{children}</TextstringContext.Provider>;\n};\n\nTextstringProvider.displayName = 'TextstringProvider';\n\nexport default TextstringProvider;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAiBC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAEhF,SAASC,WAAW,QAAQ,wBAAwB;AAEpD,OAAO,MAAMC,iBAAiB,gBAAGJ,aAAa,CAAkB,CAAC,CAAC,CAAC;AAiBnE,MAAMK,kBAA+C,GAAGC,IAAA,IAAyC;EAAA,IAAxC;IAAEC,QAAQ;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAAH,IAAA;EACxF,MAAM,CAACI,WAAW,EAAEC,cAAc,CAAC,GAAGT,QAAQ,CAAkB,CAAC,CAAC,CAAC;EAEnED,SAAS,CAAC,MAAM;IACZ,MAAMW,QAAQ,GAAG,MAAAA,CAAA,KAAY;MACzB,MAAMC,gBAAgB,GAAG,MAAMV,WAAW,CAAC;QAAEK,WAAW;QAAEC;MAAS,CAAC,CAAC;MAErE,IAAII,gBAAgB,EAAE;QAClB,MAAMC,eAAe,GAAGC,MAAM,CAACC,WAAW;QAE1CD,MAAM,CAACC,WAAW,GAAG;UACjB,GAAGF,eAAe;UAClB,CAACN,WAAW,GAAGK;QACnB,CAAC;QAEDF,cAAc,CAACE,gBAAgB,CAAC;MACpC;IACJ,CAAC;IAED,KAAKD,QAAQ,CAAC,CAAC;EACnB,CAAC,EAAE,CAACH,QAAQ,EAAED,WAAW,CAAC,CAAC;EAE3B,oBAAOT,KAAA,CAAAkB,aAAA,CAACb,iBAAiB,CAACc,QAAQ;IAACC,KAAK,EAAET;EAAY,GAAEH,QAAqC,CAAC;AAClG,CAAC;AAEDF,kBAAkB,CAACe,WAAW,GAAG,oBAAoB;AAErD,eAAef,kBAAkB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTextstringValue.js","names":["useContext","TextstringContext","useTextstringValue","_ref","replacements","textstring","textstrings","value","name","fallback","Object","keys","reduce","current","key","replace","RegExp"],"sources":["../../../src/hooks/useTextstringValue.ts"],"sourcesContent":["import { useContext } from 'react';\nimport { TextstringContext } from '../components/textstring-provider/TextstringProvider';\nimport type { ITextstring, TextstringReplacement } from '../components/textstring/types';\n\nexport interface UseTextstringValue {\n textstring: ITextstring;\n replacements?: TextstringReplacement;\n}\n\nexport const useTextstringValue = ({ replacements, textstring }: UseTextstringValue) => {\n const textstrings = useContext(TextstringContext);\n\n const value = textstrings[textstring.name] ?? textstring.fallback;\n\n if (!replacements) {\n return value;\n }\n\n return Object.keys(replacements).reduce(\n (current, key) => current.replace(new RegExp(key, 'g'), <string>replacements[key] || ''),\n value,\n );\n};\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,OAAO;AAClC,SAASC,iBAAiB,QAAQ,sDAAsD;AAQxF,OAAO,MAAMC,kBAAkB,GAAGC,IAAA,IAAsD;EAAA,IAArD;IAAEC,YAAY;IAAEC;EAA+B,CAAC,GAAAF,IAAA;EAC/E,MAAMG,WAAW,GAAGN,UAAU,CAACC,iBAAiB,CAAC;EAEjD,MAAMM,KAAK,GAAGD,WAAW,CAACD,UAAU,CAACG,IAAI,CAAC,IAAIH,UAAU,CAACI,QAAQ;EAEjE,IAAI,CAACL,YAAY,EAAE;IACf,OAAOG,KAAK;EAChB;EAEA,OAAOG,MAAM,CAACC,IAAI,CAACP,YAAY,CAAC,CAACQ,MAAM,CACnC,CAACC,OAAO,EAAEC,GAAG,KAAKD,OAAO,CAACE,OAAO,CAAC,IAAIC,MAAM,CAACF,GAAG,EAAE,GAAG,CAAC,EAAUV,YAAY,CAACU,GAAG,CAAC,IAAI,EAAE,CAAC,EACxFP,KACJ,CAAC;AACL,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","TextstringProvider","Textstring","useTextstringValue","getTextstringValue"],"sources":["../../src/index.ts"],"sourcesContent":["// noinspection JSUnusedGlobalSymbols\n\nexport { default as TextstringProvider } from './components/textstring-provider/TextstringProvider';\nexport { default as Textstring } from './components/textstring/Textstring';\nexport type { ITextstring, TextstringReplacement } from './components/textstring/types';\nexport { useTextstringValue } from './hooks/useTextstringValue';\nexport { getTextstringValue } from './utils/textstring';\n"],"mappings":"AAAA;;AAEA,SAASA,OAAO,IAAIC,kBAAkB,QAAQ,qDAAqD;AACnG,SAASD,OAAO,IAAIE,UAAU,QAAQ,oCAAoC;AAE1E,SAASC,kBAAkB,QAAQ,4BAA4B;AAC/D,SAASC,kBAAkB,QAAQ,oBAAoB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chayns.js","names":["ButtonType"],"sources":["../../../src/types/chayns.ts"],"sourcesContent":["declare global {\n let chayns: Chayns;\n}\n\nexport interface Chayns {\n dialog: Dialog;\n env: Env;\n openImage(urls: string | string[], start?: number): Promise<undefined>;\n openVideo(url: string): Promise<void>;\n register(config: object): any;\n}\n\nexport interface Dialog {\n select(config: {\n title?: string;\n message?: string;\n list: Array<SelectDialogItem>;\n multiselect?: boolean;\n type?: SelectType;\n preventCloseOnClick?: boolean;\n buttons?: DialogButton[];\n selectAllButton?: string;\n }): Promise<SelectDialogResult>;\n alert(headline: string, text: string): Promise<ButtonType>;\n iFrame(config: {\n url: string;\n input?: object;\n title?: string;\n message?: string;\n buttons?: DialogButton[];\n seamless?: boolean;\n transparent?: boolean;\n waitCursor?: boolean;\n maxHeight?: string;\n width?: number;\n customTransitionTimeout?: number;\n }): Promise<any>;\n}\n\ndeclare enum ButtonText {\n Cancel = 'Abbrechen',\n No = 'Nein',\n Ok = 'OK',\n Yes = 'Ja',\n}\n\nexport enum ButtonType {\n Cancel = -1,\n Negative = 0,\n Positive = 1,\n}\n\nexport interface DialogButton {\n text: ButtonText | string;\n buttonType: ButtonType | number;\n collapseTime?: number;\n textColor?: string;\n backgroundColor?: string;\n}\n\nexport interface SelectDialogItem {\n name: string;\n value: string | number;\n isSelected?: boolean;\n}\n\nexport interface SelectDialogResult {\n buttonType: ButtonType | number;\n selection: Array<SelectDialogItem>;\n}\n\ndeclare enum SelectType {\n Default = 0,\n Icon = 1,\n IconAndText,\n}\n\nexport interface Group {\n id: number;\n isActive: boolean;\n}\n\nexport interface User {\n name: string;\n firstName: string;\n gender: number;\n lastName: string;\n id: number;\n personId: string;\n tobitAccessToken: string;\n groups: Group[];\n isAuthenticated: boolean;\n adminMode: boolean;\n isAdmin: boolean;\n}\n\nexport interface Site {\n id: string;\n}\n\nexport interface Env {\n site: Site;\n user: User;\n language: any;\n parameters: any;\n isApp: boolean;\n isMobile: boolean;\n isTablet: boolean;\n}\n"],"mappings":"AA8CA,WAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textstring.js","names":[],"sources":["../../../src/types/textstring.ts"],"sourcesContent":["declare global {\n interface Window {\n Textstrings: TextstringValues;\n }\n}\n\ntype TextstringValues = {\n [key: string]: TextstringValue;\n};\n\nexport type TextstringValue = {\n [key: string]: string;\n};\n"],"mappings":"","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"textstring.js","names":["loadLibrary","_ref","language","libraryName","response","fetch","status","json","selectLanguageToChange","_ref2","textstringName","chayns","dialog","iFrame","url","buttons","input","textstring","getTextstringValue","_ref3","replacements","textstrings","window","Textstrings","undefined","value","name","fallback","Object","keys","reduce","current","key","replace","RegExp"],"sources":["../../../src/utils/textstring.ts"],"sourcesContent":["import type { ITextstring, TextstringReplacement } from '../components/textstring/types';\nimport type { TextstringValue } from '../types/textstring';\n\ninterface LoadLibraryOptions {\n libraryName: string;\n language: string;\n}\n\nexport const loadLibrary = async ({ language, libraryName }: LoadLibraryOptions) => {\n const response = await fetch(\n `https://webapi.tobit.com/TextstringService/v1.0/LangStrings/${libraryName}?language=${language}`,\n );\n\n if (response.status !== 200) {\n return null;\n }\n\n return (await response.json()) as TextstringValue;\n};\n\ninterface SelectLanguageToChangeOptions {\n textstringName: string;\n}\n\nexport const selectLanguageToChange = ({ textstringName }: SelectLanguageToChangeOptions) => {\n void chayns.dialog.iFrame({\n url: 'https://tapp-staging.chayns-static.space/text-string-tapp/v1/iframe-edit.html',\n buttons: [],\n input: { textstring: textstringName },\n });\n};\n\ninterface GetTextstringValueOptions {\n textstring: ITextstring;\n libraryName: string;\n replacements?: TextstringReplacement;\n}\n\nexport const getTextstringValue = ({\n libraryName,\n textstring,\n replacements,\n}: GetTextstringValueOptions) => {\n const textstrings = window.Textstrings[libraryName];\n\n if (!textstrings) {\n return undefined;\n }\n\n const value = textstrings[textstring.name] ?? textstring.fallback;\n\n if (!replacements) {\n return value;\n }\n\n return Object.keys(replacements).reduce(\n (current, key) => current.replace(new RegExp(key, 'g'), <string>replacements[key] || ''),\n value,\n );\n};\n"],"mappings":"AAQA,OAAO,MAAMA,WAAW,GAAG,MAAAC,IAAA,IAAyD;EAAA,IAAlD;IAAEC,QAAQ;IAAEC;EAAgC,CAAC,GAAAF,IAAA;EAC3E,MAAMG,QAAQ,GAAG,MAAMC,KAAK,CACvB,+DAA8DF,WAAY,aAAYD,QAAS,EACpG,CAAC;EAED,IAAIE,QAAQ,CAACE,MAAM,KAAK,GAAG,EAAE;IACzB,OAAO,IAAI;EACf;EAEA,OAAQ,MAAMF,QAAQ,CAACG,IAAI,CAAC,CAAC;AACjC,CAAC;AAMD,OAAO,MAAMC,sBAAsB,GAAGC,KAAA,IAAuD;EAAA,IAAtD;IAAEC;EAA8C,CAAC,GAAAD,KAAA;EACpF,KAAKE,MAAM,CAACC,MAAM,CAACC,MAAM,CAAC;IACtBC,GAAG,EAAE,+EAA+E;IACpFC,OAAO,EAAE,EAAE;IACXC,KAAK,EAAE;MAAEC,UAAU,EAAEP;IAAe;EACxC,CAAC,CAAC;AACN,CAAC;AAQD,OAAO,MAAMQ,kBAAkB,GAAGC,KAAA,IAID;EAAA,IAJE;IAC/BhB,WAAW;IACXc,UAAU;IACVG;EACuB,CAAC,GAAAD,KAAA;EACxB,MAAME,WAAW,GAAGC,MAAM,CAACC,WAAW,CAACpB,WAAW,CAAC;EAEnD,IAAI,CAACkB,WAAW,EAAE;IACd,OAAOG,SAAS;EACpB;EAEA,MAAMC,KAAK,GAAGJ,WAAW,CAACJ,UAAU,CAACS,IAAI,CAAC,IAAIT,UAAU,CAACU,QAAQ;EAEjE,IAAI,CAACP,YAAY,EAAE;IACf,OAAOK,KAAK;EAChB;EAEA,OAAOG,MAAM,CAACC,IAAI,CAACT,YAAY,CAAC,CAACU,MAAM,CACnC,CAACC,OAAO,EAAEC,GAAG,KAAKD,OAAO,CAACE,OAAO,CAAC,IAAIC,MAAM,CAACF,GAAG,EAAE,GAAG,CAAC,EAAUZ,YAAY,CAACY,GAAG,CAAC,IAAI,EAAE,CAAC,EACxFP,KACJ,CAAC;AACL,CAAC","ignoreList":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chayns-components/textstring",
|
|
3
|
-
"version": "5.0.0-beta.
|
|
3
|
+
"version": "5.0.0-beta.578",
|
|
4
4
|
"description": "A set of beautiful React components for developing your own applications with chayns.",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"browserslist": [
|
|
@@ -17,8 +17,16 @@
|
|
|
17
17
|
"author": "Tobit.Software",
|
|
18
18
|
"homepage": "https://github.com/TobitSoftware/chayns-components/tree/main/packages/textstring#readme",
|
|
19
19
|
"license": "MIT",
|
|
20
|
-
"main": "lib/index.js",
|
|
21
|
-
"
|
|
20
|
+
"main": "lib/cjs/index.js",
|
|
21
|
+
"module": "lib/esm/index.js",
|
|
22
|
+
"types": "lib/types/index.d.ts",
|
|
23
|
+
"exports": {
|
|
24
|
+
".": {
|
|
25
|
+
"require": "./lib/cjs/index.js",
|
|
26
|
+
"import": "./lib/esm/index.js",
|
|
27
|
+
"types": "./lib/types/index.d.ts"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
22
30
|
"directories": {
|
|
23
31
|
"lib": "lib",
|
|
24
32
|
"test": "__tests__"
|
|
@@ -31,9 +39,10 @@
|
|
|
31
39
|
"url": "git+https://github.com/TobitSoftware/chayns-components.git"
|
|
32
40
|
},
|
|
33
41
|
"scripts": {
|
|
34
|
-
"build": "npm run build:
|
|
35
|
-
"build:js": "babel src --out-dir lib --extensions=.ts,.tsx --source-maps --ignore=src/stories",
|
|
42
|
+
"build": "npm run build:cjs && npm run build:esm && npm run build:types",
|
|
36
43
|
"build:types": "tsc",
|
|
44
|
+
"build:cjs": "cross-env NODE_ENV=cjs babel src --out-dir lib/cjs --extensions=.ts,.tsx --source-maps --ignore=src/stories",
|
|
45
|
+
"build:esm": "cross-env NODE_ENV=esm babel src --out-dir lib/esm --extensions=.ts,.tsx --source-maps --ignore=src/stories",
|
|
37
46
|
"prepublishOnly": "npm run build"
|
|
38
47
|
},
|
|
39
48
|
"bugs": {
|
|
@@ -50,6 +59,7 @@
|
|
|
50
59
|
"@types/styled-components": "^5.1.34",
|
|
51
60
|
"@types/uuid": "^9.0.8",
|
|
52
61
|
"babel-loader": "^9.1.3",
|
|
62
|
+
"cross-env": "^7.0.3",
|
|
53
63
|
"lerna": "^8.1.2",
|
|
54
64
|
"react": "^18.2.0",
|
|
55
65
|
"react-dom": "^18.2.0",
|
|
@@ -57,7 +67,7 @@
|
|
|
57
67
|
"typescript": "^5.4.5"
|
|
58
68
|
},
|
|
59
69
|
"dependencies": {
|
|
60
|
-
"@chayns-components/core": "^5.0.0-beta.
|
|
70
|
+
"@chayns-components/core": "^5.0.0-beta.578"
|
|
61
71
|
},
|
|
62
72
|
"peerDependencies": {
|
|
63
73
|
"chayns-api": ">=1.0.50",
|
|
@@ -69,5 +79,5 @@
|
|
|
69
79
|
"publishConfig": {
|
|
70
80
|
"access": "public"
|
|
71
81
|
},
|
|
72
|
-
"gitHead": "
|
|
82
|
+
"gitHead": "c3d65c0781ca6b8e053ccc6ce359b1074b0fcb1e"
|
|
73
83
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Textstring.js","names":["isTobitEmployee","React","useCallback","useTextstringValue","selectLanguageToChange","Textstring","_ref","children","childrenClassName","childrenStyles","childrenTagName","isTextstringHTML","replacements","textstring","text","handleClick","_ref2","ctrlKey","then","inGroup","textstringName","name","cloneElement","dangerouslySetInnerHTML","__html","undefined","onClick","createElement","className","style","displayName"],"sources":["../../../src/components/textstring/Textstring.tsx"],"sourcesContent":["import { isTobitEmployee } from '@chayns-components/core';\nimport React, {\n CSSProperties,\n FC,\n MouseEvent,\n ReactHTML,\n useCallback,\n type ReactElement,\n} from 'react';\nimport { useTextstringValue } from '../../hooks/useTextstringValue';\nimport { selectLanguageToChange } from '../../utils/textstring';\nimport type { ITextstring, TextstringReplacement } from './types';\n\nexport type TextstringProps = {\n /**\n * The element that the text should be displayed in.\n */\n children?: ReactElement;\n /**\n * The class name of the HTML element that the text should be displayed in. Only used if `children` is not set.\n */\n childrenClassName?: string;\n /**\n * The styles of the HTML element that the text should be displayed in. Only used if `children` is not set.\n */\n childrenStyles?: CSSProperties;\n /**\n * The tag of the HTML element that the text should be displayed in. Only used if `children` is not set.\n */\n childrenTagName?: keyof ReactHTML;\n /**\n * Whether the textstring contains HTML elements and should be displayed as HTML.\n */\n isTextstringHTML?: boolean;\n /**\n * Replacement values for the textstring.\n */\n replacements?: TextstringReplacement;\n /**\n * The text that should be displayed.\n */\n textstring: ITextstring;\n};\n\nconst Textstring: FC<TextstringProps> = ({\n children,\n childrenClassName,\n childrenStyles,\n childrenTagName,\n isTextstringHTML,\n replacements,\n textstring,\n}) => {\n const text = useTextstringValue({ textstring, replacements });\n\n const handleClick = useCallback(\n ({ ctrlKey }: MouseEvent<HTMLElement>) => {\n if (ctrlKey) {\n void isTobitEmployee().then((inGroup) => {\n if (inGroup) {\n selectLanguageToChange({\n textstringName: textstring.name,\n });\n }\n });\n }\n },\n [textstring.name],\n );\n\n if (children) {\n return React.cloneElement(\n children,\n {\n dangerouslySetInnerHTML: isTextstringHTML ? { __html: text } : undefined,\n onClick: handleClick,\n },\n isTextstringHTML ? undefined : text,\n );\n }\n\n // eslint-disable-next-line react/no-danger-with-children\n return React.createElement(\n childrenTagName || 'span',\n {\n dangerouslySetInnerHTML: isTextstringHTML ? { __html: text } : undefined,\n className: childrenClassName,\n onClick: handleClick,\n style: childrenStyles,\n },\n isTextstringHTML ? undefined : text,\n );\n};\n\nTextstring.displayName = 'Textstring';\n\nexport default Textstring;\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,yBAAyB;AACzD,OAAOC,KAAK,IAKRC,WAAW,QAER,OAAO;AACd,SAASC,kBAAkB,QAAQ,gCAAgC;AACnE,SAASC,sBAAsB,QAAQ,wBAAwB;AAkC/D,MAAMC,UAA+B,GAAGC,IAAA,IAQlC;EAAA,IARmC;IACrCC,QAAQ;IACRC,iBAAiB;IACjBC,cAAc;IACdC,eAAe;IACfC,gBAAgB;IAChBC,YAAY;IACZC;EACJ,CAAC,GAAAP,IAAA;EACG,MAAMQ,IAAI,GAAGX,kBAAkB,CAAC;IAAEU,UAAU;IAAED;EAAa,CAAC,CAAC;EAE7D,MAAMG,WAAW,GAAGb,WAAW,CAC3Bc,KAAA,IAA0C;IAAA,IAAzC;MAAEC;IAAiC,CAAC,GAAAD,KAAA;IACjC,IAAIC,OAAO,EAAE;MACT,KAAKjB,eAAe,CAAC,CAAC,CAACkB,IAAI,CAAEC,OAAO,IAAK;QACrC,IAAIA,OAAO,EAAE;UACTf,sBAAsB,CAAC;YACnBgB,cAAc,EAAEP,UAAU,CAACQ;UAC/B,CAAC,CAAC;QACN;MACJ,CAAC,CAAC;IACN;EACJ,CAAC,EACD,CAACR,UAAU,CAACQ,IAAI,CACpB,CAAC;EAED,IAAId,QAAQ,EAAE;IACV,oBAAON,KAAK,CAACqB,YAAY,CACrBf,QAAQ,EACR;MACIgB,uBAAuB,EAAEZ,gBAAgB,GAAG;QAAEa,MAAM,EAAEV;MAAK,CAAC,GAAGW,SAAS;MACxEC,OAAO,EAAEX;IACb,CAAC,EACDJ,gBAAgB,GAAGc,SAAS,GAAGX,IACnC,CAAC;EACL;;EAEA;EACA,oBAAOb,KAAK,CAAC0B,aAAa,CACtBjB,eAAe,IAAI,MAAM,EACzB;IACIa,uBAAuB,EAAEZ,gBAAgB,GAAG;MAAEa,MAAM,EAAEV;IAAK,CAAC,GAAGW,SAAS;IACxEG,SAAS,EAAEpB,iBAAiB;IAC5BkB,OAAO,EAAEX,WAAW;IACpBc,KAAK,EAAEpB;EACX,CAAC,EACDE,gBAAgB,GAAGc,SAAS,GAAGX,IACnC,CAAC;AACL,CAAC;AAEDT,UAAU,CAACyB,WAAW,GAAG,YAAY;AAErC,eAAezB,UAAU","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","names":[],"sources":["../../../src/components/textstring/types.ts"],"sourcesContent":["export interface TextstringReplacement {\n [key: string]: string;\n}\n\nexport interface ITextstring {\n fallback: string;\n name: string;\n}\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TextstringProvider.js","names":["React","createContext","useEffect","useState","loadLibrary","TextstringContext","TextstringProvider","_ref","children","libraryName","language","textstrings","setTextstrings","loadData","textstringResult","prevTextstrings","window","Textstrings","createElement","Provider","value","displayName"],"sources":["../../../src/components/textstring-provider/TextstringProvider.tsx"],"sourcesContent":["import React, { createContext, FC, ReactNode, useEffect, useState } from 'react';\nimport type { TextstringValue } from '../../types/textstring';\nimport { loadLibrary } from '../../utils/textstring';\n\nexport const TextstringContext = createContext<TextstringValue>({});\n\nexport type TextstringProviderProps = {\n /**\n * The element that should use the library.\n */\n children?: ReactNode;\n /**\n * The language that should be used.\n */\n language: string;\n /**\n * The name of the library.\n */\n libraryName: string;\n};\n\nconst TextstringProvider: FC<TextstringProviderProps> = ({ children, libraryName, language }) => {\n const [textstrings, setTextstrings] = useState<TextstringValue>({});\n\n useEffect(() => {\n const loadData = async () => {\n const textstringResult = await loadLibrary({ libraryName, language });\n\n if (textstringResult) {\n const prevTextstrings = window.Textstrings;\n\n window.Textstrings = {\n ...prevTextstrings,\n [libraryName]: textstringResult,\n };\n\n setTextstrings(textstringResult);\n }\n };\n\n void loadData();\n }, [language, libraryName]);\n\n return <TextstringContext.Provider value={textstrings}>{children}</TextstringContext.Provider>;\n};\n\nTextstringProvider.displayName = 'TextstringProvider';\n\nexport default TextstringProvider;\n"],"mappings":"AAAA,OAAOA,KAAK,IAAIC,aAAa,EAAiBC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AAEhF,SAASC,WAAW,QAAQ,wBAAwB;AAEpD,OAAO,MAAMC,iBAAiB,gBAAGJ,aAAa,CAAkB,CAAC,CAAC,CAAC;AAiBnE,MAAMK,kBAA+C,GAAGC,IAAA,IAAyC;EAAA,IAAxC;IAAEC,QAAQ;IAAEC,WAAW;IAAEC;EAAS,CAAC,GAAAH,IAAA;EACxF,MAAM,CAACI,WAAW,EAAEC,cAAc,CAAC,GAAGT,QAAQ,CAAkB,CAAC,CAAC,CAAC;EAEnED,SAAS,CAAC,MAAM;IACZ,MAAMW,QAAQ,GAAG,MAAAA,CAAA,KAAY;MACzB,MAAMC,gBAAgB,GAAG,MAAMV,WAAW,CAAC;QAAEK,WAAW;QAAEC;MAAS,CAAC,CAAC;MAErE,IAAII,gBAAgB,EAAE;QAClB,MAAMC,eAAe,GAAGC,MAAM,CAACC,WAAW;QAE1CD,MAAM,CAACC,WAAW,GAAG;UACjB,GAAGF,eAAe;UAClB,CAACN,WAAW,GAAGK;QACnB,CAAC;QAEDF,cAAc,CAACE,gBAAgB,CAAC;MACpC;IACJ,CAAC;IAED,KAAKD,QAAQ,CAAC,CAAC;EACnB,CAAC,EAAE,CAACH,QAAQ,EAAED,WAAW,CAAC,CAAC;EAE3B,oBAAOT,KAAA,CAAAkB,aAAA,CAACb,iBAAiB,CAACc,QAAQ;IAACC,KAAK,EAAET;EAAY,GAAEH,QAAqC,CAAC;AAClG,CAAC;AAEDF,kBAAkB,CAACe,WAAW,GAAG,oBAAoB;AAErD,eAAef,kBAAkB","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useTextstringValue.js","names":["useContext","TextstringContext","useTextstringValue","_ref","replacements","textstring","textstrings","value","name","fallback","Object","keys","reduce","current","key","replace","RegExp"],"sources":["../../src/hooks/useTextstringValue.ts"],"sourcesContent":["import { useContext } from 'react';\nimport { TextstringContext } from '../components/textstring-provider/TextstringProvider';\nimport type { ITextstring, TextstringReplacement } from '../components/textstring/types';\n\nexport interface UseTextstringValue {\n textstring: ITextstring;\n replacements?: TextstringReplacement;\n}\n\nexport const useTextstringValue = ({ replacements, textstring }: UseTextstringValue) => {\n const textstrings = useContext(TextstringContext);\n\n const value = textstrings[textstring.name] ?? textstring.fallback;\n\n if (!replacements) {\n return value;\n }\n\n return Object.keys(replacements).reduce(\n (current, key) => current.replace(new RegExp(key, 'g'), <string>replacements[key] || ''),\n value,\n );\n};\n"],"mappings":"AAAA,SAASA,UAAU,QAAQ,OAAO;AAClC,SAASC,iBAAiB,QAAQ,sDAAsD;AAQxF,OAAO,MAAMC,kBAAkB,GAAGC,IAAA,IAAsD;EAAA,IAArD;IAAEC,YAAY;IAAEC;EAA+B,CAAC,GAAAF,IAAA;EAC/E,MAAMG,WAAW,GAAGN,UAAU,CAACC,iBAAiB,CAAC;EAEjD,MAAMM,KAAK,GAAGD,WAAW,CAACD,UAAU,CAACG,IAAI,CAAC,IAAIH,UAAU,CAACI,QAAQ;EAEjE,IAAI,CAACL,YAAY,EAAE;IACf,OAAOG,KAAK;EAChB;EAEA,OAAOG,MAAM,CAACC,IAAI,CAACP,YAAY,CAAC,CAACQ,MAAM,CACnC,CAACC,OAAO,EAAEC,GAAG,KAAKD,OAAO,CAACE,OAAO,CAAC,IAAIC,MAAM,CAACF,GAAG,EAAE,GAAG,CAAC,EAAUV,YAAY,CAACU,GAAG,CAAC,IAAI,EAAE,CAAC,EACxFP,KACJ,CAAC;AACL,CAAC","ignoreList":[]}
|
package/lib/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["default","TextstringProvider","Textstring","useTextstringValue","getTextstringValue"],"sources":["../src/index.ts"],"sourcesContent":["// noinspection JSUnusedGlobalSymbols\n\nexport { default as TextstringProvider } from './components/textstring-provider/TextstringProvider';\nexport { default as Textstring } from './components/textstring/Textstring';\nexport type { ITextstring, TextstringReplacement } from './components/textstring/types';\nexport { useTextstringValue } from './hooks/useTextstringValue';\nexport { getTextstringValue } from './utils/textstring';\n"],"mappings":"AAAA;;AAEA,SAASA,OAAO,IAAIC,kBAAkB,QAAQ,qDAAqD;AACnG,SAASD,OAAO,IAAIE,UAAU,QAAQ,oCAAoC;AAE1E,SAASC,kBAAkB,QAAQ,4BAA4B;AAC/D,SAASC,kBAAkB,QAAQ,oBAAoB","ignoreList":[]}
|
package/lib/types/chayns.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chayns.js","names":["ButtonType"],"sources":["../../src/types/chayns.ts"],"sourcesContent":["declare global {\n let chayns: Chayns;\n}\n\nexport interface Chayns {\n dialog: Dialog;\n env: Env;\n openImage(urls: string | string[], start?: number): Promise<undefined>;\n openVideo(url: string): Promise<void>;\n register(config: object): any;\n}\n\nexport interface Dialog {\n select(config: {\n title?: string;\n message?: string;\n list: Array<SelectDialogItem>;\n multiselect?: boolean;\n type?: SelectType;\n preventCloseOnClick?: boolean;\n buttons?: DialogButton[];\n selectAllButton?: string;\n }): Promise<SelectDialogResult>;\n alert(headline: string, text: string): Promise<ButtonType>;\n iFrame(config: {\n url: string;\n input?: object;\n title?: string;\n message?: string;\n buttons?: DialogButton[];\n seamless?: boolean;\n transparent?: boolean;\n waitCursor?: boolean;\n maxHeight?: string;\n width?: number;\n customTransitionTimeout?: number;\n }): Promise<any>;\n}\n\ndeclare enum ButtonText {\n Cancel = 'Abbrechen',\n No = 'Nein',\n Ok = 'OK',\n Yes = 'Ja',\n}\n\nexport enum ButtonType {\n Cancel = -1,\n Negative = 0,\n Positive = 1,\n}\n\nexport interface DialogButton {\n text: ButtonText | string;\n buttonType: ButtonType | number;\n collapseTime?: number;\n textColor?: string;\n backgroundColor?: string;\n}\n\nexport interface SelectDialogItem {\n name: string;\n value: string | number;\n isSelected?: boolean;\n}\n\nexport interface SelectDialogResult {\n buttonType: ButtonType | number;\n selection: Array<SelectDialogItem>;\n}\n\ndeclare enum SelectType {\n Default = 0,\n Icon = 1,\n IconAndText,\n}\n\nexport interface Group {\n id: number;\n isActive: boolean;\n}\n\nexport interface User {\n name: string;\n firstName: string;\n gender: number;\n lastName: string;\n id: number;\n personId: string;\n tobitAccessToken: string;\n groups: Group[];\n isAuthenticated: boolean;\n adminMode: boolean;\n isAdmin: boolean;\n}\n\nexport interface Site {\n id: string;\n}\n\nexport interface Env {\n site: Site;\n user: User;\n language: any;\n parameters: any;\n isApp: boolean;\n isMobile: boolean;\n isTablet: boolean;\n}\n"],"mappings":"AA8CA,WAAYA,UAAU,0BAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAVA,UAAU,CAAVA,UAAU;EAAA,OAAVA,UAAU;AAAA","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"textstring.js","names":[],"sources":["../../src/types/textstring.ts"],"sourcesContent":["declare global {\n interface Window {\n Textstrings: TextstringValues;\n }\n}\n\ntype TextstringValues = {\n [key: string]: TextstringValue;\n};\n\nexport type TextstringValue = {\n [key: string]: string;\n};\n"],"mappings":"","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"textstring.js","names":["loadLibrary","_ref","language","libraryName","response","fetch","status","json","selectLanguageToChange","_ref2","textstringName","chayns","dialog","iFrame","url","buttons","input","textstring","getTextstringValue","_ref3","replacements","textstrings","window","Textstrings","undefined","value","name","fallback","Object","keys","reduce","current","key","replace","RegExp"],"sources":["../../src/utils/textstring.ts"],"sourcesContent":["import type { ITextstring, TextstringReplacement } from '../components/textstring/types';\nimport type { TextstringValue } from '../types/textstring';\n\ninterface LoadLibraryOptions {\n libraryName: string;\n language: string;\n}\n\nexport const loadLibrary = async ({ language, libraryName }: LoadLibraryOptions) => {\n const response = await fetch(\n `https://webapi.tobit.com/TextstringService/v1.0/LangStrings/${libraryName}?language=${language}`,\n );\n\n if (response.status !== 200) {\n return null;\n }\n\n return (await response.json()) as TextstringValue;\n};\n\ninterface SelectLanguageToChangeOptions {\n textstringName: string;\n}\n\nexport const selectLanguageToChange = ({ textstringName }: SelectLanguageToChangeOptions) => {\n void chayns.dialog.iFrame({\n url: 'https://tapp-staging.chayns-static.space/text-string-tapp/v1/iframe-edit.html',\n buttons: [],\n input: { textstring: textstringName },\n });\n};\n\ninterface GetTextstringValueOptions {\n textstring: ITextstring;\n libraryName: string;\n replacements?: TextstringReplacement;\n}\n\nexport const getTextstringValue = ({\n libraryName,\n textstring,\n replacements,\n}: GetTextstringValueOptions) => {\n const textstrings = window.Textstrings[libraryName];\n\n if (!textstrings) {\n return undefined;\n }\n\n const value = textstrings[textstring.name] ?? textstring.fallback;\n\n if (!replacements) {\n return value;\n }\n\n return Object.keys(replacements).reduce(\n (current, key) => current.replace(new RegExp(key, 'g'), <string>replacements[key] || ''),\n value,\n );\n};\n"],"mappings":"AAQA,OAAO,MAAMA,WAAW,GAAG,MAAAC,IAAA,IAAyD;EAAA,IAAlD;IAAEC,QAAQ;IAAEC;EAAgC,CAAC,GAAAF,IAAA;EAC3E,MAAMG,QAAQ,GAAG,MAAMC,KAAK,CACvB,+DAA8DF,WAAY,aAAYD,QAAS,EACpG,CAAC;EAED,IAAIE,QAAQ,CAACE,MAAM,KAAK,GAAG,EAAE;IACzB,OAAO,IAAI;EACf;EAEA,OAAQ,MAAMF,QAAQ,CAACG,IAAI,CAAC,CAAC;AACjC,CAAC;AAMD,OAAO,MAAMC,sBAAsB,GAAGC,KAAA,IAAuD;EAAA,IAAtD;IAAEC;EAA8C,CAAC,GAAAD,KAAA;EACpF,KAAKE,MAAM,CAACC,MAAM,CAACC,MAAM,CAAC;IACtBC,GAAG,EAAE,+EAA+E;IACpFC,OAAO,EAAE,EAAE;IACXC,KAAK,EAAE;MAAEC,UAAU,EAAEP;IAAe;EACxC,CAAC,CAAC;AACN,CAAC;AAQD,OAAO,MAAMQ,kBAAkB,GAAGC,KAAA,IAID;EAAA,IAJE;IAC/BhB,WAAW;IACXc,UAAU;IACVG;EACuB,CAAC,GAAAD,KAAA;EACxB,MAAME,WAAW,GAAGC,MAAM,CAACC,WAAW,CAACpB,WAAW,CAAC;EAEnD,IAAI,CAACkB,WAAW,EAAE;IACd,OAAOG,SAAS;EACpB;EAEA,MAAMC,KAAK,GAAGJ,WAAW,CAACJ,UAAU,CAACS,IAAI,CAAC,IAAIT,UAAU,CAACU,QAAQ;EAEjE,IAAI,CAACP,YAAY,EAAE;IACf,OAAOK,KAAK;EAChB;EAEA,OAAOG,MAAM,CAACC,IAAI,CAACT,YAAY,CAAC,CAACU,MAAM,CACnC,CAACC,OAAO,EAAEC,GAAG,KAAKD,OAAO,CAACE,OAAO,CAAC,IAAIC,MAAM,CAACF,GAAG,EAAE,GAAG,CAAC,EAAUZ,YAAY,CAACY,GAAG,CAAC,IAAI,EAAE,CAAC,EACxFP,KACJ,CAAC;AACL,CAAC","ignoreList":[]}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|