{"version":3,"file":"index.cjs","names":["SkinViewer"],"sources":["../src/index.tsx"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { SkinViewer } from \"skinview3d\";\nimport type { ReactSkinview3dOptions } from \"./types.js\";\n\n/**\n * React component that renders a 3D Minecraft skin viewer\n * @param {ReactSkinview3dOptions} props - The component props\n * @returns {React.ReactElement} A canvas element with the 3D skin viewer\n */\nexport const ReactSkinview3d = ({\n  className,\n  width,\n  height,\n  skinUrl,\n  capeUrl,\n  onReady,\n  options,\n}: ReactSkinview3dOptions): React.ReactElement => {\n  const canvasRef = useRef<HTMLCanvasElement>(null);\n  const skinviewRef = useRef<SkinViewer>(null);\n\n  useEffect(() => {\n    // skip if the viewer instance has already been created\n    if (skinviewRef.current) {\n      return;\n    }\n\n    const viewer = new SkinViewer({\n      canvas: canvasRef.current,\n      width: Number(width),\n      height: Number(height),\n      ...options,\n    });\n\n    // handle cape/skin load initially\n    skinUrl && viewer.loadSkin(skinUrl);\n    capeUrl && viewer.loadCape(capeUrl);\n\n    skinviewRef.current = viewer;\n\n    // call onReady with the viewer instance\n    if (onReady) {\n      onReady({ viewer: skinviewRef.current, canvasRef: canvasRef.current });\n    }\n  }, [width, height, skinUrl, capeUrl, onReady, options]);\n\n  // skin url changes\n  useEffect(() => {\n    skinUrl\n      ? skinviewRef.current.loadSkin(skinUrl)\n      : skinviewRef.current.resetSkin();\n  }, [skinUrl]);\n\n  // cape url changes\n  useEffect(() => {\n    capeUrl\n      ? skinviewRef.current.loadCape(capeUrl)\n      : skinviewRef.current.resetCape();\n  }, [capeUrl]);\n\n  // size changes\n  useEffect(() => {\n    skinviewRef.current.setSize(Number(width), Number(height));\n  }, [width, height]);\n\n  return <canvas className={className} ref={canvasRef} />;\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AASA,MAAa,mBAAmB,EAC9B,WACA,OACA,QACA,SACA,SACA,SACA,cACgD;CAChD,MAAM,8BAAsC;CAC5C,MAAM,gCAAiC;AAEvC,4BAAgB;AAEd,MAAI,YAAY,QACd;EAGF,MAAM,SAAS,IAAIA,sBAAW;GAC5B,QAAQ,UAAU;GAClB,OAAO,OAAO;GACd,QAAQ,OAAO;GACf,GAAG;;AAIL,aAAW,OAAO,SAAS;AAC3B,aAAW,OAAO,SAAS;AAE3B,cAAY,UAAU;AAGtB,MAAI,QACF,SAAQ;GAAE,QAAQ,YAAY;GAAS,WAAW,UAAU;;IAE7D;EAAC;EAAO;EAAQ;EAAS;EAAS;EAAS;;AAG9C,4BAAgB;AACd,YACI,YAAY,QAAQ,SAAS,WAC7B,YAAY,QAAQ;IACvB,CAAC;AAGJ,4BAAgB;AACd,YACI,YAAY,QAAQ,SAAS,WAC7B,YAAY,QAAQ;IACvB,CAAC;AAGJ,4BAAgB;AACd,cAAY,QAAQ,QAAQ,OAAO,QAAQ,OAAO;IACjD,CAAC,OAAO;AAEX,QAAO,2CAAC;EAAkB;EAAW,KAAK"}