New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

async-vdom-builder

Package Overview
Dependencies
Maintainers
2
Versions
5
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

async-vdom-builder - npm Package Compare versions

Comparing version 1.0.2 to 1.1.0

3

package.json
{
"name": "async-vdom-builder",
"version": "1.0.2",
"version": "1.1.0",
"description": "",

@@ -20,2 +20,3 @@ "main": "src/index.js",

"dependencies": {
"marko-dom": "^1.0.0",
"marko-vdom": "^0.4.0"

@@ -22,0 +23,0 @@ },

var EventEmitter = require('events').EventEmitter;
var dom = require('marko-dom');
var markoVdom = require('marko-vdom');

@@ -10,3 +10,19 @@ var createElement = markoVdom.createElement;

var specialHtmlRegexp = /[&<]/;
var defaultDocument = typeof document != 'undefined' && document;
function checkAddedToDOM(asyncStream, method) {
if (!asyncStream.data._added) {
throw new Error('Cannot call ' + method + '() until after HTML fragment is added to DOM.');
}
}
function getWidgetDefs(out) {
var widgetDefs = out.data.widgets;
if (!widgetDefs || widgetDefs.length === 0) {
throw new Error('No widget rendered');
}
return widgetDefs;
}
function State(tree) {

@@ -33,2 +49,3 @@ this.remaining = 1;

this.data = {};
this._state = state;

@@ -160,2 +177,4 @@ this._parent = parentNode;

}
return this;
},

@@ -177,3 +196,10 @@

var documentFragment = this._parent.appendDocumentFragment();
return new AsyncVDOMBuilder(this.global, documentFragment, state);
var asyncOut = new AsyncVDOMBuilder(this.global, documentFragment, state);
state.events.emit('beginAsync', {
out: asyncOut,
parentOut: this
});
return asyncOut;
},

@@ -275,3 +301,115 @@

// BEGIN DOM METHODS
getWidget: function() {
checkAddedToDOM(this, 'getWidget');
var rerenderWidget = this.global.__rerenderWidget;
if (rerenderWidget) {
return rerenderWidget;
}
return getWidgetDefs(this)[0].widget;
},
getWidgets: function(selector) {
checkAddedToDOM(this, 'getWidgets');
var widgetDefs = getWidgetDefs(this);
var widgets;
var i;
if (selector) {
// use the selector to find the widgets that the caller wants
widgets = [];
for (i = 0; i < widgetDefs.length; i++) {
var widget = widgetDefs[i].widget;
if (selector(widget)) {
widgets.push(widget);
}
}
} else {
// return all widgets
widgets = new Array(widgetDefs.length);
for (i = 0; i < widgetDefs.length; i++) {
widgets[i] = widgetDefs[i].widget;
}
}
return widgets;
},
afterInsert: function(node) {
var data = this.data;
data._added = true;
var widgetsContext = this.global.widgets;
var widgetDefs = widgetsContext ? widgetsContext.widgets : null;
data.widgets = widgetDefs;
dom.emit('renderedToDOM', {
node: node,
out: this,
document: node.ownerDocument
}); // NOTE: This will trigger widgets to be initialized if there were any
return this;
},
appendTo: function(referenceEl) {
var newNode = this.getNode(referenceEl.ownerDocument);
dom.appendTo(newNode, referenceEl);
return this.afterInsert(newNode);
},
replace: function(referenceEl) {
var newNode = this.getNode(referenceEl.ownerDocument);
dom.replace(newNode, referenceEl);
return this.afterInsert(newNode);
},
replaceChildrenOf: function(referenceEl) {
var newNode = this.getNode(referenceEl.ownerDocument);
dom.replaceChildrenOf(newNode, referenceEl);
return this.afterInsert(newNode);
},
insertBefore: function(referenceEl) {
var newNode = this.getNode(referenceEl.ownerDocument);
dom.insertBefore(newNode, referenceEl);
return this.afterInsert(newNode);
},
insertAfter: function(referenceEl) {
var newNode = this.getNode(referenceEl.ownerDocument);
dom.insertAfter(newNode, referenceEl);
return this.afterInsert(newNode);
},
prependTo: function(referenceEl) {
var newNode = this.getNode(referenceEl.ownerDocument);
dom.prependTo(newNode, referenceEl);
return this.afterInsert(newNode);
},
getNode: function(doc) {
var node = this._node;
if (!node) {
var vdomTree = this.getOutput();
if (!doc) {
doc = this.document || defaultDocument;
}
node = vdomTree.actualize(doc);
if (node.nodeType === 11 /* DocumentFragment */) {
// If the DocumentFragment only has one child
// then just return that first child as the node
var childNodes = node.childNodes;
if (childNodes.length === 1) {
node = childNodes[0];
}
}
this._node = node;
}
return node;
},
// END DOM METHODS
document: typeof document !== 'undefined' && document,

@@ -278,0 +416,0 @@

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc