@xylabs/react-identicon 7.1.8 → 7.1.10

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.
@@ -65,9 +65,9 @@ var Identicon = ({
65
65
  value,
66
66
  ...props
67
67
  }) => {
68
- const canvas = useRef(null);
68
+ const canvasRef = useRef(null);
69
69
  useEffect(() => {
70
- updateCanvas(canvas, {
70
+ updateCanvas(canvasRef, {
71
71
  bg,
72
72
  className,
73
73
  count,
@@ -82,7 +82,7 @@ var Identicon = ({
82
82
  "canvas",
83
83
  {
84
84
  className,
85
- ref: canvas,
85
+ ref: canvasRef,
86
86
  style: { height: size, width: size }
87
87
  }
88
88
  ) : null });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/Identicon.tsx"],"sourcesContent":["import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport md5 from 'md5'\nimport React, { useEffect, useRef } from 'react'\n\nconst range = (n: number, in_min: number, in_max: number, out_min: number, out_max: number) => {\n return ((n - in_min) * (out_max - out_min)) / (in_max - in_min) + out_min\n}\n\nexport interface IdenticonProps extends FlexBoxProps {\n bg?: string\n className?: string\n count?: number\n fg?: string\n iconPadding?: number\n palette?: string[]\n size?: number\n value?: string\n}\n\nconst updateCanvas = (canvas: React.RefObject<HTMLCanvasElement | null>, props: IdenticonProps) => {\n const {\n value = '', size = 400, bg = 'transparent', count = 5, palette, iconPadding = 0,\n } = props\n let { fg } = props\n const hash = md5(value)\n const block = Math.floor(size / count)\n const hashColor = hash.slice(0, 6)\n\n const current = canvas?.current\n\n if (!current) {\n return\n }\n\n if (palette && palette.length > 0) {\n const index = Math.floor(range(Number.parseInt(hash.slice(-3), 16), 0, 4095, 0, palette.length))\n fg = palette[index]\n }\n\n current.width = block * count + iconPadding\n current.height = block * count + iconPadding\n const arr = [...hash].map((el) => {\n const parsedEl = Number.parseInt(el, 16)\n return parsedEl < 8 ? 0 : 1\n })\n\n const map = []\n\n map[0] = map[4] = arr.slice(0, 5)\n map[1] = map[3] = arr.slice(5, 10)\n map[2] = arr.slice(10, 15)\n\n const ctx = current.getContext('2d')\n if (ctx) {\n ctx.imageSmoothingEnabled = false\n ctx.clearRect(0, 0, current.width, current.height)\n\n for (const [i, row] of map.entries()) {\n for (const [j, el] of row.entries()) {\n if (el) {\n ctx.fillStyle = fg ?? '#' + hashColor\n ctx.fillRect(block * i + iconPadding, block * j + iconPadding, block - iconPadding, block - iconPadding)\n } else {\n ctx.fillStyle = bg\n ctx.fillRect(block * i + iconPadding, block * j + iconPadding, block - iconPadding, block - iconPadding)\n }\n }\n }\n }\n}\n\nexport const Identicon: React.FC<IdenticonProps> = ({\n size = 400,\n className = 'identicon',\n bg,\n count,\n fg,\n iconPadding,\n palette,\n value,\n ...props\n}) => {\n const canvas = useRef<HTMLCanvasElement>(null)\n\n useEffect(() => {\n updateCanvas(canvas, {\n bg, className, count, fg, iconPadding, palette, size, value,\n })\n })\n\n return (\n <FlexRow {...props}>\n {value\n ? (\n <canvas\n className={className}\n ref={canvas}\n style={{ height: size, width: size }}\n />\n )\n : null}\n </FlexRow>\n )\n}\n"],"mappings":";AACA,SAAS,eAAe;AACxB,OAAO,SAAS;AAChB,SAAgB,WAAW,cAAc;AA4F7B;AA1FZ,IAAM,QAAQ,CAAC,GAAW,QAAgB,QAAgB,SAAiB,YAAoB;AAC7F,UAAS,IAAI,WAAW,UAAU,YAAa,SAAS,UAAU;AACpE;AAaA,IAAM,eAAe,CAAC,QAAmD,UAA0B;AACjG,QAAM;AAAA,IACJ,QAAQ;AAAA,IAAI,OAAO;AAAA,IAAK,KAAK;AAAA,IAAe,QAAQ;AAAA,IAAG;AAAA,IAAS,cAAc;AAAA,EAChF,IAAI;AACJ,MAAI,EAAE,GAAG,IAAI;AACb,QAAM,OAAO,IAAI,KAAK;AACtB,QAAM,QAAQ,KAAK,MAAM,OAAO,KAAK;AACrC,QAAM,YAAY,KAAK,MAAM,GAAG,CAAC;AAEjC,QAAM,UAAU,QAAQ;AAExB,MAAI,CAAC,SAAS;AACZ;AAAA,EACF;AAEA,MAAI,WAAW,QAAQ,SAAS,GAAG;AACjC,UAAM,QAAQ,KAAK,MAAM,MAAM,OAAO,SAAS,KAAK,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,QAAQ,MAAM,CAAC;AAC/F,SAAK,QAAQ,KAAK;AAAA,EACpB;AAEA,UAAQ,QAAQ,QAAQ,QAAQ;AAChC,UAAQ,SAAS,QAAQ,QAAQ;AACjC,QAAM,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,OAAO;AAChC,UAAM,WAAW,OAAO,SAAS,IAAI,EAAE;AACvC,WAAO,WAAW,IAAI,IAAI;AAAA,EAC5B,CAAC;AAED,QAAM,MAAM,CAAC;AAEb,MAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC;AAChC,MAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,GAAG,EAAE;AACjC,MAAI,CAAC,IAAI,IAAI,MAAM,IAAI,EAAE;AAEzB,QAAM,MAAM,QAAQ,WAAW,IAAI;AACnC,MAAI,KAAK;AACP,QAAI,wBAAwB;AAC5B,QAAI,UAAU,GAAG,GAAG,QAAQ,OAAO,QAAQ,MAAM;AAEjD,eAAW,CAAC,GAAG,GAAG,KAAK,IAAI,QAAQ,GAAG;AACpC,iBAAW,CAAC,GAAG,EAAE,KAAK,IAAI,QAAQ,GAAG;AACnC,YAAI,IAAI;AACN,cAAI,YAAY,MAAM,MAAM;AAC5B,cAAI,SAAS,QAAQ,IAAI,aAAa,QAAQ,IAAI,aAAa,QAAQ,aAAa,QAAQ,WAAW;AAAA,QACzG,OAAO;AACL,cAAI,YAAY;AAChB,cAAI,SAAS,QAAQ,IAAI,aAAa,QAAQ,IAAI,aAAa,QAAQ,aAAa,QAAQ,WAAW;AAAA,QACzG;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,YAAsC,CAAC;AAAA,EAClD,OAAO;AAAA,EACP,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,SAAS,OAA0B,IAAI;AAE7C,YAAU,MAAM;AACd,iBAAa,QAAQ;AAAA,MACnB;AAAA,MAAI;AAAA,MAAW;AAAA,MAAO;AAAA,MAAI;AAAA,MAAa;AAAA,MAAS;AAAA,MAAM;AAAA,IACxD,CAAC;AAAA,EACH,CAAC;AAED,SACE,oBAAC,WAAS,GAAG,OACV,kBAEK;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,KAAK;AAAA,MACL,OAAO,EAAE,QAAQ,MAAM,OAAO,KAAK;AAAA;AAAA,EACrC,IAEF,MACN;AAEJ;","names":[]}
1
+ {"version":3,"sources":["../../src/components/Identicon.tsx"],"sourcesContent":["import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport md5 from 'md5'\nimport React, { useEffect, useRef } from 'react'\n\nconst range = (n: number, in_min: number, in_max: number, out_min: number, out_max: number) => {\n return ((n - in_min) * (out_max - out_min)) / (in_max - in_min) + out_min\n}\n\nexport interface IdenticonProps extends FlexBoxProps {\n bg?: string\n className?: string\n count?: number\n fg?: string\n iconPadding?: number\n palette?: string[]\n size?: number\n value?: string\n}\n\nconst updateCanvas = (canvas: React.RefObject<HTMLCanvasElement | null>, props: IdenticonProps) => {\n const {\n value = '', size = 400, bg = 'transparent', count = 5, palette, iconPadding = 0,\n } = props\n let { fg } = props\n const hash = md5(value)\n const block = Math.floor(size / count)\n const hashColor = hash.slice(0, 6)\n\n const current = canvas?.current\n\n if (!current) {\n return\n }\n\n if (palette && palette.length > 0) {\n const index = Math.floor(range(Number.parseInt(hash.slice(-3), 16), 0, 4095, 0, palette.length))\n fg = palette[index]\n }\n\n current.width = block * count + iconPadding\n current.height = block * count + iconPadding\n const arr = [...hash].map((el) => {\n const parsedEl = Number.parseInt(el, 16)\n return parsedEl < 8 ? 0 : 1\n })\n\n const map = []\n\n map[0] = map[4] = arr.slice(0, 5)\n map[1] = map[3] = arr.slice(5, 10)\n map[2] = arr.slice(10, 15)\n\n const ctx = current.getContext('2d')\n if (ctx) {\n ctx.imageSmoothingEnabled = false\n ctx.clearRect(0, 0, current.width, current.height)\n\n for (const [i, row] of map.entries()) {\n for (const [j, el] of row.entries()) {\n if (el) {\n ctx.fillStyle = fg ?? '#' + hashColor\n ctx.fillRect(block * i + iconPadding, block * j + iconPadding, block - iconPadding, block - iconPadding)\n } else {\n ctx.fillStyle = bg\n ctx.fillRect(block * i + iconPadding, block * j + iconPadding, block - iconPadding, block - iconPadding)\n }\n }\n }\n }\n}\n\nexport const Identicon: React.FC<IdenticonProps> = ({\n size = 400,\n className = 'identicon',\n bg,\n count,\n fg,\n iconPadding,\n palette,\n value,\n ...props\n}) => {\n const canvasRef = useRef<HTMLCanvasElement>(null)\n\n useEffect(() => {\n updateCanvas(canvasRef, {\n bg, className, count, fg, iconPadding, palette, size, value,\n })\n })\n\n return (\n <FlexRow {...props}>\n {value\n ? (\n <canvas\n className={className}\n ref={canvasRef}\n style={{ height: size, width: size }}\n />\n )\n : null}\n </FlexRow>\n )\n}\n"],"mappings":";AACA,SAAS,eAAe;AACxB,OAAO,SAAS;AAChB,SAAgB,WAAW,cAAc;AA4F7B;AA1FZ,IAAM,QAAQ,CAAC,GAAW,QAAgB,QAAgB,SAAiB,YAAoB;AAC7F,UAAS,IAAI,WAAW,UAAU,YAAa,SAAS,UAAU;AACpE;AAaA,IAAM,eAAe,CAAC,QAAmD,UAA0B;AACjG,QAAM;AAAA,IACJ,QAAQ;AAAA,IAAI,OAAO;AAAA,IAAK,KAAK;AAAA,IAAe,QAAQ;AAAA,IAAG;AAAA,IAAS,cAAc;AAAA,EAChF,IAAI;AACJ,MAAI,EAAE,GAAG,IAAI;AACb,QAAM,OAAO,IAAI,KAAK;AACtB,QAAM,QAAQ,KAAK,MAAM,OAAO,KAAK;AACrC,QAAM,YAAY,KAAK,MAAM,GAAG,CAAC;AAEjC,QAAM,UAAU,QAAQ;AAExB,MAAI,CAAC,SAAS;AACZ;AAAA,EACF;AAEA,MAAI,WAAW,QAAQ,SAAS,GAAG;AACjC,UAAM,QAAQ,KAAK,MAAM,MAAM,OAAO,SAAS,KAAK,MAAM,EAAE,GAAG,EAAE,GAAG,GAAG,MAAM,GAAG,QAAQ,MAAM,CAAC;AAC/F,SAAK,QAAQ,KAAK;AAAA,EACpB;AAEA,UAAQ,QAAQ,QAAQ,QAAQ;AAChC,UAAQ,SAAS,QAAQ,QAAQ;AACjC,QAAM,MAAM,CAAC,GAAG,IAAI,EAAE,IAAI,CAAC,OAAO;AAChC,UAAM,WAAW,OAAO,SAAS,IAAI,EAAE;AACvC,WAAO,WAAW,IAAI,IAAI;AAAA,EAC5B,CAAC;AAED,QAAM,MAAM,CAAC;AAEb,MAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,GAAG,CAAC;AAChC,MAAI,CAAC,IAAI,IAAI,CAAC,IAAI,IAAI,MAAM,GAAG,EAAE;AACjC,MAAI,CAAC,IAAI,IAAI,MAAM,IAAI,EAAE;AAEzB,QAAM,MAAM,QAAQ,WAAW,IAAI;AACnC,MAAI,KAAK;AACP,QAAI,wBAAwB;AAC5B,QAAI,UAAU,GAAG,GAAG,QAAQ,OAAO,QAAQ,MAAM;AAEjD,eAAW,CAAC,GAAG,GAAG,KAAK,IAAI,QAAQ,GAAG;AACpC,iBAAW,CAAC,GAAG,EAAE,KAAK,IAAI,QAAQ,GAAG;AACnC,YAAI,IAAI;AACN,cAAI,YAAY,MAAM,MAAM;AAC5B,cAAI,SAAS,QAAQ,IAAI,aAAa,QAAQ,IAAI,aAAa,QAAQ,aAAa,QAAQ,WAAW;AAAA,QACzG,OAAO;AACL,cAAI,YAAY;AAChB,cAAI,SAAS,QAAQ,IAAI,aAAa,QAAQ,IAAI,aAAa,QAAQ,aAAa,QAAQ,WAAW;AAAA,QACzG;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;AAEO,IAAM,YAAsC,CAAC;AAAA,EAClD,OAAO;AAAA,EACP,YAAY;AAAA,EACZ;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,MAAM;AACJ,QAAM,YAAY,OAA0B,IAAI;AAEhD,YAAU,MAAM;AACd,iBAAa,WAAW;AAAA,MACtB;AAAA,MAAI;AAAA,MAAW;AAAA,MAAO;AAAA,MAAI;AAAA,MAAa;AAAA,MAAS;AAAA,MAAM;AAAA,IACxD,CAAC;AAAA,EACH,CAAC;AAED,SACE,oBAAC,WAAS,GAAG,OACV,kBAEK;AAAA,IAAC;AAAA;AAAA,MACC;AAAA,MACA,KAAK;AAAA,MACL,OAAO,EAAE,QAAQ,MAAM,OAAO,KAAK;AAAA;AAAA,EACrC,IAEF,MACN;AAEJ;","names":[]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xylabs/react-identicon",
3
- "version": "7.1.8",
3
+ "version": "7.1.10",
4
4
  "description": "Common React library for all XY Labs projects that use React",
5
5
  "keywords": [
6
6
  "utility",
@@ -41,27 +41,27 @@
41
41
  "packages/*"
42
42
  ],
43
43
  "dependencies": {
44
- "@xylabs/react-flexbox": "~7.1.8",
44
+ "@xylabs/react-flexbox": "~7.1.10",
45
45
  "md5": "~2.3.0"
46
46
  },
47
47
  "devDependencies": {
48
- "@mui/material": "~7.3.4",
48
+ "@mui/material": "~7.3.7",
49
49
  "@types/md5": "~2.3.6",
50
- "@types/react": "~19.2.2",
51
- "@xylabs/ts-scripts-yarn3": "~7.1.8",
52
- "@xylabs/tsconfig": "~7.1.8",
53
- "@xylabs/tsconfig-dom": "~7.1.8",
54
- "@xylabs/tsconfig-react": "~7.1.8",
55
- "react": "~19.2.0",
56
- "react-dom": "~19.2.0",
57
- "typescript": "~5.9.3"
50
+ "@types/react": "^19.2.10",
51
+ "@xylabs/ts-scripts-yarn3": "~7.3.2",
52
+ "@xylabs/tsconfig": "~7.3.2",
53
+ "@xylabs/tsconfig-dom": "~7.3.2",
54
+ "@xylabs/tsconfig-react": "~7.3.2",
55
+ "react": "^19.2.4",
56
+ "react-dom": "^19.2.4",
57
+ "typescript": "^5.9.3"
58
58
  },
59
59
  "peerDependencies": {
60
60
  "@mui/material": ">=6 <8",
61
- "react": "~19",
62
- "react-dom": "~19"
61
+ "react": "^19",
62
+ "react-dom": "^19"
63
63
  },
64
64
  "publishConfig": {
65
65
  "access": "public"
66
66
  }
67
- }
67
+ }
@@ -81,10 +81,10 @@ export const Identicon: React.FC<IdenticonProps> = ({
81
81
  value,
82
82
  ...props
83
83
  }) => {
84
- const canvas = useRef<HTMLCanvasElement>(null)
84
+ const canvasRef = useRef<HTMLCanvasElement>(null)
85
85
 
86
86
  useEffect(() => {
87
- updateCanvas(canvas, {
87
+ updateCanvas(canvasRef, {
88
88
  bg, className, count, fg, iconPadding, palette, size, value,
89
89
  })
90
90
  })
@@ -95,7 +95,7 @@ export const Identicon: React.FC<IdenticonProps> = ({
95
95
  ? (
96
96
  <canvas
97
97
  className={className}
98
- ref={canvas}
98
+ ref={canvasRef}
99
99
  style={{ height: size, width: size }}
100
100
  />
101
101
  )