@chayns-components/textstring 5.0.0-beta.466 → 5.0.0-beta.468
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/components/textstring/Textstring.d.ts +34 -0
- package/lib/components/textstring/Textstring.js +54 -0
- package/lib/components/textstring/Textstring.js.map +1 -0
- package/lib/components/textstring-provider/{TextStringProvider.d.ts → TextstringProvider.d.ts} +5 -5
- package/lib/components/textstring-provider/TextstringProvider.js +29 -0
- package/lib/components/textstring-provider/{TextStringProvider.js.map → TextstringProvider.js.map} +1 -1
- package/lib/hooks/useTextstringValue.js +2 -2
- package/lib/hooks/useTextstringValue.js.map +1 -1
- package/lib/index.d.ts +3 -3
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/utils/textstring.d.ts +2 -2
- package/lib/utils/textstring.js +1 -1
- package/lib/utils/textstring.js.map +1 -1
- package/package.json +3 -3
- package/lib/components/textstring/TextString.d.ts +0 -30
- package/lib/components/textstring/TextString.js +0 -54
- package/lib/components/textstring/TextString.js.map +0 -1
- package/lib/components/textstring/TextString.styles.d.ts +0 -3
- package/lib/components/textstring/TextString.styles.js +0 -4
- package/lib/components/textstring/TextString.styles.js.map +0 -1
- package/lib/components/textstring-provider/TextStringProvider.js +0 -29
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { CSSProperties, FC, ReactHTML, type ReactElement } from 'react';
|
|
2
|
+
import type { ITextstring, TextstringReplacement } from './types';
|
|
3
|
+
export type TextstringProps = {
|
|
4
|
+
/**
|
|
5
|
+
* The element that the text should be displayed in.
|
|
6
|
+
*/
|
|
7
|
+
children?: ReactElement;
|
|
8
|
+
/**
|
|
9
|
+
* The class name of the HTML element that the text should be displayed in. Only used if `children` is not set.
|
|
10
|
+
*/
|
|
11
|
+
childrenClassName?: string;
|
|
12
|
+
/**
|
|
13
|
+
* The styles of the HTML element that the text should be displayed in. Only used if `children` is not set.
|
|
14
|
+
*/
|
|
15
|
+
childrenStyles?: CSSProperties;
|
|
16
|
+
/**
|
|
17
|
+
* The tag of the HTML element that the text should be displayed in. Only used if `children` is not set.
|
|
18
|
+
*/
|
|
19
|
+
childrenTagName?: keyof ReactHTML;
|
|
20
|
+
/**
|
|
21
|
+
* Whether the textstring contains HTML elements and should be displayed as HTML.
|
|
22
|
+
*/
|
|
23
|
+
isTextstringHTML?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Replacement values for the textstring.
|
|
26
|
+
*/
|
|
27
|
+
replacements?: TextstringReplacement;
|
|
28
|
+
/**
|
|
29
|
+
* The text that should be displayed.
|
|
30
|
+
*/
|
|
31
|
+
textString: ITextstring;
|
|
32
|
+
};
|
|
33
|
+
declare const Textstring: FC<TextstringProps>;
|
|
34
|
+
export default Textstring;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { isTobitEmployee } from '@chayns-components/core';
|
|
2
|
+
import React, { useCallback } from 'react';
|
|
3
|
+
import { useTextstringValue } from '../../hooks/useTextstringValue';
|
|
4
|
+
import { selectLanguageToChange } from '../../utils/textstring';
|
|
5
|
+
const Textstring = _ref => {
|
|
6
|
+
let {
|
|
7
|
+
children,
|
|
8
|
+
childrenClassName,
|
|
9
|
+
childrenStyles,
|
|
10
|
+
childrenTagName,
|
|
11
|
+
isTextstringHTML,
|
|
12
|
+
replacements,
|
|
13
|
+
textString
|
|
14
|
+
} = _ref;
|
|
15
|
+
const text = useTextstringValue({
|
|
16
|
+
textString,
|
|
17
|
+
replacements
|
|
18
|
+
});
|
|
19
|
+
const handleClick = useCallback(_ref2 => {
|
|
20
|
+
let {
|
|
21
|
+
ctrlKey
|
|
22
|
+
} = _ref2;
|
|
23
|
+
if (ctrlKey) {
|
|
24
|
+
void isTobitEmployee().then(inGroup => {
|
|
25
|
+
if (inGroup) {
|
|
26
|
+
selectLanguageToChange({
|
|
27
|
+
textstringName: textString.name
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
}, [textString.name]);
|
|
33
|
+
if (children) {
|
|
34
|
+
return /*#__PURE__*/React.cloneElement(children, {
|
|
35
|
+
dangerouslySetInnerHTML: isTextstringHTML ? {
|
|
36
|
+
__html: text
|
|
37
|
+
} : undefined,
|
|
38
|
+
onClick: handleClick
|
|
39
|
+
}, isTextstringHTML ? undefined : text);
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
// eslint-disable-next-line react/no-danger-with-children
|
|
43
|
+
return /*#__PURE__*/React.createElement(childrenTagName || 'span', {
|
|
44
|
+
dangerouslySetInnerHTML: isTextstringHTML ? {
|
|
45
|
+
__html: text
|
|
46
|
+
} : undefined,
|
|
47
|
+
className: childrenClassName,
|
|
48
|
+
onClick: handleClick,
|
|
49
|
+
style: childrenStyles
|
|
50
|
+
}, isTextstringHTML ? undefined : text);
|
|
51
|
+
};
|
|
52
|
+
Textstring.displayName = 'Textstring';
|
|
53
|
+
export default Textstring;
|
|
54
|
+
//# sourceMappingURL=Textstring.js.map
|
|
@@ -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"}
|
package/lib/components/textstring-provider/{TextStringProvider.d.ts → TextstringProvider.d.ts}
RENAMED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import React, { FC, ReactNode } from 'react';
|
|
2
|
-
export type
|
|
2
|
+
export type TextstringValue = {
|
|
3
3
|
[key: string]: string;
|
|
4
4
|
};
|
|
5
|
-
export declare const
|
|
6
|
-
export type
|
|
5
|
+
export declare const TextstringContext: React.Context<TextstringValue>;
|
|
6
|
+
export type TextstringProviderProps = {
|
|
7
7
|
/**
|
|
8
8
|
* The element that should use the library.
|
|
9
9
|
*/
|
|
@@ -17,5 +17,5 @@ export type TextStringProviderProps = {
|
|
|
17
17
|
*/
|
|
18
18
|
libraryName: string;
|
|
19
19
|
};
|
|
20
|
-
declare const
|
|
21
|
-
export default
|
|
20
|
+
declare const TextstringProvider: FC<TextstringProviderProps>;
|
|
21
|
+
export default TextstringProvider;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import React, { createContext, useEffect, useState } from 'react';
|
|
2
|
+
import { loadLibrary } from '../../utils/textstring';
|
|
3
|
+
export const TextstringContext = /*#__PURE__*/createContext({});
|
|
4
|
+
const TextstringProvider = _ref => {
|
|
5
|
+
let {
|
|
6
|
+
children,
|
|
7
|
+
libraryName,
|
|
8
|
+
language
|
|
9
|
+
} = _ref;
|
|
10
|
+
const [textstrings, setTextstrings] = useState({});
|
|
11
|
+
useEffect(() => {
|
|
12
|
+
const loadData = async () => {
|
|
13
|
+
const textstringResult = await loadLibrary({
|
|
14
|
+
libraryName,
|
|
15
|
+
language
|
|
16
|
+
});
|
|
17
|
+
if (textstringResult) {
|
|
18
|
+
setTextstrings(textstringResult);
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
void loadData();
|
|
22
|
+
}, [language, libraryName]);
|
|
23
|
+
return /*#__PURE__*/React.createElement(TextstringContext.Provider, {
|
|
24
|
+
value: textstrings
|
|
25
|
+
}, children);
|
|
26
|
+
};
|
|
27
|
+
TextstringProvider.displayName = 'TextstringProvider';
|
|
28
|
+
export default TextstringProvider;
|
|
29
|
+
//# sourceMappingURL=TextstringProvider.js.map
|
package/lib/components/textstring-provider/{TextStringProvider.js.map → TextstringProvider.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"
|
|
1
|
+
{"version":3,"file":"TextstringProvider.js","names":["React","createContext","useEffect","useState","loadLibrary","TextstringContext","TextstringProvider","_ref","children","libraryName","language","textstrings","setTextstrings","loadData","textstringResult","createElement","Provider","value","displayName"],"sources":["../../../src/components/textstring-provider/TextstringProvider.tsx"],"sourcesContent":["import React, { createContext, FC, ReactNode, useEffect, useState } from 'react';\nimport { loadLibrary } from '../../utils/textstring';\n\nexport type TextstringValue = {\n [key: string]: string;\n};\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 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;AAChF,SAASC,WAAW,QAAQ,wBAAwB;AAMpD,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;QAClBF,cAAc,CAACE,gBAAgB,CAAC;MACpC;IACJ,CAAC;IAED,KAAKD,QAAQ,CAAC,CAAC;EACnB,CAAC,EAAE,CAACH,QAAQ,EAAED,WAAW,CAAC,CAAC;EAE3B,oBAAOT,KAAA,CAAAe,aAAA,CAACV,iBAAiB,CAACW,QAAQ;IAACC,KAAK,EAAEN;EAAY,GAAEH,QAAqC,CAAC;AAClG,CAAC;AAEDF,kBAAkB,CAACY,WAAW,GAAG,oBAAoB;AAErD,eAAeZ,kBAAkB"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { useContext } from 'react';
|
|
2
|
-
import {
|
|
2
|
+
import { TextstringContext } from '../components/textstring-provider/TextstringProvider';
|
|
3
3
|
export const useTextstringValue = _ref => {
|
|
4
4
|
let {
|
|
5
5
|
replacements,
|
|
6
6
|
textString
|
|
7
7
|
} = _ref;
|
|
8
|
-
const textStrings = useContext(
|
|
8
|
+
const textStrings = useContext(TextstringContext);
|
|
9
9
|
const value = textStrings[textString.name] ?? textString.fallback;
|
|
10
10
|
if (!replacements) {
|
|
11
11
|
return value;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTextstringValue.js","names":["useContext","
|
|
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"}
|
package/lib/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { default as
|
|
2
|
-
export { default as
|
|
3
|
-
export type { ITextstring
|
|
1
|
+
export { default as TextstringProvider } from './components/textstring-provider/TextstringProvider';
|
|
2
|
+
export { default as Textstring } from './components/textstring/Textstring';
|
|
3
|
+
export type { ITextstring, TextstringReplacement } from './components/textstring/types';
|
|
4
4
|
export { useTextstringValue } from './hooks/useTextstringValue';
|
package/lib/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// noinspection JSUnusedGlobalSymbols
|
|
2
2
|
|
|
3
|
-
export { default as
|
|
4
|
-
export { default as
|
|
3
|
+
export { default as TextstringProvider } from './components/textstring-provider/TextstringProvider';
|
|
4
|
+
export { default as Textstring } from './components/textstring/Textstring';
|
|
5
5
|
export { useTextstringValue } from './hooks/useTextstringValue';
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["default","
|
|
1
|
+
{"version":3,"file":"index.js","names":["default","TextstringProvider","Textstring","useTextstringValue"],"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';\n"],"mappings":"AAAA;;AAEA,SAASA,OAAO,IAAIC,kBAAkB,QAAQ,qDAAqD;AACnG,SAASD,OAAO,IAAIE,UAAU,QAAQ,oCAAoC;AAE1E,SAASC,kBAAkB,QAAQ,4BAA4B"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { TextstringValue } from '../components/textstring-provider/TextstringProvider';
|
|
2
2
|
interface LoadLibraryOptions {
|
|
3
3
|
libraryName: string;
|
|
4
4
|
language: string;
|
|
5
5
|
}
|
|
6
|
-
export declare const loadLibrary: ({ language, libraryName }: LoadLibraryOptions) => Promise<
|
|
6
|
+
export declare const loadLibrary: ({ language, libraryName }: LoadLibraryOptions) => Promise<TextstringValue | null>;
|
|
7
7
|
interface SelectLanguageToChangeOptions {
|
|
8
8
|
textstringName: string;
|
|
9
9
|
}
|
package/lib/utils/textstring.js
CHANGED
|
@@ -3,7 +3,7 @@ export const loadLibrary = async _ref => {
|
|
|
3
3
|
language,
|
|
4
4
|
libraryName
|
|
5
5
|
} = _ref;
|
|
6
|
-
const response = await fetch(`https://webapi.tobit.com/
|
|
6
|
+
const response = await fetch(`https://webapi.tobit.com/TextstringService/v1.0/LangStrings/${libraryName}?language=${language}`);
|
|
7
7
|
if (response.status !== 200) {
|
|
8
8
|
return null;
|
|
9
9
|
}
|
|
@@ -1 +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"],"sources":["../../src/utils/textstring.ts"],"sourcesContent":["import type {
|
|
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"],"sources":["../../src/utils/textstring.ts"],"sourcesContent":["import type { TextstringValue } from '../components/textstring-provider/TextstringProvider';\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"],"mappings":"AAOA,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"}
|
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.468",
|
|
4
4
|
"description": "A set of beautiful React components for developing your own applications with chayns.",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"browserslist": [
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"typescript": "^5.3.3"
|
|
58
58
|
},
|
|
59
59
|
"dependencies": {
|
|
60
|
-
"@chayns-components/core": "^5.0.0-beta.
|
|
60
|
+
"@chayns-components/core": "^5.0.0-beta.468"
|
|
61
61
|
},
|
|
62
62
|
"peerDependencies": {
|
|
63
63
|
"chayns-api": ">=1.0.50",
|
|
@@ -69,5 +69,5 @@
|
|
|
69
69
|
"publishConfig": {
|
|
70
70
|
"access": "public"
|
|
71
71
|
},
|
|
72
|
-
"gitHead": "
|
|
72
|
+
"gitHead": "decd1b4f580c2401d79d1a580689f5e36aa96fcb"
|
|
73
73
|
}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { CSSProperties, FC, ReactHTML, ReactNode } from 'react';
|
|
2
|
-
import type { ITextstring, TextstringReplacement } from './types';
|
|
3
|
-
export type TextStringProps = {
|
|
4
|
-
/**
|
|
5
|
-
* The element that the text should be displayed in.
|
|
6
|
-
*/
|
|
7
|
-
children?: ReactNode;
|
|
8
|
-
/**
|
|
9
|
-
* The styles of the HTML element that the text should be displayed in.
|
|
10
|
-
*/
|
|
11
|
-
childrenStyles?: CSSProperties;
|
|
12
|
-
/**
|
|
13
|
-
* The tag of the HTML element that the text should be displayed in.
|
|
14
|
-
*/
|
|
15
|
-
childrenTagName?: keyof ReactHTML;
|
|
16
|
-
/**
|
|
17
|
-
* Whether the textstring is an HTML element and should be displayed as an element.
|
|
18
|
-
*/
|
|
19
|
-
isTextstringHTML?: boolean;
|
|
20
|
-
/**
|
|
21
|
-
* A part of the text that should be replaced.
|
|
22
|
-
*/
|
|
23
|
-
replacements?: TextstringReplacement;
|
|
24
|
-
/**
|
|
25
|
-
* The text that should be displayed.
|
|
26
|
-
*/
|
|
27
|
-
textString: ITextstring;
|
|
28
|
-
};
|
|
29
|
-
declare const TextString: FC<TextStringProps>;
|
|
30
|
-
export default TextString;
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import React, { createElement, useCallback, useMemo } from 'react';
|
|
2
|
-
import { StyledTextString, StyledTextStringElement } from './TextString.styles';
|
|
3
|
-
import { isTobitEmployee } from '@chayns-components/core';
|
|
4
|
-
import { selectLanguageToChange } from '../../utils/textstring';
|
|
5
|
-
import { useTextstringValue } from '../../hooks/useTextstringValue';
|
|
6
|
-
const TextString = _ref => {
|
|
7
|
-
let {
|
|
8
|
-
textString,
|
|
9
|
-
replacements,
|
|
10
|
-
isTextstringHTML,
|
|
11
|
-
childrenTagName,
|
|
12
|
-
children,
|
|
13
|
-
childrenStyles
|
|
14
|
-
} = _ref;
|
|
15
|
-
const text = useTextstringValue({
|
|
16
|
-
textString,
|
|
17
|
-
replacements
|
|
18
|
-
});
|
|
19
|
-
const childElement = useMemo(() => {
|
|
20
|
-
if (isTextstringHTML) {
|
|
21
|
-
return /*#__PURE__*/React.createElement(StyledTextStringElement, {
|
|
22
|
-
dangerouslySetInnerHTML: {
|
|
23
|
-
__html: text
|
|
24
|
-
}
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
let element = /*#__PURE__*/createElement('', childrenStyles ? {
|
|
28
|
-
style: childrenStyles
|
|
29
|
-
} : null, children);
|
|
30
|
-
if (!children) {
|
|
31
|
-
element = /*#__PURE__*/createElement(childrenTagName || 'span', childrenStyles ? {
|
|
32
|
-
style: childrenStyles
|
|
33
|
-
} : null, text);
|
|
34
|
-
}
|
|
35
|
-
return element;
|
|
36
|
-
}, [children, childrenStyles, childrenTagName, isTextstringHTML, text]);
|
|
37
|
-
const handleClick = useCallback(event => {
|
|
38
|
-
if (event.ctrlKey) {
|
|
39
|
-
void isTobitEmployee().then(inGroup => {
|
|
40
|
-
if (inGroup) {
|
|
41
|
-
selectLanguageToChange({
|
|
42
|
-
textstringName: textString.name
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
}, [textString.name]);
|
|
48
|
-
return useMemo(() => /*#__PURE__*/React.createElement(StyledTextString, {
|
|
49
|
-
onClick: handleClick
|
|
50
|
-
}, childElement), [childElement, handleClick]);
|
|
51
|
-
};
|
|
52
|
-
TextString.displayName = 'TextString';
|
|
53
|
-
export default TextString;
|
|
54
|
-
//# sourceMappingURL=TextString.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TextString.js","names":["React","createElement","useCallback","useMemo","StyledTextString","StyledTextStringElement","isTobitEmployee","selectLanguageToChange","useTextstringValue","TextString","_ref","textString","replacements","isTextstringHTML","childrenTagName","children","childrenStyles","text","childElement","dangerouslySetInnerHTML","__html","element","style","handleClick","event","ctrlKey","then","inGroup","textstringName","name","onClick","displayName"],"sources":["../../../src/components/textstring/TextString.tsx"],"sourcesContent":["import React, {\n createElement,\n CSSProperties,\n FC,\n MouseEventHandler,\n ReactHTML,\n ReactNode,\n useCallback,\n useMemo,\n} from 'react';\nimport { StyledTextString, StyledTextStringElement } from './TextString.styles';\nimport type { ITextstring, TextstringReplacement } from './types';\nimport { isTobitEmployee } from '@chayns-components/core';\nimport { selectLanguageToChange } from '../../utils/textstring';\nimport { useTextstringValue } from '../../hooks/useTextstringValue';\n\nexport type TextStringProps = {\n /**\n * The element that the text should be displayed in.\n */\n children?: ReactNode;\n /**\n * The styles of the HTML element that the text should be displayed in.\n */\n childrenStyles?: CSSProperties;\n /**\n * The tag of the HTML element that the text should be displayed in.\n */\n childrenTagName?: keyof ReactHTML;\n /**\n * Whether the textstring is an HTML element and should be displayed as an element.\n */\n isTextstringHTML?: boolean;\n /**\n * A part of the text that should be replaced.\n */\n replacements?: TextstringReplacement;\n /**\n * The text that should be displayed.\n */\n textString: ITextstring;\n};\n\nconst TextString: FC<TextStringProps> = ({\n textString,\n replacements,\n isTextstringHTML,\n childrenTagName,\n children,\n childrenStyles,\n}) => {\n const text = useTextstringValue({ textString, replacements });\n\n const childElement = useMemo(() => {\n if (isTextstringHTML) {\n return <StyledTextStringElement dangerouslySetInnerHTML={{ __html: text }} />;\n }\n\n let element = createElement(\n '',\n childrenStyles ? { style: childrenStyles } : null,\n children,\n );\n\n if (!children) {\n element = createElement(\n childrenTagName || 'span',\n childrenStyles ? { style: childrenStyles } : null,\n text,\n );\n }\n\n return element;\n }, [children, childrenStyles, childrenTagName, isTextstringHTML, text]);\n\n const handleClick: MouseEventHandler<HTMLDivElement> = useCallback(\n (event) => {\n if (event.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 return useMemo(\n () => <StyledTextString onClick={handleClick}>{childElement}</StyledTextString>,\n [childElement, handleClick],\n );\n};\n\nTextString.displayName = 'TextString';\n\nexport default TextString;\n"],"mappings":"AAAA,OAAOA,KAAK,IACRC,aAAa,EAMbC,WAAW,EACXC,OAAO,QACJ,OAAO;AACd,SAASC,gBAAgB,EAAEC,uBAAuB,QAAQ,qBAAqB;AAE/E,SAASC,eAAe,QAAQ,yBAAyB;AACzD,SAASC,sBAAsB,QAAQ,wBAAwB;AAC/D,SAASC,kBAAkB,QAAQ,gCAAgC;AA6BnE,MAAMC,UAA+B,GAAGC,IAAA,IAOlC;EAAA,IAPmC;IACrCC,UAAU;IACVC,YAAY;IACZC,gBAAgB;IAChBC,eAAe;IACfC,QAAQ;IACRC;EACJ,CAAC,GAAAN,IAAA;EACG,MAAMO,IAAI,GAAGT,kBAAkB,CAAC;IAAEG,UAAU;IAAEC;EAAa,CAAC,CAAC;EAE7D,MAAMM,YAAY,GAAGf,OAAO,CAAC,MAAM;IAC/B,IAAIU,gBAAgB,EAAE;MAClB,oBAAOb,KAAA,CAAAC,aAAA,CAACI,uBAAuB;QAACc,uBAAuB,EAAE;UAAEC,MAAM,EAAEH;QAAK;MAAE,CAAE,CAAC;IACjF;IAEA,IAAII,OAAO,gBAAGpB,aAAa,CACvB,EAAE,EACFe,cAAc,GAAG;MAAEM,KAAK,EAAEN;IAAe,CAAC,GAAG,IAAI,EACjDD,QACJ,CAAC;IAED,IAAI,CAACA,QAAQ,EAAE;MACXM,OAAO,gBAAGpB,aAAa,CACnBa,eAAe,IAAI,MAAM,EACzBE,cAAc,GAAG;QAAEM,KAAK,EAAEN;MAAe,CAAC,GAAG,IAAI,EACjDC,IACJ,CAAC;IACL;IAEA,OAAOI,OAAO;EAClB,CAAC,EAAE,CAACN,QAAQ,EAAEC,cAAc,EAAEF,eAAe,EAAED,gBAAgB,EAAEI,IAAI,CAAC,CAAC;EAEvE,MAAMM,WAA8C,GAAGrB,WAAW,CAC7DsB,KAAK,IAAK;IACP,IAAIA,KAAK,CAACC,OAAO,EAAE;MACf,KAAKnB,eAAe,CAAC,CAAC,CAACoB,IAAI,CAAEC,OAAO,IAAK;QACrC,IAAIA,OAAO,EAAE;UACTpB,sBAAsB,CAAC;YACnBqB,cAAc,EAAEjB,UAAU,CAACkB;UAC/B,CAAC,CAAC;QACN;MACJ,CAAC,CAAC;IACN;EACJ,CAAC,EACD,CAAClB,UAAU,CAACkB,IAAI,CACpB,CAAC;EAED,OAAO1B,OAAO,CACV,mBAAMH,KAAA,CAAAC,aAAA,CAACG,gBAAgB;IAAC0B,OAAO,EAAEP;EAAY,GAAEL,YAA+B,CAAC,EAC/E,CAACA,YAAY,EAAEK,WAAW,CAC9B,CAAC;AACL,CAAC;AAEDd,UAAU,CAACsB,WAAW,GAAG,YAAY;AAErC,eAAetB,UAAU"}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
|
-
export declare const StyledTextString: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
|
|
3
|
-
export declare const StyledTextStringElement: import("styled-components").IStyledComponent<"web", import("styled-components/dist/types").FastOmit<import("react").DetailedHTMLProps<import("react").HTMLAttributes<HTMLDivElement>, HTMLDivElement>, never>>;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TextString.styles.js","names":["styled","StyledTextString","div","StyledTextStringElement"],"sources":["../../../src/components/textstring/TextString.styles.ts"],"sourcesContent":["import styled from 'styled-components';\n\nexport const StyledTextString = styled.div``;\n\nexport const StyledTextStringElement = styled.div``;\n"],"mappings":"AAAA,OAAOA,MAAM,MAAM,mBAAmB;AAEtC,OAAO,MAAMC,gBAAgB,GAAGD,MAAM,CAACE,GAAI,EAAC;AAE5C,OAAO,MAAMC,uBAAuB,GAAGH,MAAM,CAACE,GAAI,EAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
import React, { createContext, useEffect, useState } from 'react';
|
|
2
|
-
import { loadLibrary } from '../../utils/textstring';
|
|
3
|
-
export const TextStringContext = /*#__PURE__*/createContext({});
|
|
4
|
-
const TextStringProvider = _ref => {
|
|
5
|
-
let {
|
|
6
|
-
children,
|
|
7
|
-
libraryName,
|
|
8
|
-
language
|
|
9
|
-
} = _ref;
|
|
10
|
-
const [textStrings, setTextStrings] = useState({});
|
|
11
|
-
useEffect(() => {
|
|
12
|
-
const loadData = async () => {
|
|
13
|
-
const textStringResult = await loadLibrary({
|
|
14
|
-
libraryName,
|
|
15
|
-
language
|
|
16
|
-
});
|
|
17
|
-
if (textStringResult) {
|
|
18
|
-
setTextStrings(textStringResult);
|
|
19
|
-
}
|
|
20
|
-
};
|
|
21
|
-
void loadData();
|
|
22
|
-
}, [language, libraryName]);
|
|
23
|
-
return /*#__PURE__*/React.createElement(TextStringContext.Provider, {
|
|
24
|
-
value: textStrings
|
|
25
|
-
}, children);
|
|
26
|
-
};
|
|
27
|
-
TextStringProvider.displayName = 'TextStringProvider';
|
|
28
|
-
export default TextStringProvider;
|
|
29
|
-
//# sourceMappingURL=TextStringProvider.js.map
|