New Research: Supply Chain Attack on Axios Pulls Malicious Dependency from npm.Details
Socket
Book a DemoSign in
Socket

virtual-dom-library

Package Overview
Dependencies
Maintainers
1
Versions
1
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

virtual-dom-library

A virtual DOM library

latest
npmnpm
Version
1.0.0
Version published
Weekly downloads
2
-33.33%
Maintainers
1
Weekly downloads
 
Created
Source

A virtual DOM library.

This library uses webpack. I added my webpack config to the project. You can learn more here.

Installation

npm install virtual-dom-library

Example

const currentVNode = h(
  'div',
  {
    classes: ['some-class'],

    events: {
      click: (event: Event): void => console.log('click'),
      mousedown: (event: Event): void => console.log('mouse down'),
    },

    simpleAttrs: { 'data-type': 'div' },

    styles: {
      border: '1px solid red',
      borderRadius: '5px',
      margin: '20px',
      padding: '15px',
    },
  },
  [
    'Some-Text-Node',
    h('span', null, 'Some child for span'),
    'Some new text node',
    h('hr', null, null),
  ],
);

const newVNode = h(
  'div',
  {
    classes: ['new-class'],
    events: { dblclick: (event: Event): void => console.log('dblclick') },
    simpleAttrs: { 'data-type': 'div', active: 'false' },
  },
  'New some child.',
);
mount(currentVNode, document.querySelector('#app') as HTMLElement);
patch(currentVNode, newVNode);

Api

h - This function creates a virtual node than can then be inserted into a real dom through the mount function.

  • @param {TVNodeTagName} tag - Html element name.
  • @param {(IHProps|null)} props - Props for html element.
  • @param {(THChildren|null)} children - Children for the html element.
  • @returns {IVNode} A virtual node.
const virtualNode = h(
  'div',
  {
    classes: ['some-class'],

    events: {
      click: (event: Event): void => console.log('click'),
      mousedown: (event: Event): void => console.log('mouse down'),
    },

    simpleAttrs: { 'data-type': 'div' },

    styles: {
      border: '1px solid red',
      borderRadius: '5px',
      margin: '20px',
      padding: '15px',
    },
  },
  [
    'Some-Text-Node',
    h('span', null, 'Some child for span'),
    'Some new text node',
    h('hr', null, null),
  ],
);

mount - This function takes a virtual node and turns it into a real dom node and then inserts it into the html element.

  • @param {IVNode} vNode - you can create virtual node with h function.
  • @param { HTMLElement } container - Parent for the new html element.
  • @returns {void} This function returns nothing.
const virtualNode = h(
  'div',
  {
    classes: ['some-class'],

    events: {
      click: (event: Event): void => console.log('click'),
      mousedown: (event: Event): void => console.log('mouse down'),
    },

    simpleAttrs: { 'data-type': 'div' },

    styles: {
      border: '1px solid red',
      borderRadius: '5px',
      margin: '20px',
      padding: '15px',
    },
  },
  [
    'Some-Text-Node',
    h('span', null, 'Some child for span'),
    'Some new text node',
    h('hr', null, null),
  ],
);

mount(virtualNode, document.querySelector('#app') as HTMLElement);

patch - This function checks the difference between the new virtual node and the current.

  • @param { IVNode } currentVNode - A virtual node that was added to the real DOM using
  • the mount function.
  • @param { IVNode } newVNode - New virtual node to change the previous one.
  • @throws Throws an error if the current virtual node has not been added to
  • the current DOM using the mount function.
  • @returns { void } This function returns nothing.
const currentVNode = h(
  'div',
  {
    classes: ['some-class'],

    events: {
      click: (event: Event): void => console.log('click'),
      mousedown: (event: Event): void => console.log('mouse down'),
    },

    simpleAttrs: { 'data-type': 'div' },

    styles: {
      border: '1px solid red',
      borderRadius: '5px',
      margin: '20px',
      padding: '15px',
    },
  },
  [
    'Some-Text-Node',
    h('span', null, 'Some child for span'),
    'Some new text node',
    h('hr', null, null),
  ],
);

const newVNode = h(
  'div',
  {
    classes: ['new-class'],
    events: { dblclick: (event: Event): void => console.log('dblclick') },

    simpleAttrs: { 'data-type': 'div', active: 'false' },
  },

  'updated child',
);

mount(currentVNode, document.querySelector('#app') as HTMLElement);

patch(currentVNode, newVNode);

createHtmlElementFromVNode - This function creates an html element from a virtual node.

  • @param {IVNode} vNode - you can create virtual node with h function.
  • @returns {HTMLElement}
const currentVNode = h(
  'div',
  {
    classes: ['some-class'],

    events: {
      click: (event: Event): void => console.log('click'),
      mousedown: (event: Event): void => console.log('mouse down'),
    },

    simpleAttrs: { 'data-type': 'div' },

    styles: {
      border: '1px solid red',
      borderRadius: '5px',
      margin: '20px',
      padding: '15px',
    },
  },
  [
    'Some-Text-Node',
    h('span', null, 'Some child for span'),
    'Some new text node',
    h('hr', null, null),
  ],
);

const element = createHtmlElementFromVNode();

console.log('Html element', element);

Keywords

virtual

FAQs

Package last updated on 24 Dec 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts