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),
        ...