JSFiddle - React, Tailwind, and code Playground
by Ryan Duffy
JavaScript
enyo.kind({
name: "enyo.ViewState",
kind: "Component",
published: {
path: "",
},
events: {
onSaveState: "",
onRestoreState: ""
},
statics: {
tree: {
paths: []
},
split: function(path) {
return path.replace(/\/*(.*?)\/*$/, "$1").split("/");
}, getChildNode:function(node, name) {
for(var i=0;i<node.paths.length;i++) {
if(node.paths[i].name === name) {
return node.paths[i];
}
}
},
findNode: function(path, create) {
var paths = enyo.isArray(path) ? path : this.split(path),
node = this.tree;
for (var i = 0; i < paths.length; i++) {
var p = paths[i];
if (!p) continue;
var found = false;
for (var j = 0; j < node.paths.length && !found; j++) {
var p2 = node.paths[j];
if (p2.name === p) {
found = true;
node = p2;
}
}
if (!found) {
if (create) {
var n = {
name: p,
paths: []
};
node.paths.push(n);
node = n;
} else {
return;
}
}
}
return node;
},
save: function(path, data) {
var paths = this.split(path);
this.bubble({
state: [{
path: paths.pop(),
data: data}],
paths: paths
});
},
bubble: function(viewState) {
if (viewState.paths.length > 0) {
var node = this.findNode(viewState.paths),
...