@vnejs/uis.react.char 0.2.0 → 0.2.2

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/dist/Char.d.ts CHANGED
@@ -1,3 +1,5 @@
1
1
  import { type CharProps } from "./Char.types.js";
2
- export declare const Char: ({ token, marks, isVisible, isForce }?: CharProps) => import("react").JSX.Element;
2
+ declare const CharComponent: ({ token, marks, isVisible, isForce }?: CharProps) => import("react").JSX.Element;
3
+ export declare const Char: import("react").MemoExoticComponent<typeof CharComponent>;
4
+ export {};
3
5
  //# sourceMappingURL=Char.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Char.d.ts","sourceRoot":"","sources":["../src/Char.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAajD,eAAO,MAAM,IAAI,0CAAoE,SAAS,gCAoC7F,CAAC"}
1
+ {"version":3,"file":"Char.d.ts","sourceRoot":"","sources":["../src/Char.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAMjD,QAAA,MAAM,aAAa,0CAAoE,SAAS,gCAiC/F,CAAC;AAEF,eAAO,MAAM,IAAI,2DAAsB,CAAC"}
package/dist/Char.js CHANGED
@@ -1,34 +1,40 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
- import { useMemo } from "react";
2
+ import { memo } from "react";
3
3
  import { b } from "./Char.styles.js";
4
4
  const MARKS_PREFIXES = { COLOR: "color:", WEIGHT: "weight:", OPACITY: "opacity:", ANIMATION: "animation:", ZOOM: "zoom:" };
5
- const MARKS_PREFIXES_VALUES = Object.values(MARKS_PREFIXES);
6
- const reduceMark = (prefix) => (acc, mark) => {
7
- if (mark.startsWith(prefix))
8
- acc.push(mark.slice(prefix.length));
9
- return acc;
10
- };
11
- export const Char = ({ token = "", marks = [], isVisible = false, isForce = false } = {}) => {
12
- const marksZoom = useMemo(() => marks.reduce(reduceMark(MARKS_PREFIXES.ZOOM), []), [marks]);
13
- const marksColor = useMemo(() => marks.reduce(reduceMark(MARKS_PREFIXES.COLOR), []), [marks]);
14
- const marksWeight = useMemo(() => marks.reduce(reduceMark(MARKS_PREFIXES.WEIGHT), []), [marks]);
15
- const marksOpacity = useMemo(() => marks.reduce(reduceMark(MARKS_PREFIXES.OPACITY), []), [marks]);
16
- const marksAnimation = useMemo(() => marks.reduce(reduceMark(MARKS_PREFIXES.ANIMATION), []), [marks]);
17
- const style = useMemo(() => {
18
- const result = {};
19
- if (marksZoom.length)
20
- result.zoom = marksZoom[marksZoom.length - 1];
21
- if (marksColor.length)
22
- result.color = marksColor[marksColor.length - 1];
23
- if (marksWeight.length)
24
- result.fontWeight = marksWeight[marksWeight.length - 1];
25
- if (marksOpacity.length)
26
- result["--vne-char-visible-opacity"] = marksOpacity[marksOpacity.length - 1];
27
- if (marksAnimation.length)
28
- result.animation = marksAnimation[marksAnimation.length - 1];
29
- return result;
30
- }, [marksZoom, marksColor, marksWeight, marksOpacity, marksAnimation]);
31
- const otherMarks = useMemo(() => marks.reduce((acc, mark) => (MARKS_PREFIXES_VALUES.some((prefix) => mark.startsWith(prefix)) ? acc : { ...acc, [mark]: true }), {}), [marks]);
5
+ const CharComponent = ({ token = "", marks = [], isVisible = false, isForce = false } = {}) => {
6
+ const style = {};
7
+ const otherMarks = {};
8
+ let zoom;
9
+ let color;
10
+ let weight;
11
+ let opacity;
12
+ let animation;
13
+ for (const mark of marks) {
14
+ if (mark.startsWith(MARKS_PREFIXES.ZOOM))
15
+ zoom = mark.slice(MARKS_PREFIXES.ZOOM.length);
16
+ else if (mark.startsWith(MARKS_PREFIXES.COLOR))
17
+ color = mark.slice(MARKS_PREFIXES.COLOR.length);
18
+ else if (mark.startsWith(MARKS_PREFIXES.WEIGHT))
19
+ weight = mark.slice(MARKS_PREFIXES.WEIGHT.length);
20
+ else if (mark.startsWith(MARKS_PREFIXES.OPACITY))
21
+ opacity = mark.slice(MARKS_PREFIXES.OPACITY.length);
22
+ else if (mark.startsWith(MARKS_PREFIXES.ANIMATION))
23
+ animation = mark.slice(MARKS_PREFIXES.ANIMATION.length);
24
+ else
25
+ otherMarks[mark] = true;
26
+ }
27
+ if (zoom)
28
+ style.zoom = zoom;
29
+ if (color)
30
+ style.color = color;
31
+ if (weight)
32
+ style.fontWeight = weight;
33
+ if (opacity)
34
+ style["--vne-char-visible-opacity"] = opacity;
35
+ if (animation)
36
+ style.animation = animation;
32
37
  return (_jsx("div", { className: b({ isVisible, isForce, ...otherMarks }), style: style, children: token }));
33
38
  };
39
+ export const Char = memo(CharComponent);
34
40
  //# sourceMappingURL=Char.js.map
package/dist/Char.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Char.js","sourceRoot":"","sources":["../src/Char.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Char.js","sourceRoot":"","sources":["../src/Char.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,OAAO,CAAC;AAI7B,OAAO,EAAE,CAAC,EAAE,MAAM,kBAAkB,CAAC;AAErC,MAAM,cAAc,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;AAE3H,MAAM,aAAa,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,GAAG,EAAE,EAAE,SAAS,GAAG,KAAK,EAAE,OAAO,GAAG,KAAK,EAAE,GAAc,EAAE,EAAE,EAAE;IACvG,MAAM,KAAK,GAAoC,EAAE,CAAC;IAClD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAE/C,IAAI,IAAwB,CAAC;IAC7B,IAAI,KAAyB,CAAC;IAC9B,IAAI,MAA0B,CAAC;IAC/B,IAAI,OAA2B,CAAC;IAChC,IAAI,SAA6B,CAAC;IAElC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC;YAAE,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACnF,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,KAAK,CAAC;YAAE,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;aAC3F,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,MAAM,CAAC;YAAE,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aAC9F,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,OAAO,CAAC;YAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;aACjG,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,SAAS,CAAC;YAAE,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;YACvG,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED,IAAI,IAAI;QAAE,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;IAC5B,IAAI,KAAK;QAAE,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;IAC/B,IAAI,MAAM;QAAE,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;IACtC,IAAI,OAAO;QAAE,KAAK,CAAC,4BAA4B,CAAC,GAAG,OAAO,CAAC;IAC3D,IAAI,SAAS;QAAE,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAE3C,OAAO,CACL,cACE,SAAS,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,UAAU,EAAE,CAAC,EACnD,KAAK,EAAE,KAAK,YAEX,KAAK,GACF,CACP,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vnejs/uis.react.char",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "scripts": {
package/src/Char.tsx CHANGED
@@ -1,45 +1,35 @@
1
- import { useMemo } from "react";
1
+ import { memo } from "react";
2
2
 
3
3
  import { type CharProps } from "./Char.types.js";
4
4
 
5
5
  import { b } from "./Char.styles.js";
6
6
 
7
7
  const MARKS_PREFIXES = { COLOR: "color:", WEIGHT: "weight:", OPACITY: "opacity:", ANIMATION: "animation:", ZOOM: "zoom:" };
8
- const MARKS_PREFIXES_VALUES = Object.values(MARKS_PREFIXES);
9
8
 
10
- const reduceMark = (prefix: string) => (acc: string[], mark: string) => {
11
- if (mark.startsWith(prefix)) acc.push(mark.slice(prefix.length));
12
-
13
- return acc;
14
- };
15
-
16
- export const Char = ({ token = "", marks = [], isVisible = false, isForce = false }: CharProps = {}) => {
17
- const marksZoom = useMemo(() => marks.reduce(reduceMark(MARKS_PREFIXES.ZOOM), [] as string[]), [marks]);
18
- const marksColor = useMemo(() => marks.reduce(reduceMark(MARKS_PREFIXES.COLOR), [] as string[]), [marks]);
19
- const marksWeight = useMemo(() => marks.reduce(reduceMark(MARKS_PREFIXES.WEIGHT), [] as string[]), [marks]);
20
- const marksOpacity = useMemo(() => marks.reduce(reduceMark(MARKS_PREFIXES.OPACITY), [] as string[]), [marks]);
21
- const marksAnimation = useMemo(() => marks.reduce(reduceMark(MARKS_PREFIXES.ANIMATION), [] as string[]), [marks]);
22
-
23
- const style = useMemo(() => {
24
- const result: Record<string, string | number> = {};
25
-
26
- if (marksZoom.length) result.zoom = marksZoom[marksZoom.length - 1];
27
- if (marksColor.length) result.color = marksColor[marksColor.length - 1];
28
- if (marksWeight.length) result.fontWeight = marksWeight[marksWeight.length - 1];
29
- if (marksOpacity.length) result["--vne-char-visible-opacity"] = marksOpacity[marksOpacity.length - 1];
30
- if (marksAnimation.length) result.animation = marksAnimation[marksAnimation.length - 1];
31
-
32
- return result;
33
- }, [marksZoom, marksColor, marksWeight, marksOpacity, marksAnimation]);
34
-
35
- const otherMarks = useMemo(
36
- () =>
37
- marks.reduce<Record<string, boolean>>(
38
- (acc, mark) => (MARKS_PREFIXES_VALUES.some((prefix) => mark.startsWith(prefix)) ? acc : { ...acc, [mark]: true }),
39
- {},
40
- ),
41
- [marks],
42
- );
9
+ const CharComponent = ({ token = "", marks = [], isVisible = false, isForce = false }: CharProps = {}) => {
10
+ const style: Record<string, string | number> = {};
11
+ const otherMarks: Record<string, boolean> = {};
12
+
13
+ let zoom: string | undefined;
14
+ let color: string | undefined;
15
+ let weight: string | undefined;
16
+ let opacity: string | undefined;
17
+ let animation: string | undefined;
18
+
19
+ for (const mark of marks) {
20
+ if (mark.startsWith(MARKS_PREFIXES.ZOOM)) zoom = mark.slice(MARKS_PREFIXES.ZOOM.length);
21
+ else if (mark.startsWith(MARKS_PREFIXES.COLOR)) color = mark.slice(MARKS_PREFIXES.COLOR.length);
22
+ else if (mark.startsWith(MARKS_PREFIXES.WEIGHT)) weight = mark.slice(MARKS_PREFIXES.WEIGHT.length);
23
+ else if (mark.startsWith(MARKS_PREFIXES.OPACITY)) opacity = mark.slice(MARKS_PREFIXES.OPACITY.length);
24
+ else if (mark.startsWith(MARKS_PREFIXES.ANIMATION)) animation = mark.slice(MARKS_PREFIXES.ANIMATION.length);
25
+ else otherMarks[mark] = true;
26
+ }
27
+
28
+ if (zoom) style.zoom = zoom;
29
+ if (color) style.color = color;
30
+ if (weight) style.fontWeight = weight;
31
+ if (opacity) style["--vne-char-visible-opacity"] = opacity;
32
+ if (animation) style.animation = animation;
43
33
 
44
34
  return (
45
35
  <div
@@ -50,3 +40,5 @@ export const Char = ({ token = "", marks = [], isVisible = false, isForce = fals
50
40
  </div>
51
41
  );
52
42
  };
43
+
44
+ export const Char = memo(CharComponent);
package/tsconfig.json CHANGED
@@ -4,14 +4,6 @@
4
4
  "outDir": "dist",
5
5
  "rootDir": "src"
6
6
  },
7
- "include": [
8
- "src/**/*.ts",
9
- "src/**/*.tsx",
10
- "../../../globals.d.ts",
11
- ],
12
- "exclude": [
13
- "dist",
14
- "node_modules",
15
- "src/**/*.stories.tsx"
16
- ]
7
+ "include": ["src/**/*.ts", "src/**/*.tsx", "../../../globals.d.ts"],
8
+ "exclude": ["dist", "node_modules", "src/**/*.stories.tsx"]
17
9
  }