-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsimpla-paths.html
1 lines (1 loc) · 5.5 KB
/
simpla-paths.html
1
<script>!function(){"use strict";var t=function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")},e=function(){function t(t,e){for(var n=0;n<e.length;n++){var r=e[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(t,r.key,r)}}return function(e,n,r){return n&&t(e.prototype,n),r&&t(e,r),e}}(),n=function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function, not "+typeof e);t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}}),e&&(Object.setPrototypeOf?Object.setPrototypeOf(t,e):t.__proto__=e)},r=function(t,e){if(!t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!e||"object"!=typeof e&&"function"!=typeof e?t:e},i=function(t){if(Array.isArray(t)){for(var e=0,n=Array(t.length);e<t.length;e++)n[e]=t[e];return n}return Array.from(t)},a=Array.prototype.forEach,o=function(){function n(e){if(t(this,n),!e)throw new Error("Must be given a document");this.ownerDocument=e,this._attrMap=new Map,this._elementMap=new WeakMap,this._observe()}return e(n,[{key:"define",value:function(t,e){this._attrMap.set(t,e),this._upgradeAttr(t)}},{key:"get",value:function(t,e){var n=this._elementMap.get(t);if(n)return n.get(e)}},{key:"_getConstructor",value:function(t){return this._attrMap.get(t)}},{key:"_observe",value:function(){var t=this,e=this.ownerDocument,n=this._downgrade.bind(this),r=this._upgradeElement.bind(this);this.observer=new MutationObserver(function(e){a.call(e,function(e){"attributes"===e.type?t._getConstructor(e.attributeName)&&t._found(e.attributeName,e.target,e.oldValue):(a.call(e.removedNodes,n),a.call(e.addedNodes,r))})}),this.observer.observe(e,{childList:!0,subtree:!0,attributes:!0,attributeOldValue:!0})}},{key:"_upgradeAttr",value:function(t,e){var n=(e=e||this.ownerDocument).querySelectorAll("["+t+"]");a.call(n,function(e){this._found(t,e)},this)}},{key:"_upgradeElement",value:function(t){1===t.nodeType&&(a.call(t.attributes,function(e){this._getConstructor(e.name)&&this._found(e.name,t)},this),this._attrMap.forEach(function(e,n){this._upgradeAttr(n,t)},this))}},{key:"_downgrade",value:function(t){var e=this._elementMap.get(t);e&&(e.forEach(function(t){t.disconnectedCallback&&t.disconnectedCallback()},this),this._elementMap.delete(t))}},{key:"_found",value:function(t,e,n){var r=this._elementMap.get(e);r||(r=new Map,this._elementMap.set(e,r));var i=r.get(t),a=e.getAttribute(t);i?null==a&&i.value?(i.value=a,i.disconnectedCallback&&i.disconnectedCallback(),r.delete(t)):a!==i.value&&(i.value=a,i.changedCallback&&i.changedCallback(n,a)):(i=new(this._getConstructor(t)),r.set(t,i),i.ownerElement=e,i.name=t,i.value=a,i.connectedCallback&&i.connectedCallback())}}]),n}(),u=new RegExp("^\\/*(.+?)\\/*$"),c=function(t){return function(e){return e!==t}},l=function(t){return"/"===t?"":t.replace(u,"$1")},h=function(t){return function(e){return function(n){for(var r=0,i=e.length;r<i;r++){var a=t.get(n,e[r]);if(a)return a}return null}}},s=function(){function n(){t(this,n),this.children=[]}return e(n,[{key:"addChild",value:function(t){var e=void 0;t.parent!==this&&(e=this.children,this.children=[].concat(i(e),[t]),t.parent=this,e.forEach(function(t){return t.findAndAttachToParent()}))}},{key:"removeChild",value:function(t){this.children=this.children.filter(c(t)),t.parent=null}},{key:"refreshPath",value:function(){var t=[];this.parent&&this.parent.path&&t.push(this.parent.path),this.partial&&t.push(this.partial),this.path=t.join("/")}},{key:"pluck",value:function(){var t=this.parent,e=this.children;this.parent=null,this.children=[],e.forEach(t.addChild,t)}},{key:"findAndAttachToParent",value:function(){}},{key:"path",set:function(t){this._path=t,this.children.forEach(function(t){return t.refreshPath()})},get:function(){return this._path}},{key:"parent",set:function(t){this._parent=t,this.refreshPath()},get:function(){return this._parent}},{key:"partial",set:function(t){this._partial=t,this.refreshPath()},get:function(){return this._partial}}]),n}(),f=function(i,a){return function(o){function u(){return t(this,u),r(this,(u.__proto__||Object.getPrototypeOf(u)).apply(this,arguments))}return n(u,o),e(u,[{key:"connectedCallback",value:function(){this.findAndAttachToParent(),this.syncValueToPartial(),this.syncPathToOwnerElement()}},{key:"disconnectedCallback",value:function(){this.pluck(),this.syncValueToPartial(),this.syncPathToOwnerElement()}},{key:"changedCallback",value:function(){this.syncValueToPartial(),this.syncPathToOwnerElement()}},{key:"findAndAttachToParent",value:function(){var t=void 0,e=void 0;do{t=t?t.parentElement:this.ownerElement.parentElement,e=i(t)}while(t&&!e);e?e.addChild(this):a.addChild(this)}},{key:"syncValueToPartial",value:function(){this.partial=this.value}},{key:"syncPathToOwnerElement",value:function(){var t="/"+this.path,e=new CustomEvent("path-changed",{detail:{value:t}});this.ownerElement.path=t,this.ownerElement.dispatchEvent(e),this.children.forEach(function(t){return t.syncPathToOwnerElement()})}}]),u}(s)},d=function(i,a){return function(i){function a(){return t(this,a),r(this,(a.__proto__||Object.getPrototypeOf(a)).apply(this,arguments))}return n(a,i),e(a,[{key:"refreshPath",value:function(){this.path=this.partial||""}}]),a}(f(i,a))};window.SimplaPaths={observe:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=new o(t),r=new s,i=h(n)(["gid","sid"]);r.partial=l(e),n.define("sid",f(i,r)),n.define("gid",d(i,r))}},window.SimplaPaths.observe(document)}();</script>