npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

avatar-human-body

v0.2.7

Published

Avatar human body component

Downloads

5

Readme

AVATAR HUMAN BODY

Avatar Web Component

installazione

Installare ultima versione del componente con il comando:

npm install avatar-human-body@latest --save

Dopo una corretta installazione viene copiato il file avatar.json nella cartella public/assets del progetto react, assicurarsi che il file esista.

importazione in react

Nel file principale index.js (o index.tsx) del progetto importare le definizioni del componente e inizilizzarlo

 //esempio basato sul progetto starter creato con create-react-app (cra)

import React from 'react'
import ReactDOM from 'react-dom'
import './index.css'
import App from './App'
import * as serviceWorker from './serviceWorker'
import { defineCustomElements as humanBody } from 'avatar-human-body/dist/loader' // <== aggiungere questo import

ReactDOM.render(<App/>, document.getElementById('root'));

serviceWorker.unregister();
humanBody(window) // <== eseguire questo metodo

Utilizzo del componente in react

ora è possibile importare il componente in tutto il progetto utilizzando il tag

	<avatar-component />

Quando il componente è stato caricato, viene aggiunto una proprietà all'oggeto globale window è quindi possibile modificare tutte le proprietà , eseguire i metodi e mettersi in ascolto degli eventi, direttamente utilizzando tale oggetto globale

//modificare proprietà
window.AVATAR.parts="testa,collo";

//eseguire metodi
window.AVATAR.toggleLoading(true);

//o direttamente senza scrivere window
AVATAR.toggleLoading(true);

AVATAR.resetCamera()

//intercettare eventi
AVATAR.addEventListener('ready', function(event){
 console.log("il componente è pronto")
})

AVATAR.addEventListener('partSelected', function(event){
 console.log("è stata cliccata la parte", event.detail)
})
//etc..

tuttavia in ottica react è possiible anche utilizzare le props per settare le proprietà e il concetto di Ref per invocare metodi o mettersi in ascolto degli eventi

// sono state riportate solo le porzioni di codice interessanti 

import React from 'react'
//.... altro codice..

function App(){

  //inizializzo un ref
    const AVATAR = React.useRef(null);

  
  //creo un metodo di callback per l'evento
  const onPartSelected = event => {
	 console.log("è stata cliccata la parte", event.detail)
	} 

  //nuovo metodo al posto del vecchio componentDidMount
	React.useEffect(() => {
    //appena il mio componente react è pronto, mi metto in ascolto degli eventi
    //IMPORTANTE nei React.ref la proprietà current contiene il componente html 
		AVATAR.current.addEventListener('partSelected', onPartSelected)
		AVATAR.current.addEventListener('ready', avatarReady)
		return () => {
      //metodo che viene invoca quando il mio componente viene distrutto
      AVATAR.current.removeEventListener('ready', avatarReady)
			AVATAR.current.removeEventListener('partSelected', onPartSelected)
		}
	}, [])
 
 //altro codice..
}

Proprietà del componente

| Attribute | Description | Type | Default | | ------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | --------------------------- | | loading | mostra/nasconde il loading | boolean | true | | model | il percorso del file avatar.json| any | './assets/avatar.json' | | part-color | il colore delle parti del corpo quando accese, accetta qualsiasi tipo di formato colore es: label-color="red" | label-color="#ff00ff" | label-color="rgba(255,255,255,.8)" | string | | | parts | la lista delle parti del corpo da accendere es: parts="collo,testa" | string | "" |

//esempi per impostare le proprietà iniziali
	<avatar-component  loading={false} parts="collo, testa"  part-color="blue" />


  // esmepio simile ma scritto wrapped per maggiore leggibilità
  <avatar-component 
 	model="./assets/avatar.json"
  loading={false} 
  parts="collo, testa"  
  part-color="blue" 
  />

Metodi

resetCamera() => Promise<void>

Resetta la camera allo stato iniziale

setParts(parts: string, customColor?: any) => Promise<any>

Imposta le parti del corpo visibili, e un colore opzionale per colorarle.

//esempi
AVATAR.setParts("collo");
AVATAR.setParts("collo, testa, addome", "red");
AVATAR.setParts("collo, addome", "#ff0055");

è possibile impostarle anche impostando la proprietà "parts"

toggleLoading(show?: boolean) => Promise<number | true>

Accende / spegne il loading

//esempi
AVATAR.toggleLoading(true);
AVATAR.toggleLoading(false);

Eventi

| Event | Description | Type | | --------------- | ----------- | ------------------ | | ready |Emesso quando il componente è completamente caricato e il loading sparisce | CustomEvent<any> | | partSelected | Evento emesso ogni volta che viene cliccata una label di una parte del corpo, restituisce un oggetto evento che ha nella proprietà "detail" il nome della parte cliccata | CustomEvent<string> |

per mettersi in ascolto degli eventi utilizzare il classico addEventListener e nella funzione di callback intercettare l'evento

//esempi
 AVATAR.addEventListener('partSelected', function(event){
  console.log("è stata cliccata la parte", event.detail)
})