dothtml 5.2.3 → 5.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/arg-callback-obj.d.ts +29 -0
- package/lib/built-in-components/nav-link.d.ts +8 -0
- package/lib/built-in-components/router.d.ts +57 -0
- package/lib/component.d.ts +82 -0
- package/lib/dot-util.d.ts +26 -0
- package/lib/dot.d.ts +5 -0
- package/lib/dothtml.d.ts +27 -0
- package/lib/dothtml.js +2 -1
- package/lib/dothtml.js.LICENSE.txt +1 -0
- package/lib/dothtml.js.map +1 -0
- package/lib/err.d.ts +2 -0
- package/lib/event-bus.d.ts +10 -0
- package/lib/i-dot.d.ts +674 -0
- package/lib/node-polyfill.d.ts +2 -0
- package/lib/observable-array.d.ts +49 -0
- package/lib/styling/css-types.ts/css-angle.d.ts +7 -0
- package/lib/styling/css-types.ts/css-color.d.ts +9 -0
- package/lib/styling/css-types.ts/css-complex.d.ts +7 -0
- package/lib/styling/css-types.ts/css-data-type.d.ts +5 -0
- package/lib/styling/css-types.ts/css-filter.d.ts +22 -0
- package/lib/styling/css-types.ts/css-length.d.ts +7 -0
- package/lib/styling/css-types.ts/css-number.d.ts +6 -0
- package/lib/styling/css-types.ts/css-percentage.d.ts +5 -0
- package/lib/styling/css-types.ts/css-transform.d.ts +38 -0
- package/lib/styling/css-types.ts/css-unknown.d.ts +6 -0
- package/lib/styling/css-types.ts/css-url.d.ts +6 -0
- package/lib/styling/i-dotcss.d.ts +1085 -0
- package/lib/styling/style-builder.d.ts +24 -0
- package/lib/styling/unit-function-tables.d.ts +10 -0
- package/package.json +9 -8
- package/readme.md +11 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dothtml.js","mappings":"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7E,CAGa,EAAAgJ,cAAgB,EAChB,EAAAkB,eAAiB,EAM9B,IAuWIvK,EAvWAoJ,EAA4B,SAAUN,EAAoB0B,GAG7DlK,KAAKoG,WAAaoC,EAClBxI,KAAKmK,WAAa3B,EAAWA,EAAS4B,UAAY,KAClDpK,KAAKqK,KAAO,KACZrK,KAAKsK,eAAiB,GACtBtK,KAAKuK,gBAAkB,CAAC,EACxBvK,KAAKwK,cAAgBN,GAAe,EACpClK,KAAKyK,kBAAoB,GACzBzK,KAAK0K,gBAAkB,EAAA3B,aAEvB,EAGGK,EAAMN,EAAoC9D,UAE1C2F,EAAU,CACb,IACA,QACA,OACA,UACA,OACA,UACA,QACA,IACA,MACA,MACA,aACA,OACA,KACA,SACA,SACA,UACA,OACA,OACA,MACA,WACA,UACA,OACA,WACA,KACA,MACA,UACA,MACA,SACA,MACA,KACA,KACA,KACA,QACA,WACA,aACA,SACA,SACA,OACA,KACA,KACA,KACA,KACA,KACA,KACA,SACA,KACA,IACA,SACA,MACA,QACA,MACA,MACA,SACA,QACA,SACA,KACA,OACA,MACA,OACA,OACA,WACA,QACA,MACA,SACA,KACA,WACA,SACA,SACA,IACA,QACA,MACA,WACA,IACA,KACA,KACA,OACA,IACA,OACA,UACA,SACA,QACA,SACA,OACA,SACA,MACA,MACA,UACA,MACA,QACA,QACA,KACA,WACA,QACA,KACA,QACA,OACA,KACA,QACA,IACA,KACA,MACA,QACA,OAGGC,EAAgB,CACnB,SACA,YACA,SACA,QACA,QACA,MACA,UACA,eACA,YACA,WACA,WACA,OACA,aACA,UACA,SACA,WACA,cACA,cACA,YACA,OACA,UACA,UAGA,UACA,QACA,WACA,WACA,QACA,OACA,UACA,UACA,kBACA,cACA,WACA,SACA,WACA,UACA,UAEA,MACA,UACA,WACA,WACA,YACA,WACA,UACA,OACA,OACA,WACA,iBACA,eACA,cACA,cACA,oBACA,MACA,gBAEA,aACA,QACA,cACA,UACA,SACA,SACA,OACA,OACA,WACA,SACA,OACA,KACA,SACA,QACA,WACA,UACA,OAEA,OACA,OACA,WACA,OACA,MACA,WACA,eACA,cACA,MACA,YACA,QACA,WACA,SACA,MACA,eACA,WACA,QACA,OACA,SACA,WACA,UACA,aACA,SACA,OACA,UACA,UACA,OACA,cACA,SACA,UACA,SACA,aACA,WACA,MACA,WACA,MACA,WACA,OACA,UACA,QACA,UACA,QACA,YACA,WACA,WACA,QACA,OACA,QAEA,aACA,MACA,SACA,UACA,SACA,UACA,QACA,OAEA,QACA,WACA,SACA,QACA,OACA,SACA,SACA,QACA,YACA,QACA,QASGC,EAAoB,CACvB,CAAC,YAAY,QACb,CAAC,aAAa,QACd,CAAC,YAAY,QACb,CAAC,aAAa,SACd,CAAC,UAAU,QACX,CAAC,eAAe,WAChB,CAAC,cAAc,SACf,CAAC,gBAAgB,mBAGdC,EAAe,CAClB,UACA,SACA,WACA,UACA,YACA,oBACA,UACA,SACA,gBACA,cACA,QACA,aACA,SACA,YACA,cACA,cACA,aACA,cACA,SACA,mBACA,YACA,UACA,UACA,UACA,eACA,YACA,YACA,aACA,UACA,SACA,eACA,mBACA,cACA,cACA,eACA,cACA,aACA,cACA,YACA,eACA,YACA,WACA,aACA,cACA,aACA,UACA,SACA,YACA,aACA,aACA,eACA,UACA,WACA,WACA,WACA,WACA,YACA,WACA,YACA,YACA,WACA,YACA,eACA,WACA,WACA,iBACA,YACA,WAID,IAAIpL,KAAKiL,EAAShB,EAAcgB,EAAQjL,IACxC,IAAIA,KAAKkL,EAAed,EAAgBc,EAAclL,IACtD,IAAIA,KAAKmL,EACRf,EAAgBe,EAAkBnL,GAAG,GAAGmL,EAAkBnL,GAAG,IAE9D,IAAIA,KAAKoL,EAAchB,EAAgBgB,EAAapL,IAEpDwJ,EAAI,MAAM,SAAiC6B,GAC1C,OAAO/K,IACR,IAEAkJ,EAAI,mBAAmB,WACtB,OAAOV,SAASmB,cApbH,mBAqbd,IAEAT,EAAI,kBAAkB,WACrB,GAAGlJ,KAAKoG,YAAcpG,KAAKsK,eAAexG,OAAS,EAAG,OAAO9D,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","sources":["webpack://dothtml/webpack/universalModuleDefinition","webpack://dothtml/./src/arg-callback-obj.ts","webpack://dothtml/./src/component.ts","webpack://dothtml/./src/dot-util.ts","webpack://dothtml/./src/dot.ts","webpack://dothtml/./src/dothtml.ts","webpack://dothtml/./src/err.ts","webpack://dothtml/./src/event-bus.ts","webpack://dothtml/./src/observable-array.ts","webpack://dothtml/./src/styling/css-types.ts/css-angle.ts","webpack://dothtml/./src/styling/css-types.ts/css-color.ts","webpack://dothtml/./src/styling/css-types.ts/css-complex.ts","webpack://dothtml/./src/styling/css-types.ts/css-data-type.ts","webpack://dothtml/./src/styling/css-types.ts/css-filter.ts","webpack://dothtml/./src/styling/css-types.ts/css-length.ts","webpack://dothtml/./src/styling/css-types.ts/css-number.ts","webpack://dothtml/./src/styling/css-types.ts/css-percentage.ts","webpack://dothtml/./src/styling/css-types.ts/css-transform.ts","webpack://dothtml/./src/styling/css-types.ts/css-unknown.ts","webpack://dothtml/./src/styling/css-types.ts/css-url.ts","webpack://dothtml/./src/styling/style-builder.ts","webpack://dothtml/./src/styling/unit-function-tables.ts","webpack://dothtml/webpack/bootstrap","webpack://dothtml/webpack/startup"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse {\n\t\tvar a = factory();\n\t\tfor(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];\n\t}\n})(self, function() {\nreturn ","import { IDotDocument } from \"./i-dot\";\r\n\r\nexport abstract class ArgCallback{\r\n el: Element;\r\n f: (content?: any, index?: number)=>string;\r\n\r\n constructor(element: Element, value: (content?: any, index?: number)=>string){\r\n this.el = element;\r\n this.f = value;\r\n }\r\n\r\n abstract updateContent(dot: IDotDocument, propVal?: any);\r\n}\r\n\r\nexport class AttrArgCallback extends ArgCallback{\r\n attr: string;\r\n constructor(element: Element, attributeName: string, value: (content?: any)=>string){\r\n super(element, value);\r\n this.attr = attributeName;\r\n }\r\n\r\n updateContent(dot){\r\n this.el.setAttribute(this.attr, this.f());\r\n }\r\n}\r\n\r\nexport class ContentArgCallback extends ArgCallback{\r\n constructor(element: Element, content: ()=>string){\r\n super(element, content);\r\n }\r\n\r\n updateContent(dot, propVal: string){\r\n dot(this.el).empty().h(this.f(propVal));\r\n }\r\n}\r\n\r\nexport class ArrayArgCallback extends ArgCallback{\r\n dotTarget: IDotDocument;\r\n constructor(dotTarget, content){\r\n super(null, content);\r\n this.dotTarget = dotTarget;\r\n }\r\n\r\n updateContent(){}\r\n}\r\n\r\nexport class ConditionalArgCallback extends ArgCallback{\r\n startNode: Node;\r\n endNode: Node;\r\n condition: ()=>boolean | boolean;\r\n lastValue: boolean;\r\n constructor(startNode, endNode, content, condition){\r\n super(null, content);\r\n this.startNode = startNode;\r\n this.endNode = endNode;\r\n this.condition = condition;\r\n this.lastValue = undefined; // This will be set by the calling code - after the object is added to __currentArgCallback.\r\n }\r\n\r\n updateContent(dot){\r\n if(this.lastValue != !!this.condition()){\r\n this.lastValue = !this.lastValue;\r\n if(this.lastValue){\r\n dot._appendOrCreateDocument(this.f, this.endNode.parentNode, this.endNode);\r\n }\r\n else {\r\n do{\r\n var e = this.startNode.nextSibling;\r\n if(e && e != this.endNode){\r\n e.parentNode.removeChild(e);\r\n }\r\n } while(this.startNode.nextSibling && this.startNode.nextSibling != this.endNode)\r\n }\r\n }\r\n }\r\n}","import ObservableArray from \"./observable-array\";\r\nimport dot from \"./dot\";\r\nimport { ClassPrefix, eachK, GlobalComponentStack, isF, sT } from \"./dot-util\";\r\nimport ERR from \"./err\";\r\nimport { IDotDocument, IDotElement, IDotElementDocument, IDotGenericElement } from \"./i-dot\";\r\nimport { ArgCallback, ArrayArgCallback, AttrArgCallback } from \"./arg-callback-obj\";\r\nimport IDotCss from \"./styling/i-dotcss\";\r\n\r\ninterface IPropertyContainer{\r\n\tactivePropConstructor: Function;\r\n\tpropDependencies: {[key: string]: Array<ArgCallback>}\r\n\trawProps: {[key: string]: any}\r\n\tactiveProps: {[key: string]: any}\r\n\tbindings: {[key: string]: Array<{\r\n\t\telement: HTMLElement\r\n\t}>}\r\n}\r\n\r\n\r\nabstract class Component{\r\n\r\n\t/**\r\n\t * Used internally to indicate the first time $updateStyles is called.\r\n\t * This method is called by the static component builder when the component is created.\r\n\t * If a prop is accessed within the style builder, the getter reads this field to mark $updateStyles as a dependency.\r\n\t*/\r\n\t#initializingStyles: boolean = false;\r\n\t#initializingBuild: boolean = false;\r\n\t// A bit messy but gets us to MVP for this feature.\r\n\t// Ideally this should be made a singleton somehow, perhaps put in the property metadata.\r\n\t#rebuildStylesOnPropChange: {[propName: string]: true} = {};\r\n\t#rebuildBuilderOnPropChange: {[propName: string]: true} = {};\r\n\r\n\t/**\r\n\t * Called once per component, on the first build.\r\n\t * TODO: this shouldn't require an instance of the component. Please experiment with fixing this.\r\n\t*/\r\n\tstatic initializeComponent<T extends Component>(obj: T): void{\r\n\t\tif(!(obj.constructor as any).__dotComponentInitialized) {\r\n\t\t\t(obj.constructor as any).__dotComponentInitialized = true;\r\n\t\t\t\r\n\t\t\t// Additional generic logic that should run once per component.\r\n\t\t\t(obj.constructor as any).__dotClassNumb = ClassPrefix.next;\r\n\t\t\t(obj.constructor as any).__activePropContainer = function ActivePropContainer(obj){\r\n\t\t\t\tthis.__component = obj;\r\n\t\t\t};\r\n\r\n\t\t\teachK(obj.props, (k,v) => {\r\n\t\t\t\tComponent.createProp((obj.constructor as any).__activePropContainer, k);\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tstatic build<T extends Component>(obj: T): HTMLElement{\r\n\t\tComponent.initializeComponent(obj);\r\n\r\n\t\tGlobalComponentStack.push(obj);\r\n\t\tobj.created && obj.created(...obj.__args);\r\n\t\r\n\t\tif(obj.__built) ERR(\"CB\");\r\n\t\tobj.__built = true;\r\n\r\n\t\t\r\n\r\n\t\tobj.__propContainer = {\r\n\t\t\tactivePropConstructor: (obj.constructor as any).__activePropContainer,\r\n\t\t\trawProps: obj.props || {},\r\n\t\t\tactiveProps: new (obj.constructor as any).__activePropContainer(obj),\r\n\t\t\tpropDependencies: {},\r\n\t\t\tbindings: {}\r\n\t\t};\r\n\r\n\t\t// eachK(obj.props, (k,v) => {\r\n\t\t// \t// Initialize it.\r\n\t\t// \tcc.__propContainer.activeProps[k] = cc.__propContainer.rawProps[k];\r\n\t\t// });\r\n\t\tobj.props = obj.__propContainer.activeProps;\r\n\r\n\t\teachK(obj.__propContainer.rawProps, (k,v) => {\r\n\t\t\tobj.__propContainer.bindings[k] = []\r\n\t\t\tobj.props[k] = v;\r\n\t\t});\r\n\r\n\t\t// function ComputedContainer(){\r\n\t\t// };\r\n\t\t// let cc = new ComputedContainer();\r\n\t\t\r\n\t\t// eachK(obj.computed, function(k, v){\r\n\t\t// \tisF(v) ? v : ERR(\"XF\", \"computed\")\r\n\t\t// \t//createProp(k, CC);\r\n\t\t// \tComputedContainer.prototype[k] = v;\r\n\t\t// \tObject.defineProperty(ComputedContainer.prototype, k, {\r\n\t\t// \t\tenumerable: true,\r\n\t\t// \t\tget: function(){\r\n\t\t// \t\t\t// This was commented out pre-ts.\r\n\t\t// \t\t\t//configureDependency(v(), this, k);\r\n\t\t// \t\t\treturn v.call(obj);\r\n\t\t// \t\t}\r\n\t\t// \t});\r\n\t\t// });\r\n\t\t// obj.computed = cc;\r\n\r\n\t\tComponent.initializeEventHandlers(obj);\r\n\t\r\n\t\tComponent.rebuild(obj);\r\n\t\r\n\t\t// TODO: would be great to do this without a timer, once the DOM is updated. \r\n\t\t// May require some type of queueing system within dot.\r\n\t\tobj.ready && sT(()=>{\r\n\t\t\tGlobalComponentStack.push(obj);\r\n\t\t\tobj.ready();\r\n\t\t\tGlobalComponentStack.pop()\r\n\t\t}, 0);\r\n\r\n\t\tGlobalComponentStack.pop();\r\n\t\t\r\n\t\treturn obj.$el;\r\n\t}\r\n\r\n\t/**\r\n\t * Called any time the component needs to be completely rebuilt.\r\n\t*/\r\n\tstatic rebuild<T extends Component>(obj: T) {\r\n\r\n\t\tlet oldEl = obj.$el;\r\n\t\t\r\n\t\tif(!obj.__eventsInitialized) obj.#initializingBuild = true;\r\n\t\tlet ret = obj.builder(...obj.__args);\r\n\t\tobj.#initializingBuild = false;\r\n\t\r\n\t\tlet lst = ret.getLast();\r\n\t\t(!lst || (lst.parentNode.childNodes.length > 1)) && ERR(\"C#\", obj.name || obj.constructor.name || \"(unnamed obj)\");\r\n\t\t\r\n\r\n\t\t// Note: I don't know what the justification was for using $obj.el, but all tests pass without it.\r\n\t\t// It was removed to facilitate rebuilding the component (during a prop change).\r\n\t\tobj[\"__$el\"] = /*obj.$el ||*/ lst;\r\n\t\tobj.$el[\"__dothtml_component\"] = obj;\r\n\r\n\t\tif(oldEl){\r\n\t\t\t// Clean it up and replace it with the new element!\r\n\t\t}\r\n\r\n\t\t// TODO: would there be a way to not have to create obj function for each instance?\r\n\t\tif(obj.style) {\r\n\t\t\t// obj will be the officially supported way to use dothtml.\r\n\t\t\tobj.$styleBuilder = function(){\r\n\t\t\t\t// dot.css.scopeToEl(obj.$el, !obj.__stylesSet);\r\n\t\t\t\tdot.css.scopeToEl(obj.$el);\r\n\t\t\t\tif(!obj.__stylesSet){\r\n\t\t\t\t\tdot.css.cacheScopedStaticStyles(obj.$el);\r\n\t\t\t\t\tobj.__stylesSet = true;\r\n\t\t\t\t}\r\n\t\t\t\tdot.css.clearDynamicStyles(obj.$el);\r\n\t\t\t\tobj.style(dot.css);\r\n\t\t\t\tdot.css.unscope();\r\n\t\t\t}\r\n\t\t\tif(!obj.__eventsInitialized) obj.#initializingStyles = true;\r\n\t\t\tobj.$updateStyles();\r\n\t\t\tobj.#initializingStyles = false;\r\n\t\t\t//styler();\r\n\t\t}\r\n\t\r\n\t\tobj.built && obj.built();\r\n\t}\r\n\r\n\tstatic initializeEventHandlers(obj){\r\n\t\tif(!obj.__eventsInitialized){\r\n\t\t\tobj.__eventsInitialized = true;\r\n\t\t\teachK(obj.events, (k,v) => {\r\n\t\t\t\tobj.events[k] = function(){\r\n\t\t\t\t\tfor(let f of obj.events[k][\"__handlers\"]){\r\n\t\t\t\t\t\tf.apply(this, arguments);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t\r\n\t\t\t\tobj.events[k][\"__handlers\"] = [];\r\n\t\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\tstatic createProp(activePropContainer: Function, name: string){\r\n\t\t// var dependencies = [];\r\n\t\tObject.defineProperty(activePropContainer.prototype, name, {\r\n\t\t\tconfigurable: false,\r\n\t\t\tenumerable: false,\r\n\t\t\tget: function() {\r\n\t\t\t\tdot[\"__lastProp\"] = name;\r\n\t\t\t\tdot[\"__lastIndex\"] = null;\r\n\t\t\t\tdot[\"__lastComponent\"] = this.__component;\r\n\r\n\t\t\t\tlet rawProp = this.__component.__propContainer.rawProps[name];\r\n\t\t\t\tComponent.configureDependency(this.__component, name);\r\n\t\t\t\treturn rawProp;\r\n\t\t\t},\r\n\t\t\tset: function(value) {\r\n\t\t\t\t// TODO: if this value is set, get the list of dependencies, and update them by calling their dot argument callbacks.\r\n\t\t\t\tlet propVal = value;\r\n\t\t\t\tif(value instanceof Array){\r\n\t\t\t\t\tpropVal = new ObservableArray(value);\r\n\t\t\t\t\tpropVal.addEventListener(\"read\",e=>{\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\tdot[\"__lastIndex\"] = e.index;\r\n\t\t\t\t\t});\r\n\t\t\t\t}\r\n\t\t\t\tthis.__component.__propContainer.rawProps[name] = propVal;\r\n\t\t\t\tfor(let b of this.__component.__propContainer.bindings[name]){\r\n\t\t\t\t\tdot(b.element).as(dot.input).setVal(propVal);\r\n\t\t\t\t}\r\n\t\r\n\t\t\t\tComponent.updateProp(this.__component, name);\r\n\t\r\n\t\t\t\treturn propVal;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\t\r\n\t}\r\n\r\n\tstatic configureDependency(cc: Component, name: string){\r\n\t\t// TODO: verify that there is no memory leak!!\r\n\t\tvar cb: ArgCallback = dot[\"__currentArgCallback\"][dot[\"__currentArgCallback\"].length-1];\r\n\t\tif(cb){\r\n\t\t\t// This means this getter is being used during the invocation of an arg callback.\r\n\t\t\t// Add it to a collection so that when the value is set, the appropriate component will update.\r\n\t\t\tlet rawProp = cc.__propContainer.rawProps[name];\r\n\r\n\t\t\tif(rawProp instanceof ObservableArray){\r\n\t\t\t\t(rawProp as any).addEventListener(\"itemadded\", function(e) {\r\n\t\t\t\t\t// TODO: More test cases to create:\r\n\t\t\t\t\t// TODO: what about rendering the list length or something?\r\n\t\t\t\t\t// TODO: what about a computed field based on length?\r\n\t\t\t\t\tif(cb instanceof ArrayArgCallback) {\r\n\t\t\t\t\t\tcb.dotTarget._appendOrCreateDocument(cb.f(e.item, e.index), undefined, e.index);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(cb as AttrArgCallback) {\t\r\n\t\t\t\t\t\tComponent.updateProp(cc, name);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\r\n\t\t\t\t(rawProp as any).addEventListener(\"itemset\", function(e) {\r\n\t\t\t\t\tif(cb instanceof ArrayArgCallback) {\r\n\t\t\t\t\t\tvar p = (cb.dotTarget as any).__document;\r\n\t\t\t\t\t\tvar el = p.childNodes[e.index];\r\n\t\t\t\t\t\tp.removeChild(el);\r\n\t\t\t\t\t\tcb.dotTarget._appendOrCreateDocument(cb.f(e.item, e.index), undefined, e.index);\t\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(cb as AttrArgCallback) {\t\r\n\t\t\t\t\t\tComponent.updateProp(cc, name);\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t});\r\n\t\r\n\t\t\t\t(rawProp as any).addEventListener(\"itemremoved\", function(e) {\r\n\t\t\t\t\tif(cb instanceof ArrayArgCallback) {\r\n\t\t\t\t\t\t(cb.dotTarget as any).__document.removeChild((cb.dotTarget as any).__document.childNodes[e.index]);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(cb as AttrArgCallback) {\t\r\n\t\t\t\t\t\tComponent.updateProp(cc, name);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t}\r\n\t\t\tvar ar = cc.__propContainer.propDependencies[name];\r\n\t\t\tif(!ar) ar = cc.__propContainer.propDependencies[name] = [];\r\n\t\t\tar.push(cb);\r\n\t\t}\r\n\r\n\t\t// Again I find this a weird way to do it that kind of side-steps the above approach, but it gets the job done and is dead simple.\r\n\t\tif(cc.#initializingStyles){\r\n\t\t\tcc.#rebuildStylesOnPropChange[name] = true;\r\n\t\t}\r\n\t\tif(cc.#initializingBuild){\r\n\t\t\tcc.#rebuildBuilderOnPropChange[name] = true;\r\n\t\t}\r\n\t}\r\n\t\r\n\tstatic updateProp(obj: Component, name: string){\r\n\t\tlet ar = obj.__propContainer.propDependencies[name];\r\n\t\tlet value = obj.__propContainer.rawProps[name];\r\n\t\r\n\t\t// // {f:contentCallback,startNode:startNode, endNode:endNode,condition:condition}\r\n\t\tlet updateStyles = false;\r\n\t\tif(false && obj.#rebuildBuilderOnPropChange[name] && !obj.#initializingBuild){\r\n\t\t\t// Call the builder again.\r\n\t\t}\r\n\t\telse{\r\n\t\t\t// Maybe update specific areas.\r\n\t\t\t// This is admittedly more efficient.\r\n\t\t\tfor(let i = 0; i < (ar||[]).length; i++){\r\n\t\t\t\tlet arg = ar[i];\r\n\t\t\t\t// TODO: this could be used to update attributes.\r\n\t\t\t\t// But right now that relies exclusively on function setters. It's a bit weird.\r\n\t\t\t\targ.updateContent(dot, value);\r\n\t\t\t\t\r\n\t\t\t\tif(obj.#rebuildStylesOnPropChange[name] || (arg instanceof AttrArgCallback && arg.attr == \"class\")){\r\n\t\t\t\t\tupdateStyles = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\t\tif(updateStyles) obj.$updateStyles();\r\n\t}\r\n\r\n\tconstructor(...args: Array<any>){\r\n\t\tthis.__args = args;\r\n\t}\r\n\r\n\t/**\r\n\t * A function returning DOThtml (required).\r\n\t */\r\n\tabstract builder(...args: Array<any>): IDotElement;\r\n\r\n\t/**\r\n\t * \r\n\t*/\r\n\tprops: {[key: string]: any};\r\n\r\n\t/**\r\n\t * A series of events that can be raised from inside the component.\r\n\t */\r\n\tevents: {[key: string]: (... params: Array<any>)=>void};\r\n\t\r\n\t/**\r\n\t * An optional function that gets called before the component is created, scoped to the new component object.\r\n\t */\r\n\tcreated(...args: Array<any>): void{}\r\n\r\n\t/**\r\n\t * An optional function called after the element has been added. One parameter will be provided containing the added element.\r\n\t */\r\n\tready(): void{}\r\n\r\n\t/**\r\n\t * An optional function called before the component is deleted.\r\n\t */\r\n\tdeleting(): void{}\r\n\r\n\t/**\r\n\t * An optional function called after the component is deleted.\r\n\t */\r\n\tdeleted(): void{}\r\n\t/**\r\n\t * An optional function called after the component is built.\r\n\t */\r\n\tbuilt(): void{}\r\n\r\n\ton(event: string, handler: Function): void{\r\n\t\tComponent.initializeEventHandlers(this);\r\n\r\n\t\tlet e = this.events && this.events[event];\r\n\t\tif(!e) ERR(\"UE\", event);\r\n\t\tlet handlers = e[\"__handlers\"] as Array<Function>;\r\n\t\tif(handlers.indexOf(handler) == -1){\r\n\t\t\thandlers.push(handler);\r\n\t\t}\r\n\t}\r\n\toff(event: string, handler: Function): void{\r\n\t\tlet e = this.events && this.events[event];\r\n\t\tif(!e) ERR(\"UE\", event);\r\n\t\tlet handlers = e[\"__handlers\"] as Array<Function>;\r\n\t\tlet i = handlers.indexOf(handler);\r\n\t\tif(i > -1){\r\n\t\t\thandlers.splice(i, 1);\r\n\t\t}\r\n\t}\r\n\r\n\tprivate __$el: HTMLElement;\r\n\tprivate __built = false;\r\n\tprivate __stylesSet = false;\r\n\tprivate __eventsInitialized: boolean = false;\r\n\tprivate __propContainer: IPropertyContainer;\r\n\tprivate __args: Array<any>;\r\n\r\n\t/**\r\n\t * The main element of this component - automatically set after the builder is called.\r\n\t*/\r\n\tget $el(): HTMLElement{\r\n\t\treturn this.__$el;\r\n\t}\r\n\r\n\t$refs: {[key: string]: HTMLElement} = {};\r\n\r\n\t/**\r\n\t * Name of the component (optional). If provided, dot and the VDBO will be extended.\r\n\t */\r\n\tname: string;\r\n\t/**\r\n\t * An optional function that is called after builder that stylizes the component using a scoped style builder.\r\n\t */\r\n\tstyle?(styleBuilder: IDotCss): void;\r\n\r\n\t// constructor(params: ComponentParams){\r\n\t// \tthis.name = params.name;\r\n\t// }\r\n\r\n\t$styleBuilder?: Function;\r\n\r\n\t$updateStyles(){\r\n\t\tthis.$styleBuilder && this.$styleBuilder();\r\n\t}\r\n}\r\n\r\nexport default Component;\r\n\r\n// Eventually we'd like to set this up. Might be overkill.\r\n// function component<T extends { new (...args: any[]): {} }>(constructor: T) {\r\n// \treturn class extends constructor {\r\n// \t \r\n// \t};\r\n// }","// Polyfill for Object.keys(...).forEach.\r\n\r\nimport type Component from \"./component\";\r\n\r\nexport function eachK(obj, cb){\r\n if(obj){\r\n var lst = Object.keys(obj);\r\n for(var i = 0; i < lst.length; i++) cb(lst[i], obj[lst[i]]);\r\n }\r\n}\r\n\r\nexport function isF(v){\r\n return v && v.constructor && v.call && v.apply;\r\n}\r\n\r\nexport const sT = setTimeout;\r\nexport function str(s: number,v?:number){return (s||\"\").toString(v)} // This function seems really weird.\r\n\r\nclass _ClassPrefix{\r\n private current: number = 0x10000; \r\n \r\n reset(){\r\n this.current = 0x10000;\r\n }\r\n\r\n get next(): number{\r\n return this.current++;\r\n }\r\n}\r\n\r\nexport const ClassPrefix = new _ClassPrefix()\r\n\r\nexport const GlobalComponentStack: Array<Component> = [];\r\n\r\n\r\nexport type AnimationType = \"geometric\"|\"exponential\"|\"ease\"|\"linear\";\r\n\r\nexport var floatRegex = new RegExp(\"[-+]?[0-9]*\\\\.?[0-9]+(?:[eE][-+]?[0-9]+)?\", \"g\");\r\n\r\n/**\r\n * Function that takes in a bunch of parameters and steps the start value toward the target based on timeRemaining and style.\r\n * currentValue is the current value.\r\n * targetValue is the target valaue.\r\n * timeRemaining is the time remaining in ms.\r\n * stepProgress is the size of this step.\r\n * totalDuration is the duration of the entire animation from start to finish (not just this step).\r\n * style is the type of transition (geometric=exponential, ease, linear).\r\n * Returns the result.\r\n*/\r\nexport function numberStep(startValue: number, targetValue: number, currentTime: number, totalDuration: number, style: AnimationType){\r\n\t\r\n\tstartValue = Number(startValue);\r\n\ttargetValue = Number(targetValue);\r\n\r\n\tvar timeRemaining = totalDuration - currentTime;\r\n\r\n\tswitch(style){\r\n\t\tcase \"geometric\":\r\n\t\tcase \"exponential\"://This is kind of stupid now that we have ease. I might come back and add it in the future. For now assume ease.\r\n\t\t//\tvar m = Math.exp(-1 / timeRemaining);\r\n\t\t//\treturn targetValue + m * (startValue - targetValue);\r\n\t\tcase \"ease\":\r\n\t\t\tvar m = (-Math.cos(Math.PI * (currentTime / totalDuration)) + 1) * 0.5;\r\n\t\t\treturn startValue + m * (targetValue - startValue);\r\n\t\tcase \"linear\":\r\n\t\tdefault:\r\n\t\t\treturn startValue + (targetValue - startValue) * (currentTime / totalDuration);\r\n\t}\r\n}","\r\nimport eventBus from \"./event-bus\";\r\nimport {IDotCore, IDotGenericElement} from \"./i-dot\";\r\nimport dotcss, { _Builder } from \"./styling/style-builder\";\r\nimport ERR from \"./err\";\r\nimport { DotContent, IDotElementDocument, IDotDocument } from \"./i-dot\";\r\nimport { ClassPrefix, eachK, GlobalComponentStack, isF, sT, str } from \"./dot-util\";\r\nimport Component from \"./component\";\r\nimport { ArrayArgCallback, AttrArgCallback, ConditionalArgCallback, ContentArgCallback } from \"./arg-callback-obj\";\r\nimport ObservableArray from \"./observable-array\";\r\n\r\n\r\n\r\n\r\n\r\nconst dot: IDotCore = (function(targetSelector: string|Element|Node|NodeList|Array<Node|Element>)\r\n{\r\n\t//console.log(targetSelector);\r\n\tvar targets = targetSelector ? (\r\n\t\ttypeof targetSelector == \"string\" ? document.querySelectorAll(targetSelector) \r\n\t\t: (targetSelector instanceof Element || targetSelector instanceof Node ? [targetSelector] \r\n\t\t\t: ((targetSelector instanceof NodeList || (targetSelector instanceof Array) && targetSelector[0] && (targetSelector[0] instanceof Element || targetSelector[0] instanceof Node)) ? targetSelector \r\n\t\t\t\t: []\r\n\t)))\r\n\t: [];\r\n\t//console.log(targets);\r\n\tvar newDot = new DotDocument();\r\n\tif(targets.length > 0){\r\n\t\tnewDot.__document = targets[0];\r\n\t}\r\n\r\n\tdot[\"__selectionMode\"] = SELECTOR_MODE;\r\n\t\r\n\treturn newDot;\r\n}) as IDotCore;\r\n\r\n\r\n\r\n\r\n\r\nconst DOCEL = \"DOTHTML-DOCUMENT\";\r\nconst DEFEL = \"DOTHTML-DEFER\";\r\nvar _anonFuncCounter = 0;\r\n\r\nfunction ext(name: string, method: Function){\r\n\t_p[name] = dot[name] = method;\r\n}\r\n\r\n// Deletes one element (and not its children). \r\n// Used by _p.empty and _p.remove.\r\nfunction deleteElement(element: Element){\r\n\tvar deleted = null;\r\n\tvar dc: Component = element[\"__dothtml_component\"];\r\n\tif(dc){\r\n\t\t// var d = dc.deleting;\r\n\t\tdc.deleting && dc.deleting();\r\n\t\tdc[\"__$el\"] = null;\r\n\t\tdeleted = dc.deleted;\r\n\t}\r\n\tif(element.parentNode) element.parentNode.removeChild(element);\r\n\tdeleted && deleted.apply(dc);\r\n}\r\n\r\nfunction _conditionalBlock(T, totalCondition, allConditions, contentCallback){\r\n\tvar startTextNode = document.createTextNode(\"\");\r\n\tvar endTextNode = document.createTextNode(\"\");\r\n\t//var cb = {f:contentCallback,startNode:startTextNode, endNode:endTextNode,condition:totalCondition};\r\n\tvar cb = new ConditionalArgCallback(startTextNode, endTextNode, contentCallback, totalCondition);\r\n\tdot[\"__currentArgCallback\"].push(cb);\r\n\t\r\n\tvar renderContent = totalCondition();\r\n\r\n\tT = T._appendOrCreateDocument(startTextNode);\r\n\t\r\n\tfor(var i = 0; i < allConditions.length; i++) allConditions[i]();\r\n\tcb.lastValue = renderContent;\r\n\tif(renderContent) T = T._appendOrCreateDocument(contentCallback);\r\n\t\r\n\tT = T._appendOrCreateDocument(endTextNode);\r\n\tdot[\"__currentArgCallback\"].pop();\r\n\treturn T;\r\n}\r\n\r\nfunction attachEvent(el: Element, ev: string, val: Function, a3?: boolean){\r\n\tif (el.addEventListener) el.addEventListener(ev, val as any, a3 || false);\r\n\telse (el as any).attachEvent(\"on\" + ev, val); //compatibility with old browsers.\r\n}\r\n\r\nfunction createElement(tag){\r\n\text(tag, function(c){return this.el(tag, c);});\r\n};\r\n\r\nfunction createAttribute(attribute: string, alias?: string){\r\n\t_p[alias || attribute] = function(value){return this.attr(attribute, value);}\r\n};\r\n\r\n// Selection Mode enum.\r\nexport const SELECTOR_MODE = 1;\r\nexport const ATTRIBUTE_MODE = 2;\r\n\r\n// TODO: this might need to go in just the right place.\r\n// dotReady(dot, _p, _D);\r\n// Dot document object.\r\n// Formerly _D\r\nvar DotDocument: IDotDocument = (function(document?: Element, classPrefix?: number) {\r\n\t// Private vars.\r\n\r\n\tthis.__document = document;\r\n\tthis.__lastNode = document ? document.lastChild : null;\r\n\tthis.__if = null;\r\n\tthis.__pendingCalls = []; //Allows you to set parent attributes from children.\r\n\tthis.__anonAttrFuncs = {}; //Only to be used by top-level dot object.\r\n\tthis.__classPrefix = classPrefix || 0;\r\n\tthis.__classedElements = [];\r\n\tthis.__selectionMode = SELECTOR_MODE;\r\n\t\r\n}) as IDotDocument;\r\n// Prototype for the dot document object.\r\n\r\nvar _p = (DotDocument as unknown as Function).prototype;\r\n\r\nvar allTags = [\r\n\t\"a\",\r\n\t\"aside\",\r\n\t\"abbr\",\r\n\t\"address\",\r\n\t\"area\",\r\n\t\"article\",\r\n\t\"audio\",\r\n\t\"b\",\r\n\t\"bdi\",\r\n\t\"bdo\",\r\n\t\"blockQuote\",\r\n\t\"body\",\r\n\t\"br\",\r\n\t\"button\",\r\n\t\"canvas\",\r\n\t\"caption\",\r\n\t\"cite\", //*\r\n\t\"code\",\r\n\t\"col\",\r\n\t\"colGroup\",\r\n\t\"content\",\r\n\t\"data\", //*\r\n\t\"dataList\",\r\n\t\"dd\",\r\n\t\"del\",\r\n\t\"details\",\r\n\t\"dfn\",\r\n\t\"dialog\",\r\n\t\"div\",\r\n\t\"dl\",\r\n\t\"dt\",\r\n\t\"em\",\r\n\t\"embed\",\r\n\t\"fieldSet\",\r\n\t\"figCaption\",\r\n\t\"figure\",\r\n\t\"footer\",\r\n\t\"form\", //*\r\n\t\"h1\",\r\n\t\"h2\",\r\n\t\"h3\",\r\n\t\"h4\",\r\n\t\"h5\",\r\n\t\"h6\",\r\n\t\"header\",\r\n\t\"hr\",\r\n\t\"i\",\r\n\t\"iFrame\",\r\n\t\"img\",\r\n\t\"input\",\r\n\t\"ins\",\r\n\t\"kbd\",\r\n\t\"keyGen\",\r\n\t\"label\", //*\r\n\t\"legend\",\r\n\t\"li\",\r\n\t\"main\",\r\n\t\"map\",\r\n\t\"mark\",\r\n\t\"menu\",\r\n\t\"menuItem\",\r\n\t\"meter\",\r\n\t\"nav\",\r\n\t\"object\",\r\n\t\"ol\",\r\n\t\"optGroup\",\r\n\t\"option\",\r\n\t\"output\",\r\n\t\"p\",\r\n\t\"param\",\r\n\t\"pre\",\r\n\t\"progress\",\r\n\t\"q\",\r\n\t\"rp\",\r\n\t\"rt\",\r\n\t\"ruby\",\r\n\t\"s\",\r\n\t\"samp\",\r\n\t\"section\",\r\n\t\"select\",\r\n\t\"small\",\r\n\t\"source\",\r\n\t\"span\", //*\r\n\t\"strong\",\r\n\t\"svg\",\r\n\t\"sub\",\r\n\t\"summary\", //*\r\n\t\"sup\",\r\n\t\"table\",\r\n\t\"tBody\",\r\n\t\"td\",\r\n\t\"textArea\",\r\n\t\"tFoot\",\r\n\t\"th\",\r\n\t\"tHead\",\r\n\t\"time\",\r\n\t\"tr\",\r\n\t\"track\",\r\n\t\"u\",\r\n\t\"ul\",\r\n\t\"var\",\r\n\t\"video\",\r\n\t\"wbr\"\r\n];\r\n\r\nvar allAttributes = [\r\n\t\"accept\",\r\n\t\"accessKey\",\r\n\t\"action\",\r\n\t\"align\",\r\n\t\"aLink\",\r\n\t\"alt\",\r\n\t\"archive\",\r\n\t\"autoComplete\",\r\n\t\"autoFocus\",\r\n\t\"autoPlay\",\r\n\t\"autoSave\",\r\n\t\"axis\",\r\n\t\"background\",\r\n\t\"bgColor\",\r\n\t\"border\",\r\n\t\"buffered\",\r\n\t\"cellPadding\",\r\n\t\"cellSpacing\",\r\n\t\"challenge\",\r\n\t\"char\",\r\n\t\"charOff\",\r\n\t\"checked\",\r\n\t// \"cite\", //*\r\n\t//\"class\",\r\n\t\"classId\",\r\n\t\"clear\",\r\n\t\"codeBase\",\r\n\t\"codeType\",\r\n\t\"color\",\r\n\t\"cols\",\r\n\t\"colSpan\",\r\n\t\"compact\",\r\n\t\"contentEditable\",\r\n\t\"contextMenu\",\r\n\t\"controls\",\r\n\t\"coords\",\r\n\t\"dateTime\",\r\n\t\"declare\",\r\n\t\"default\",\r\n\t//\"data\", //*\r\n\t\"dir\",\r\n\t\"dirName\",\r\n\t\"disabled\",\r\n\t\"download\",\r\n\t\"draggable\",\r\n\t\"dropZone\",\r\n\t\"encType\",\r\n\t\"face\",\r\n\t\"font\",\r\n\t\"fontFace\",\r\n\t\"fontFaceFormat\",\r\n\t\"fontFaceName\",\r\n\t\"fontFaceSrc\",\r\n\t\"fontFaceUri\",\r\n\t\"fontSpecification\",\r\n\t\"for\",\r\n\t\"foreignObject\",\r\n\t// \"form\", //*\r\n\t\"formAction\",\r\n\t\"frame\",\r\n\t\"frameBorder\",\r\n\t\"headers\",\r\n\t\"height\",\r\n\t\"hidden\",\r\n\t\"high\",\r\n\t\"hRef\",\r\n\t\"hRefLang\",\r\n\t\"hSpace\",\r\n\t\"icon\",\r\n\t\"id\",\r\n\t\"images\",\r\n\t\"isMap\",\r\n\t\"itemProp\",\r\n\t\"keyType\",\r\n\t\"kind\",\r\n\t// \"label\", //*\r\n\t\"lang\",\r\n\t\"list\",\r\n\t\"longDesc\",\r\n\t\"loop\",\r\n\t\"low\",\r\n\t\"manifest\",\r\n\t\"marginHeight\",\r\n\t\"marginWidth\",\r\n\t\"max\",\r\n\t\"maxLength\",\r\n\t\"media\",\r\n\t\"metadata\",\r\n\t\"method\",\r\n\t\"min\",\r\n\t\"missingGlyph\",\r\n\t\"multiple\",\r\n\t\"muted\",\r\n\t\"name\",\r\n\t\"noHRef\",\r\n\t\"noResize\",\r\n\t\"noShade\",\r\n\t\"noValidate\",\r\n\t\"nowrap\",\r\n\t\"open\",\r\n\t\"optimum\",\r\n\t\"pattern\",\r\n\t\"ping\",\r\n\t\"placeholder\",\r\n\t\"poster\",\r\n\t\"preload\",\r\n\t\"prompt\",\r\n\t\"radioGroup\",\r\n\t\"readOnly\",\r\n\t\"rel\",\r\n\t\"required\",\r\n\t\"rev\",\r\n\t\"reversed\",\r\n\t\"rows\",\r\n\t\"rowSpan\",\r\n\t\"rules\",\r\n\t\"sandbox\",\r\n\t\"scope\",\r\n\t\"scrolling\",\r\n\t\"seamless\",\r\n\t\"selected\",\r\n\t\"shape\",\r\n\t\"size\",\r\n\t\"sizes\",\r\n\t// \"span\", //*\r\n\t\"spellCheck\",\r\n\t\"src\",\r\n\t\"srcDoc\",\r\n\t\"srcLang\",\r\n\t\"srcSet\",\r\n\t\"standby\",\r\n\t\"start\",\r\n\t\"step\",\r\n\t// \"summary\", //*\r\n\t\"style\",\r\n\t\"tabIndex\",\r\n\t\"target\",\r\n\t\"title\",\r\n\t\"type\",\r\n\t\"useMap\",\r\n\t\"vAlign\",\r\n\t\"value\",\r\n\t\"valueType\",\r\n\t\"width\",\r\n\t\"wrap\"\r\n\t//\"dataA\", //Special explicit \r\n\t//\"citeA\",\r\n\t//\"formA\",\r\n\t//\"labelA\",\r\n\t//\"spanA\",\r\n\t//\"summaryA\"\r\n];\r\n\r\nvar specialAttributes = [\r\n\t[\"quoteCite\",\"cite\"],\r\n\t[\"objectData\",\"data\"],\r\n\t[\"whichForm\",\"form\"],\r\n\t[\"trackLabel\",\"label\"],\r\n\t[\"colSpan\",\"span\"],\r\n\t[\"tableSummary\",\"summary\"],\r\n\t[\"optionLabel\",\"label\"],\r\n\t[\"acceptCharset\",\"accept-charset\"],\r\n]\r\n\r\nvar allEventAttr = [\r\n\t\"onAbort\",\r\n\t\"onBlur\",\r\n\t\"onChange\",\r\n\t\"onInput\",\r\n\t\"onCanPlay\",\r\n\t\"onCantPlayThrough\",\r\n\t\"onClick\",\r\n\t\"onCopy\",\r\n\t\"onContextMenu\",\r\n\t\"onCueChange\",\r\n\t\"onCut\",\r\n\t\"onDblClick\",\r\n\t\"onDrag\",\r\n\t\"onDragEnd\",\r\n\t\"onDragEnter\",\r\n\t\"onDragLeave\",\r\n\t\"onDragOver\",\r\n\t\"onDragStart\",\r\n\t\"onDrop\",\r\n\t\"onDurationChange\",\r\n\t\"onEmptied\",\r\n\t\"onEnded\",\r\n\t\"onError\",\r\n\t\"onFocus\",\r\n\t\"onHashChange\",\r\n\t\"onInvalid\",\r\n\t\"onKeyDown\",\r\n\t\"onKeyPress\",\r\n\t\"onKeyUp\",\r\n\t\"onLoad\",\r\n\t\"onLoadedData\",\r\n\t\"onLoadedMetadata\",\r\n\t\"onLoadStart\",\r\n\t\"onMouseDown\",\r\n\t\"onMouseEnter\",\r\n\t\"onMouseMove\",\r\n\t\"onMouseOut\",\r\n\t\"onMouseOver\",\r\n\t\"onMouseUp\",\r\n\t\"onMouseWheel\",\r\n\t\"onOffline\",\r\n\t\"onOnline\",\r\n\t\"onPageHide\",\r\n\t\"onPagePaste\",\r\n\t\"onPageShow\",\r\n\t\"onPause\",\r\n\t\"onPlay\",\r\n\t\"onPlaying\",\r\n\t\"onPopState\",\r\n\t\"onProgress\",\r\n\t\"onRateChange\",\r\n\t\"onReset\",\r\n\t\"onResize\",\r\n\t\"onScroll\",\r\n\t\"onSearch\",\r\n\t\"onSeeked\",\r\n\t\"onSeeking\",\r\n\t\"onSelect\",\r\n\t\"onStalled\",\r\n\t\"onStorage\",\r\n\t\"onSubmit\",\r\n\t\"onSuspend\",\r\n\t\"onTimeUpdate\",\r\n\t\"onToggle\",\r\n\t\"onUnload\",\r\n\t\"onVolumeChange\",\r\n\t\"onWaiting\",\r\n\t\"onWheel\",\r\n]\r\n\r\nvar i;\r\nfor(i in allTags) createElement(allTags[i]);\r\nfor(i in allAttributes) createAttribute(allAttributes[i]);\r\nfor(i in specialAttributes) {\r\n\tcreateAttribute(specialAttributes[i][1],specialAttributes[i][0]);\r\n}\r\nfor(i in allEventAttr) createAttribute(allEventAttr[i]);\r\n\r\next(\"as\", function<T extends IDotDocument>(dotElement: (...props: any[])=>T): T{\r\n\treturn this;\r\n});\r\n\r\next(\"_getNewDocument\", function(){\r\n\treturn document.createElement(DOCEL);\r\n});\r\n\r\next(\"_getAnInstance\", function(): IDotDocument{\r\n\tif(this.__document || this.__pendingCalls.length > 0) return this;\r\n\telse {\r\n\t\tvar d = new DotDocument(null, this.__classPrefix);\r\n\t\td.__if = this.__if;\r\n\t\treturn d;\r\n\t};\r\n});\r\n\r\next(\"_getLastChildOrNull\", function(): ChildNode{\r\n\tif(this.__document && this.__document.lastChild) return this.__document.lastChild;\r\n\treturn null;\r\n});\r\n\r\n//I'm not sure if this is supported anymore.\r\next(\"getLast\", function(): Node{\r\n\treturn this._getLastChildOrNull();\r\n});\r\next(\"getCurrent\", function(): Node{\r\n\tlet last;\r\n\tswitch(dot[\"__selectionMode\"]){\r\n\t\tcase SELECTOR_MODE:{\r\n\t\t\tlast = this.__document;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t\tcase ATTRIBUTE_MODE:{\r\n\t\t\tlast = this.getLast() || this.__document;\r\n\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\treturn last;\r\n});\r\n\r\n_p.toString = function(){\r\n\tif(this.__document) return this.__document.innerHTML;\r\n\telse return \"\";\r\n};\r\n\r\n_p.ref = function(name){\r\n\tlet l = this.getLast();\r\n\tlet gl = GlobalComponentStack.length;\r\n\tif(l && gl > 0){\r\n\t\tlet c = GlobalComponentStack[gl - 1];\r\n\t\tc.$refs[name] = l;\r\n\t}\r\n\treturn this;\r\n}\r\n\r\n//before is passed in so that attributes can be associated with before's sibling, instead of inheritingParent, the default.\r\next(\"_evalContent\", function(content: DotContent, pendingCalls?: Array<unknown>){\r\n\tif(content == null || content == undefined) return null;\r\n\tif(typeof content === \"string\" || typeof content === \"number\" || typeof content === \"boolean\") { //Raw data\r\n\t\tlet nDot = new DotDocument(this._getNewDocument(), this.__classPrefix);\r\n\t\tnDot.__document.innerHTML = content;\r\n\t\treturn nDot.__document.childNodes;\r\n\t}\r\n\telse if(content instanceof Node) return content;\r\n\telse if(Object.prototype.toString.call( content ) === '[object Array]') { //Array\r\n\t\tlet nDot = new DotDocument(this._getNewDocument(), this.__classPrefix);\r\n\t\tfor(let i = 0; i < (content as Array<unknown>).length; i++){\r\n\t\t\tnDot._appendOrCreateDocument((content as DotContent)[i]);\r\n\t\t}\r\n\t\tif(nDot.__document) return nDot.__document.childNodes;\r\n\t}\r\n\telse if(isF(content)) //Function to evaluate\r\n\t{\r\n\t\treturn this._evalContent((content as (()=>DotContent))(), pendingCalls);\r\n\t}\r\n\telse if(content instanceof Component){\r\n\t\treturn this._evalContent(Component.build(content));\r\n\t}\r\n\telse if(content instanceof DotDocument) { //DOT\r\n\t\tfor(let i = 0; i < content[\"__pendingCalls\"].length; i++){\r\n\t\t\tpendingCalls.push(content[\"__pendingCalls\"][i]);\r\n\t\t}\r\n\t\t\r\n\t\tlet cp = this.__classPrefix;\r\n\t\tfor(let i in content[\"__classedElements\"]){\r\n\t\t\tlet el = content[\"__classedElements\"][i];\r\n\t\t\tif(!cp){\r\n\t\t\t\tthis[\"__classedElements\"].push(el);\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\tel.className = \"dot-\" + str(cp,16) + \"-\" + el.className;\r\n\t\t\t}\r\n\t\t}\r\n\t\tif(content[\"__document\"]) return content[\"__document\"].childNodes; //Return all the nodes in here.\r\n\t}\r\n\t\r\n\treturn null;\r\n});\r\n\r\next(\"_appendOrCreateDocument\", function(content: DotContent, parentEl?: Element, beforeNode?: Node|number){\r\n\tvar T = this;\r\n\t// Validation\r\n;;;\tif(parentEl && beforeNode && isNaN(beforeNode as any) && (beforeNode as Node).parentNode != parentEl) throw \"beforeNode is not in parentEl.\";\r\n\r\n\t// Find the parent, or create one.\r\n\t//Note: the stuff with setting parentEl to beforeNode's parent is due to a very strange bug where this.__document gets set to some phantom document when the wait function is used inside a div like so: DOT.div(DOT.wait(100, \"hello!\")); Try it. )\r\n\tparentEl = parentEl || (beforeNode && isNaN(beforeNode as any) ? (beforeNode as Node).parentNode : null) || T.__document || T._getNewDocument();\r\n\t\r\n\tif(!isNaN(beforeNode as any)){\r\n\t\tbeforeNode = parentEl.childNodes[beforeNode as number];\r\n//;;;\t\tif(!beforeNode) throw \"beforeNode not found.\"; // TODO: reenable this and investigate why it breaks.\r\n\t}\r\n\r\n\t// nd is a dot wrapper for parentEl (allows us to do dot ops on it).\r\n\tvar nd = T.__document === parentEl ? T : new DotDocument(parentEl, T.__classPrefix);\r\n\tnd.__if = T.__if;\r\n\tvar pendingCalls = []; //This will populate with pending calls.\r\n\t\r\n\t// Evaluate the content. This does not add it to the DOM pet.\r\n\tvar eContent;\r\n\tvar cf = isF(content);\r\n\t// If it's a function, we need to consider \r\n\t//if(cf) dot.__currentArgCallback.push({f:content,e:parentEl})\r\n\tif(cf) dot[\"__currentArgCallback\"].push(new ContentArgCallback(parentEl, content as ()=>string));\r\n\ttry{\r\n\t\teContent = nd._evalContent(content, /*parentEl, beforeNode,*/ pendingCalls);\r\n\t}\r\n\tfinally{\r\n\t\tif(cf) dot[\"__currentArgCallback\"].pop();\r\n\t}\r\n\r\n\r\n\t// Pending calls are calls included in the dot element which didn't get consumed and must be propagated up.\r\n\t// This usually includes attributes and waits.\r\n\tfor(var i = 0; i < pendingCalls.length; i++){\r\n\t\tvar call = pendingCalls[i];\r\n\t\t//Three possibilities.\r\n\t\t//1. Use the pending call against the last sibling element, if one exists.\r\n\t\t//2. Otherwise, use it on the current parent, if it's ready.\r\n\t\t//3. Otherwise, save it as a pending call right here. // Don't think this ever happens.\r\n\t\tvar pendingCallTarget = (beforeNode ? ((beforeNode as Node).previousSibling || parentEl /*Since lastChild will be a timeout*/) : null /*1*/) || parentEl.lastChild /*2*/ || parentEl; \r\n\t\tif(pendingCallTarget && (pendingCallTarget as Element).tagName != \"DOCUMENT\"){\r\n\t\t\tif (call.type == \"attr\") {\r\n\t\t\t\tif (!isF(call.params[0])) {\r\n\t\t\t\t\t(pendingCallTarget as Element).setAttribute(call.name, call.params[0]);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// TODO: how do we know it's a valid event?\r\n\t\t\t\t\tlet newName:string = call.name;\r\n\t\t\t\t\tattachEvent((pendingCallTarget as Element), newName, call.params[0], call.arg3);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse if(call.type == \"wait\"){\r\n\t\t\t\tcall.callback();\r\n\t\t\t}\r\n\t\t}\r\n\t\telse{\r\n\t\t\tnd.__pendingCalls.push(call); /*3*/\r\n\t\t}\r\n\t}\r\n\r\n\t// Append content to the current document.\r\n\tif(eContent !== null && eContent !== undefined){\r\n\t\tif( eContent instanceof NodeList ) {\r\n\t\t\t//for(var i = 0; i < eContent.length; i++){\r\n\t\t\twhile(eContent.length > 0){\r\n\t\t\t\tif(beforeNode) parentEl.insertBefore(eContent[0], beforeNode as Node);\r\n\t\t\t\telse parentEl.appendChild(eContent[0]);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse{\r\n\t\t\tif(beforeNode) parentEl.insertBefore(eContent, beforeNode as Node);\r\n\t\t\telse parentEl.appendChild(eContent);\r\n\t\t}\r\n\t}\r\n\t\r\n\treturn nd;\r\n\t//return this;\r\n});\r\n\r\next(\"el\", function(tag: string, content?: DotContent): IDotElementDocument<IDotGenericElement>{\r\n\tvar T = this;\r\n\tvar ne = document.createElement(tag); \r\n\tvar nDoc = T.__document || T._getNewDocument();\r\n\tnDoc.appendChild(ne);\r\n\tif(content) T._appendOrCreateDocument(content, ne);\r\n\tvar ret = T.__document === nDoc ? T : new DotDocument(nDoc, T.__classPrefix);\r\n\tif(content && content instanceof DotDocument) for(var i in content[\"__classedElements\"]) ret.__classedElements.push(content[\"__classedElements\"][i]);\r\n\r\n\tdot[\"__selectionMode\"] = ATTRIBUTE_MODE;\r\n\r\n\treturn ret;\r\n});\r\n\r\next(\"h\", function(content): IDotDocument{\r\n\tvar T = this;\r\n\tvar hDoc = T._getNewDocument();\r\n\tvar hDot = new DotDocument(hDoc, T.__classPrefix);\r\n\t//if(typeof content === \"string\" || typeof content === \"number\" || typeof content === \"boolean\") hDoc.innerHTML = content; //Raw data\r\n\thDot._appendOrCreateDocument(content)\r\n\t\r\n\tvar nDoc = T.__document || T._getNewDocument();\r\n\twhile(hDoc.childNodes.length > 0){\r\n\t\tnDoc.appendChild(hDoc.childNodes[0]);\r\n\t}\r\n\treturn T.__document === nDoc ? T : new DotDocument(nDoc, T.__classPrefix); \r\n});\r\n\r\next(\"t\", function(content): IDotDocument{\r\n\tvar textNode = document.createTextNode(content);\r\n\tvar nDoc = this.__document || this._getNewDocument();\r\n\tnDoc.appendChild(textNode);\r\n\treturn new DotDocument(nDoc, this.__classPrefix);\r\n});\r\n\r\next(\"attr\", function(attr, value, arg3?){\r\n\tvar T = this;\r\n\tif (isF(value)) { // events.\r\n\t\tif (attr.indexOf(\"on\") == 0 && allEventAttr.indexOf(attr) != -1) {\r\n\t\t\tattr = attr.substring(2).toLowerCase();\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// Unrecognized event.\r\n\t\t\tdot[\"__anonAttrFuncs\"][_anonFuncCounter] = (value);\r\n\t\t\tvalue = \"dot.__anonAttrFuncs[\" + (_anonFuncCounter++) + \"](arguments[0]);\"\r\n\t\t\t// attr = attr.substring(2);\r\n\t\t}\r\n\t}\r\n\r\n\tif(T.__document) {\r\n\t\tvar cn = T.__document.childNodes;\r\n\t\tvar last = cn[cn.length - 1];\r\n\t\tif(last && last.setAttribute){\r\n\t\t\tif (!isF(value)) {\r\n\r\n\t\t\t\t// Objects (except for the css builder :/)\r\n\t\t\t\tif(typeof value == \"object\" && !(value instanceof _Builder)){\r\n\t\t\t\t\tvar originalValue = value;\r\n\t\t\t\t\tvar valueSetter = function(){\r\n\t\t\t\t\t\tvar str = \"\";\r\n\t\t\t\t\t\teachK(originalValue, function(k,v){\r\n\t\t\t\t\t\t\tv = isF(v) ? v() : v;\r\n\t\t\t\t\t\t\tif(!v) return;\r\n\t\t\t\t\t\t\tstr += \" \" + k\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\treturn str.substring(1);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//dot.__currentArgCallback.push({f:valueSetter,e:parentEl,a:attr})\r\n\t\t\t\t\tdot[\"__currentArgCallback\"].push(new AttrArgCallback(last, attr, valueSetter));\r\n\t\t\t\t\tvalue = valueSetter();\r\n\t\t\t\t\tdot[\"__currentArgCallback\"].pop();\r\n\t\t\t\t}\r\n\r\n\t\t\t\tvar eValue = last.getAttribute(attr); //Appends the new value to any existing value.\r\n\t\t\t\tif (!eValue) eValue = \"\"; else eValue += \" \";\r\n\t\t\t\tlast.setAttribute(attr, eValue + (value === undefined ? attr : value)); //||attr is for self-explaining attributes\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tattachEvent(last, attr, value, arg3);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\telse{\r\n\t\t// TODO: should probably remove pending calls. This has turned out to be an anti-pattern.\r\n\t\tvar pD = T._getAnInstance();\r\n\t\t//if(!pD.__pendingCalls.length > 0) pD.__pendingCalls = [];\r\n\t\tpD.__pendingCalls.push({ type: \"attr\", name: attr, params: [value], arg3: arg3 });\r\n\t\treturn pD;\r\n\t}\r\n\treturn T;\r\n});\r\n\r\next(\"_appendSetElement\", function(targetId: string, appendMode){\r\n\tvar T = this;\r\n\tif(!targetId) {ERR(\"A\", targetId); return T;}\r\n\tvar destination = document.getElementById(targetId);\r\n\tif(!destination) {ERR(\"F\", targetId); return T;}\r\n\tif(T.__document) {\r\n\t\tif(!appendMode) destination.innerHTML = \"\";\r\n\t\twhile(T.__document.childNodes.length > 0) destination.appendChild(T.__document.childNodes[0]);\r\n\t}\r\n\treturn T;\r\n});\r\n\r\next(\"iterate\", function(iterations: number, callback: (i: number)=>DotContent){\r\n\tvar target = this;\r\n\t// var copycontent = null;\r\n\r\n\t// Not sure what this was used for before the TS port.\r\n\t// var content = callback;\r\n\t// if(content instanceof DotDocument) {\r\n\t// \tcopycontent = content.__document.cloneNode(true);\r\n\t// }\r\n\t\r\n\tfor(var i = 0; i < iterations; i++){\r\n\t\tlet content: DotContent = null;\r\n\t\tif(isF(callback)) content = callback(i);\r\n\t\t// if(copycontent) content.__document = copycontent.cloneNode(true);\r\n\t\ttarget = target._appendOrCreateDocument(content);\r\n\t}\r\n\t\r\n\treturn target;\r\n});\r\n\r\next(\"each\", function(array, callback, forceNoDeferred){\r\n\tvar target = this;\r\n\r\n\tif(isF(array)){\r\n\t\tif(!forceNoDeferred){\r\n\t\t\treturn target.defer(function(v){\r\n\t\t\t\tv.each(array, callback, true);\r\n\t\t\t});\r\n\t\t}\r\n\t\t// console.log(this.__document);\r\n\t\tvar func = array;\r\n\t\t//target = target._appendOrCreateDocument();\r\n\t\t// dot.__currentArgCallback.push({f:callback,d:target}); \r\n\t\tdot[\"__currentArgCallback\"].push(new ArrayArgCallback(target, callback));\r\n\t\ttry{\r\n\t\t\tarray = func();\r\n\t\t}\r\n\t\tfinally{\r\n\t\t\tdot[\"__currentArgCallback\"].pop();\r\n\t\t}\r\n\t}\r\n\r\n\tif(array instanceof Array || array instanceof ObservableArray){\r\n\t\tfor(var i = 0; i < (array as Array<any>).length; i++){\r\n\t\t\ttarget = target._appendOrCreateDocument(callback(array[i], i));\r\n\t\t}\r\n\t}\r\n\telse{\r\n\t\tvar keys = Object.keys(array);\r\n\t\tfor(var i = 0; i < keys.length; i++){\r\n\t\t\tvar k = keys[i];\r\n\t\t\ttarget = target._appendOrCreateDocument(callback(array[k], k));\r\n\t\t}\r\n\t}\r\n\treturn target;\r\n});\r\n\r\n\r\n//SVG\r\n//_p.svg = function(){ERR(\"S\")};\r\n\r\n//Data is a special attribute.\r\n_p.customData = function(suffix, value){\r\n\treturn this.attr(\"data-\" + suffix, value);\r\n};\r\n\r\n_p.class = function(value){\r\n\tvar cp = this.__classPrefix;\r\n\t// This handles legitimate class prefixes. If we are dealing with a compted class list, each class list name is prefixed.\r\n\tif(cp){\r\n\t\tvar prefix = \"dot-\" + str(cp, 16) + \"-\";\r\n\t\tif(typeof value == \"string\") value = prefix + value;\r\n\t\telse if(typeof value == \"object\"){\r\n\t\t\tvar v2 = {};\r\n\t\t\teachK(value, function(k,v){\r\n\t\t\t\tv2[prefix + k] = v;\r\n\t\t\t});\r\n\t\t\tvalue = v2;\r\n\t\t}\r\n\t}\r\n\telse\r\n\t{\r\n\t\tvar el = this.getLast();\r\n\t\tel && this.__classedElements.push(el);\r\n\t}\r\n\treturn this.attr(\"class\", value);\r\n}\r\n\r\n_p.play = function(){\r\n\tlet last: HTMLVideoElement|HTMLAudioElement = this.getCurrent();\r\n\tlast.play && last.play();\r\n\treturn this;\r\n}\r\n_p.pause = function(resetTime){\r\n\tlet last: HTMLVideoElement|HTMLAudioElement = this.getCurrent();\r\n\tlast.pause && last.pause();\r\n\tif(resetTime) last.currentTime = 0;\r\n\treturn this;\r\n}\r\n_p.stop = function(){\r\n\treturn this.pause(true);\r\n}\r\n\r\n/**\r\n * Sets the value of an input or texterea.\r\n * @param {string} value - The value to be set.\r\n */\r\n_p.setVal = function(value): IDotElementDocument<IDotGenericElement>{\r\n\tlet last = this.getCurrent();\r\n\t\r\n\tif(!last) return this;\r\n\t\r\n\t// console.log(\"CHECKVALUE\", value);\r\n\t//if ( typeof value === \"number\" ) val += \"\";\r\n\tif ( Array.isArray && Array.isArray( value ) || !Array.isArray && value.join ) {\r\n\t\tvalue = value.join(\"\");\r\n\t}\r\n\telse if(value == null){\r\n\t\tvalue = \"\";\r\n\t}\r\n\r\n\tif ( last.type == \"checkbox\" ) {\r\n\t\tlast.checked = value ? true : false;\r\n\t}\r\n\telse if ( last.type == \"radio\" ) {\r\n\t\tlast.checked = value ? true : false;\r\n\t}\r\n\telse if ( last.tagName == \"OPTION\" ) {\r\n\t\tlast.selected = value ? true : false;\r\n\t}\r\n\telse {\r\n\t\t// console.log(\"UPDATING VALUE!!\", value, last, last.value);\r\n\t\tlast.value = value;\r\n\t\t// console.log(\"UPDATED!!\", value, last, last.value);\r\n\t}\r\n\r\n\treturn this;\r\n};\r\n\r\n_p.getVal = function(){\r\n\tvar element: Element = this.__lastNode || this.__document;\r\n\tif(!element || element.nodeType !== 1) return undefined;\r\n\r\n\tif ( element[\"type\"] == \"checkbox\" ) {\r\n\t\treturn element[\"checked\"] ? true : false;\r\n\t}\r\n\telse if ( element[\"type\"] == \"radio\" ) {\r\n\t\treturn element[\"checked\"] ? true : false;\r\n\t}\r\n\telse if ( element.tagName == \"OPTION\" ) {\r\n\t\treturn element[\"selected\"] ? true : false;\r\n\t}\r\n\telse {\r\n\t\treturn element[\"value\"];\r\n\t}\r\n};\r\n\r\next(\"when\", function(condition, contentCallback, ar){\r\n\tvar T = this._getAnInstance();\r\n\tif(isF(condition)){\r\n\t\tif(!ar) ar = T.__conditionalArray = [condition];\r\n\t\tvar l = ar.length - 1;\r\n\t\tvar totalCondition = function(){\r\n\t\t\tfor(var i = 0; i < l; i++){\r\n\t\t\t\tif(!!ar[i]()) {\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn !!condition();\r\n\t\t}\r\n\t\tT = _conditionalBlock(T, totalCondition, ar, contentCallback);\r\n\t\t// ar.push(condition);\r\n\t}\r\n\telse{\r\n\t\t// Old:\r\n\t\tif(!!condition) {\r\n\t\t\tT = T._appendOrCreateDocument(isF(contentCallback) ? contentCallback() : contentCallback);\r\n\t\t\tT.__if = true;\r\n\t\t}\r\n\t\telse{\r\n\t\t\tT.__if = false;\r\n\t\t}\r\n\t}\r\n\treturn T;\r\n});\r\n\r\next(\"otherwiseWhen\", function(condition, callback): IDotDocument{\r\n\tif(isF(condition)){\r\n\t\tvar ar = this.__conditionalArray;\r\n\t\tif(!ar) ERR(\"MC\");\r\n\t\t//var l = ar.length - 1;\r\n\t\t// var newCondition = function(){\r\n\t\t// \tfor(var i = 0; i <= l; i++){\r\n\t\t// \t\tif(ar[i]()) return false;\r\n\t\t// \t}\r\n\t\t// \treturn !!condition();\r\n\t\t// }\r\n\t\tar.push(condition);\r\n\t\treturn this.when(condition, callback, ar);\r\n\t}\r\n\telse{\r\n\t\tif(!this.__if){\r\n\t\t\treturn this.when(condition, callback);\r\n\t\t}\r\n\t}\r\n\treturn this;\r\n});\r\n\r\next(\"otherwise\", function(callback): IDotDocument{\r\n\tvar ar = this.__conditionalArray;\r\n\tif(ar){\r\n\t\t//var l = ar.length - 1;\r\n\t\tvar newCondition = function(){\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\tar.push(newCondition);\r\n\t\treturn this.when(newCondition, callback, ar);\r\n\t}\r\n\telse if(!this.__if){\r\n\t\tthis.__if = null;\r\n\t\treturn this._getAnInstance()._appendOrCreateDocument(callback);\r\n\t}\r\n\treturn this;\r\n});\r\n\r\next(\"script\", function(callback): IDotDocument{\r\n\tvar last = this.getLast();\r\n\tsT(function(){callback(last);}, 0);\r\n\treturn this;\r\n});\r\n\r\next(\"wait\", function(timeout, callback): IDotDocument{\r\n\tvar timeoutDot = this.el(DEFEL);\r\n\tvar timeoutNode = timeoutDot.__document.lastChild;\r\n\r\n\tsT(()=>{\r\n\t\ttimeoutDot._appendOrCreateDocument(callback, null, timeoutNode);\r\n\t\ttimeoutNode.parentElement.removeChild(timeoutNode);\r\n\t}, timeout);\r\n\t\r\n\treturn timeoutDot;\r\n\t// Ideally something like this:\r\n\t//return this.defer(function(d){d.h(callback)}, timeout);\r\n});\r\n\r\next(\"defer\", function(callback){\r\n\tif(!isF(callback)) ERR(\"XF\", \"defer\");\r\n\tvar deferDot = this.el(DEFEL);\r\n\tvar deferNode = deferDot.__document.lastChild;\r\n\r\n\tsT(()=>{\r\n\t\tcallback(dot(deferNode.parentElement));\r\n\t\tdeferNode.parentElement.removeChild(deferNode);\r\n\t}, 0);\r\n\t\r\n\treturn deferDot;\r\n});\r\n\r\n\r\next(\"empty\", function(){\r\n\tif(this.__document){\r\n\t\t// Build a queue of items to remove.\r\n\t\tvar queue = [this.__document];\r\n\t\tvar firstQ = true;\r\n\t\tvar stack = [];\r\n\t\twhile(queue.length > 0)\r\n\t\t{\r\n\t\t\tvar current = queue.shift();\r\n\t\t\tif(current.childNodes.length > 0){\r\n\t\t\t\tfor(var i = 0; i < current.childNodes.length; i++){\r\n\t\t\t\t\tqueue.push(current.childNodes[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t!firstQ && stack.push(current);\r\n\t\t\tfirstQ = false;\r\n\r\n\t\t}\r\n\t\twhile(stack.length > 0){\r\n\t\t\tdeleteElement(stack.pop());\r\n\t\t}\r\n\t}\r\n\t// Drop all the other nodes (like text)\r\n\t// Text seems to get deleted even without this code :).\r\n\t//while (this.__document.firstChild) {\r\n\t//\tthis.__document.removeChild(this.__document.firstChild);\r\n\t//}\r\n\r\n\treturn this;\r\n});\r\n\r\next(\"remove\", function(){\r\n\tthis.empty();\r\n\tdeleteElement(this.__document);\r\n});\r\n\r\next(\"scopeClass\", function(prefix: number|string|null, content: DotContent){\r\n\tif(prefix == null){\r\n\t\tprefix = ClassPrefix.next;\r\n\t}\r\n\tvar T = this;\r\n\r\n\t//T.__classPrefix = prefix || classPrefix.next;\r\n\t//doc.__oldClassPrefix.push(prefix);\r\n\tT.__classPrefix = prefix;\r\n\tvar ret = T.h(content);\r\n\tT.__classPrefix = 0;\r\n\t//doc.__oldClassPrefix.pop();\r\n\t//T.__classPrefix = oldCp;\r\n\treturn ret;\r\n});\r\n\r\n_p.bindTo = function(prop: any){\r\n\tlet lastProp: string = dot[\"__lastProp\"];\r\n\tlet lastIndex: number = dot[\"__lastIndex\"];\r\n\tlet lastComponent: Component = dot[\"__lastComponent\"];\r\n\r\n\tlet last = this.getLast();\r\n\t//var noListener = true;\r\n\tlet _value = lastComponent.props[lastProp];\r\n\tif(lastIndex != null && lastIndex != undefined) _value = _value[lastIndex];\r\n\r\n\tlet ret = this.setVal(_value);\r\n\r\n\t// Binding from the input to the prop.\r\n\tattachEvent(last, \"change\", function(e){lastComponent.props[lastProp] = dot(last).as(dot.input).getVal();})\r\n\r\n\tlastComponent[\"__propContainer\"].bindings[lastProp].push({\r\n\t\telement: last\r\n\t});\r\n\r\n\t//var noListener = false;\r\n\treturn ret;\r\n};\r\n\r\n// ext(\"resetScopeClass\", function(){\r\n// \tClassPrefix.reset();\r\n// });\r\n\r\ndot.resetScopeClass = function(){\r\n\tClassPrefix.reset();\r\n\treturn this;\r\n}\r\n\r\n// _p.bindTo = function(binding){\r\n// \tvar last = this.getLast();\r\n// \t//var noListener = true;\r\n// \tvar ret = this.setVal(binding.value);\r\n// \tattachEvent(last, \"change\", function(e){binding.value = this.getVal();})\r\n// \tbinding.subscribe(last);\r\n// \t//var noListener = false;\r\n// \treturn ret;\r\n// }\r\n\r\n// export DotDocument;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\ndot.css = dotcss;\r\ndot.bus = eventBus;\r\n\r\n// dot.component = addComponent;\r\n// TODO: might remove this in v4+\r\n// dot.removeComponent = removeComponent;\r\n\r\n//Fill in all the other fields.\r\n//if(Object.create) dot.prototype = Object.create(_p);\r\n// dot.prototype.constructor = dot;\r\ndot[\"__currentArgCallback\"] = [];\r\ndot[\"__document\"] = null;\r\ndot[\"__if\"] = null;\r\ndot[\"__pendingCalls\"] = [];\r\ndot[\"__anonAttrFuncs\"] = {};\r\n\r\n// TODO: these may already exist?\r\n//dot.data = DotDocument.prototype.data;\r\n//dot.dataA = DotDocument.prototype.dataA;\r\n//dot.cite = DotDocument.prototype.cite;\r\n//dot.form = DotDocument.prototype.form;\r\n\r\nexport default dot;","\r\nimport dot from \"./dot\";\r\nimport Component from \"./component\";\r\n\r\ndot.version = \"5.2.5\";\r\ndot.Component = Component;\r\n\r\n/*! DOThtml (c) Joshua Sideris | dothtml.org/license */\r\n\r\n/**\r\n * Changes:\r\n * - Converted to typescript.\r\n * - Removed if, IF, elseif, ELSEIF, else, and ELSE functions, replacing them with when, otherwiseWhen, and otherwise. Improves compatibility for IE 8.\r\n * - Also took some shortcuts that may not have polyfill with older browsers. Will get back to adding reverse compatibility in a future update.\r\n * - Created several type interfaces.\r\n * - Changed the names to HTML tags and attributes to pascal case. \r\n * - Removed most E and A suffixes from tag and attribute names.\r\n * - Removed special selection behavior for overlapping HTML names. Instead, all conflicts were renamed.\r\n * - Added attribute-element associations.\r\n * - Added `as` function for casting (mostly useful when adding attributes via the dot selector).\r\n * - Started the long process of adding comment documentation for custom built-in functions.\r\n * - Re-imagined components from the ground up. Components are now classes that inherit from `Component`. Plays very nicely with TS and ES6.\r\n * - Added interfaces for new methods that can be invoked on various elements. For instance, play, pause, and stop on audio and video elements.\r\n * - Updated scopeClass method to put the optional parameter last.\r\n * - Fixed some color bugs.\r\n * - Added a filter builder.\r\n * - Added flex gap.\r\n * - Added \"auto\" as an accepted value to many length types.\r\n * - Made textIndent a numeric prop.\r\n */\r\n\r\n\r\n\r\nexport default dot;\r\nexport {default as DotComponent} from \"./component\";\r\nexport {IDotElement} from \"./i-dot\";\r\nexport {default as IDotCss} from \"./styling/i-dotcss\";\r\n\r\n// https://www.youtube.com/JoshSideris\r\n","var ERR = function(c: string, ...p: Array<string>){throw \"DOThtml usage error code \" + c + \". Use an unminified version for more information.\"};\r\n;;;ERR = function(c: string, ...p: Array<string>){\r\n\tp = p || [];\r\n\tthrow {\r\n\t\t\"A\": `Can't append \"${p[0]}\".`,\r\n\t\t// \"CC\": \"The name \\\"\" + p[0] + \"\\\" conflicts with an existing DOThtml function.\",\r\n\t\t\"CB\": \"Unable to build the same component twice. Ensure each component is only used once.\",\r\n\t\t\"CU\": \"Invalid usage: a component should at least have a name and a builder function.\",\r\n\t\t\"C#\": `Component \"${p[0]}\" must return exactly one child node.`,\r\n\t\t\"F\": `Element \"${p[0]}\" not found.`,\r\n\t\t\"MC\": \"Can't mix static conditions with dynamic conditional rendering.\",\r\n\t\t\"R\": \"Router must be passed a JSON object that contains an 'routes' array containing objects with a 'path', 'title', and 'component'.\",\r\n\t\t\"S\": \"SVG is not supported by DOThtml.\",\r\n\t\t\"UE\": `Unknown event name \"${p[0]}\".`,\r\n\t\t\"XS\": \"Expected a string.\",\r\n\t\t\"XF\": `Expected a function in \"${p[0]}\".`,\r\n\t\t//\"SF\": \"The style property of a component must be a string, a function that returns a string, or a JSON collection of those things.\"\r\n\t}[c] || \"Unknown error.\";\r\n\t\r\n};\r\n\r\nexport default ERR;","import { eachK, isF } from \"./dot-util\";\r\n\r\nclass _EventBus{\r\n private _callbacks = {};\r\n \r\n _checkAddEvent = function(event){\r\n var e = this._callbacks[event];\r\n if(!e) this._callbacks[event] = e = [];\r\n return e;\r\n \r\n }\r\n \r\n on (event, callback){\r\n var e = this._checkAddEvent(event);\r\n e.push(callback);\r\n }\r\n \r\n off (event, callback){\r\n var e = this._checkAddEvent(event);\r\n for(var i = e.length -1; e >=0; i--){\r\n if(e[i] == callback) e.splice(i, 1);\r\n }\r\n }\r\n \r\n emit (event, ...args){\r\n var e = this._checkAddEvent(event);\r\n eachK(e, function(k, v){\r\n v(...args);\r\n });\r\n }\r\n \r\n flush (event){\r\n this._checkAddEvent(event).length = 0;\r\n }\r\n}\r\n\r\n\r\nconst EventBus = new _EventBus();\r\nexport default EventBus;","\r\n\r\nexport default function ObservableArray(items/*, ...target: Array<any>*/) {\r\n var _self = this,\r\n _array = [],\r\n _handlers = {\r\n itemadded: [],\r\n itemremoved: [],\r\n itemset: [],\r\n read: []\r\n };\r\n\r\n function defineIndexProperty(index) {\r\n if (!(index in _self)) {\r\n Object.defineProperty(_self, index, {\r\n configurable: true,\r\n enumerable: true,\r\n get: function() {\r\n raiseEvent({\r\n type: \"read\",\r\n index: index,\r\n item: _array[index]\r\n });\r\n return _array[index];\r\n },\r\n set: function(v) {\r\n if(_array[index] != v){\r\n _array[index] = v;\r\n raiseEvent({\r\n type: \"itemset\",\r\n index: index,\r\n item: v\r\n });\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n function raiseEvent(event) {\r\n _handlers[event.type].forEach(function(h) {\r\n h.call(_self, event);\r\n });\r\n }\r\n\r\n Object.defineProperty(_self, \"addEventListener\", {\r\n configurable: false,\r\n enumerable: false,\r\n writable: false,\r\n value: function(eventName, handler) {\r\n eventName = (\"\" + eventName).toLowerCase();\r\n if (!(eventName in _handlers)) throw new Error(\"Invalid event name.\");\r\n if (typeof handler !== \"function\") throw new Error(\"Invalid handler.\");\r\n _handlers[eventName].push(handler);\r\n }\r\n });\r\n\r\n Object.defineProperty(_self, \"removeEventListener\", {\r\n configurable: false,\r\n enumerable: false,\r\n writable: false,\r\n value: function(eventName, handler) {\r\n eventName = (\"\" + eventName).toLowerCase();\r\n if (!(eventName in _handlers)) throw new Error(\"Invalid event name.\");\r\n if (typeof handler !== \"function\") throw new Error(\"Invalid handler.\");\r\n var h = _handlers[eventName];\r\n var ln = h.length;\r\n while (--ln >= 0) {\r\n if (h[ln] === handler) {\r\n h.splice(ln, 1);\r\n }\r\n }\r\n }\r\n });\r\n\r\n Object.defineProperty(_self, \"push\", {\r\n configurable: false,\r\n enumerable: false,\r\n writable: false,\r\n value: function() {\r\n var index;\r\n for (var i = 0, ln = arguments.length; i < ln; i++) {\r\n index = _array.length;\r\n _array.push(arguments[i]);\r\n defineIndexProperty(index);\r\n raiseEvent({\r\n type: \"itemadded\",\r\n index: index,\r\n item: arguments[i]\r\n });\r\n }\r\n return _array.length;\r\n }\r\n });\r\n\r\n Object.defineProperty(_self, \"pop\", {\r\n configurable: false,\r\n enumerable: false,\r\n writable: false,\r\n value: function() {\r\n if (_array.length > -1) {\r\n var index = _array.length - 1,\r\n item = _array.pop();\r\n delete _self[index];\r\n raiseEvent({\r\n type: \"itemremoved\",\r\n index: index,\r\n item: item\r\n });\r\n return item;\r\n }\r\n }\r\n });\r\n\r\n Object.defineProperty(_self, \"unshift\", {\r\n configurable: false,\r\n enumerable: false,\r\n writable: false,\r\n value: function() {\r\n for (var i = 0, ln = arguments.length; i < ln; i++) {\r\n _array.splice(i, 0, arguments[i]);\r\n defineIndexProperty(_array.length - 1);\r\n raiseEvent({\r\n type: \"itemadded\",\r\n index: i,\r\n item: arguments[i]\r\n });\r\n }\r\n // Not sure why this was here. Nothing should be getting set.\r\n // for (; i < _array.length; i++) {\r\n // raiseEvent({\r\n // type: \"itemset\",\r\n // index: i,\r\n // item: _array[i]\r\n // });\r\n // }\r\n return _array.length;\r\n }\r\n });\r\n\r\n Object.defineProperty(_self, \"shift\", {\r\n configurable: false,\r\n enumerable: false,\r\n writable: false,\r\n value: function() {\r\n if (_array.length > -1) {\r\n var item = _array.shift();\r\n delete _self[_array.length];\r\n raiseEvent({\r\n type: \"itemremoved\",\r\n index: 0,\r\n item: item\r\n });\r\n return item;\r\n }\r\n }\r\n });\r\n\r\n Object.defineProperty(_self, \"splice\", {\r\n configurable: false,\r\n enumerable: false,\r\n writable: false,\r\n value: function(index, howMany /*, element1, element2, ... */ ) {\r\n var removed = [],\r\n item,\r\n pos;\r\n\r\n index = index == null ? 0 : index < 0 ? _array.length + index : index;\r\n\r\n howMany = howMany == null ? _array.length - index : howMany > 0 ? howMany : 0;\r\n\r\n var removeEvents = [];\r\n while (howMany--) {\r\n item = _array.splice(index, 1)[0];\r\n removed.push(item);\r\n delete _self[_array.length];\r\n removeEvents.push({\r\n type: \"itemremoved\",\r\n index: index + removed.length - 1,\r\n item: item\r\n });\r\n }\r\n for(var i = removeEvents.length - 1; i >= 0; i--){\r\n raiseEvent(removeEvents[i]);\r\n }\r\n for (var i = 2, ln = arguments.length; i < ln; i++) {\r\n _array.splice(index, 0, arguments[i]);\r\n defineIndexProperty(_array.length - 1);\r\n raiseEvent({\r\n type: \"itemadded\",\r\n index: index,\r\n item: arguments[i]\r\n });\r\n index++;\r\n }\r\n\r\n return removed;\r\n }\r\n });\r\n \r\n Object.defineProperty(_self, \"length\", {\r\n configurable: false,\r\n enumerable: false,\r\n get: function() {\r\n return _array.length;\r\n },\r\n set: function(value) {\r\n var n = Number(value);\r\n var length = _array.length;\r\n if (n % 1 === 0 && n >= 0) { \r\n if (n < length) {\r\n _self.splice(n);\r\n } else if (n > length) {\r\n _self.push.apply(_self, new Array(n - length));\r\n }\r\n } else {\r\n throw new RangeError(\"Invalid array length\");\r\n }\r\n _array.length = n;\r\n return value;\r\n }\r\n });\r\n \r\n Object.getOwnPropertyNames(Array.prototype).forEach(function(name) {\r\n if (!(name in _self)) {\r\n Object.defineProperty(_self, name, {\r\n configurable: false,\r\n enumerable: false,\r\n writable: false,\r\n value: Array.prototype[name]\r\n });\r\n }\r\n });\r\n\r\n if (items instanceof Array) {\r\n _self.push.apply(_self, items);\r\n }\r\n}\r\n\r\nObservableArray.prototype.length = 0;\r\n\r\n/**\r\n\r\n(function testing() {\r\n\r\n var x = new ObservableArray([\"a\", \"b\", \"c\", \"d\"]);\r\n\r\n console.log(\"original array: %o\", x.slice());\r\n\r\n x.addEventListener(\"itemadded\", function(e) {\r\n console.log(\"Added %o at index %d.\", e.item, e.index);\r\n });\r\n\r\n x.addEventListener(\"itemset\", function(e) {\r\n console.log(\"Set index %d to %o.\", e.index, e.item);\r\n });\r\n\r\n x.addEventListener(\"itemremoved\", function(e) {\r\n console.log(\"Removed %o at index %d.\", e.item, e.index);\r\n });\r\n \r\n console.log(\"popping and unshifting...\");\r\n x.unshift(x.pop());\r\n\r\n console.log(\"updated array: %o\", x.slice());\r\n\r\n console.log(\"reversing array...\");\r\n console.log(\"updated array: %o\", x.reverse().slice());\r\n\r\n console.log(\"splicing...\");\r\n x.splice(1, 2, \"x\");\r\n console.log(\"setting index 2...\");\r\n x[2] = \"foo\";\r\n\r\n console.log(\"setting length to 10...\");\r\n x.length = 10;\r\n console.log(\"updated array: %o\", x.slice());\r\n\r\n console.log(\"setting length to 2...\");\r\n x.length = 2;\r\n\r\n console.log(\"extracting first element via shift()\");\r\n x.shift();\r\n\r\n console.log(\"updated array: %o\", x.slice());\r\n\r\n})();\r\n\r\n */","import { floatRegex } from \"../../dot-util\";\r\nimport CssDataType from \"./css-data-type\";\r\n\r\nexport default class CssAngle extends CssDataType{\r\n\tangle: number;\r\n\tunits: string;\r\n\tconstructor(value: string|number){\r\n\t\tsuper(\"angle\");\r\n\t\tvalue = value || \"0deg\";\r\n\t\tif(!isNaN(value as number)) value = `${Math.round(value as number)}deg`;\r\n\t\tthis.angle = Number((value as string).match(floatRegex)[0]);\r\n\t\tthis.units = (value as string).split(floatRegex)[1] || \"deg\";\r\n\t}\r\n\r\n\ttoString(){\r\n\t\treturn this.angle + this.units;\r\n\t}\r\n}","import CssDataType from \"./css-data-type\";\r\n\r\nexport default class CssColor extends CssDataType{\r\n\tr: number;\r\n\tg: number;\r\n\tb: number;\r\n\ta: number;\r\n\tconstructor(value){\r\n\t\tsuper(\"color\");\r\n\t\tthis.r = 0;\r\n\t\tthis.g = 0;\r\n\t\tthis.b = 0;\r\n\t\tthis.a = 1;\r\n\r\n\t\t// This is typically the way dothtml passes in values to colors. Flatten.\r\n\t\tif(Array.isArray(value) && value.length == 1) value = value[0];\r\n\r\n\t\tif(typeof value == \"number\") {\r\n\t\t\tthis.b = value & 0xFF;\r\n\t\t\tvalue >>= 8;\r\n\t\t\tthis.g = value & 0xFF;\r\n\t\t\tvalue >>= 8;\r\n\t\t\tthis.r = value & 0xFF;\r\n\t\t}\r\n\t\telse if(typeof value == \"string\") {\r\n\t\t\t// value = value[0];\r\n\t\t\tif(value == \"\" || value == \"none\" || value == \"initial\" || value == \"inherit\"){} //Nothing more needs to be done.\r\n\t\t\telse if(value[0] == \"#\"){\r\n\t\t\t\tvar cH = value.split(\"#\")[1];\r\n\t\t\t\tif(cH.length == 3){\r\n\t\t\t\t\tthis.r = Number(\"0x\" + cH[0] + \"\" + cH[0]);\r\n\t\t\t\t\tthis.g = Number(\"0x\" + cH[1] + \"\" + cH[1]);\r\n\t\t\t\t\tthis.b = Number(\"0x\" + cH[2] + \"\" + cH[2]);\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse if(cH.length == 6){\r\n\t\t\t\t\tthis.r = Number(\"0x\" + cH[0] + \"\" + cH[1]);\r\n\t\t\t\t\tthis.g = Number(\"0x\" + cH[2] + \"\" + cH[3]);\r\n\t\t\t\t\tthis.b = Number(\"0x\" + cH[4] + \"\" + cH[5]);\r\n\t\t\t\t}\r\n\t\t\t\t//else throw value + \" is not a valid color\"; //or just stick with black.\r\n\t\t\t}\r\n\t\t\telse if(value.toLowerCase().indexOf(\"rgb\") === 0){\r\n\t\t\t\t//This also handles rgba.\r\n\t\t\t\tvar cData = value.split(\"(\")[1];\r\n\t\t\t\tcData = cData.split(\")\")[0];\r\n\t\t\t\tvar cDataItems = cData.split(\",\");\r\n\t\t\t\tif(cDataItems.length == 3 || cDataItems.length == 4){\r\n\t\t\t\t\tthis.r = Number(cDataItems[0]);\r\n\t\t\t\t\tthis.g = Number(cDataItems[1]);\r\n\t\t\t\t\tthis.b = Number(cDataItems[2]);\r\n\t\t\t\t\tthis.a = Number(cDataItems[3] || 1);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\tvar r = 0;\r\n\t\t\t\tvar g = 0;\r\n\t\t\t\tvar b = 0;\r\n\t\t\t\tswitch(value.toLowerCase()){\r\n\t\t\t\t\tcase 'aliceblue':r=0xF0;g=0xF8;b=0xFF;break;\r\n\t\t\t\t\tcase 'antiquewhite':r=0xFA;g=0xEB;b=0xD7;break;\r\n\t\t\t\t\tcase 'aqua':r=0x00;g=0xFF;b=0xFF;break;\r\n\t\t\t\t\tcase 'aquamarine':r=0x7F;g=0xFF;b=0xD4;break;\r\n\t\t\t\t\tcase 'azure':r=0xF0;g=0xFF;b=0xFF;break;\r\n\t\t\t\t\tcase 'beige':r=0xF5;g=0xF5;b=0xDC;break;\r\n\t\t\t\t\tcase 'bisque':r=0xFF;g=0xE4;b=0xC4;break;\r\n\t\t\t\t\tcase 'black':r=0x00;g=0x00;b=0x00;break;\r\n\t\t\t\t\tcase 'blanchedalmond':r=0xFF;g=0xEB;b=0xCD;break;\r\n\t\t\t\t\tcase 'blue':r=0x00;g=0x00;b=0xFF;break;\r\n\t\t\t\t\tcase 'blueviolet':r=0x8A;g=0x2B;b=0xE2;break;\r\n\t\t\t\t\tcase 'brown':r=0xA5;g=0x2A;b=0x2A;break;\r\n\t\t\t\t\tcase 'burlywood':r=0xDE;g=0xB8;b=0x87;break;\r\n\t\t\t\t\tcase 'cadetblue':r=0x5F;g=0x9E;b=0xA0;break;\r\n\t\t\t\t\tcase 'chartreuse':r=0x7F;g=0xFF;b=0x00;break;\r\n\t\t\t\t\tcase 'chocolate':r=0xD2;g=0x69;b=0x1E;break;\r\n\t\t\t\t\tcase 'coral':r=0xFF;g=0x7F;b=0x50;break;\r\n\t\t\t\t\tcase 'cornflowerblue':r=0x64;g=0x95;b=0xED;break;\r\n\t\t\t\t\tcase 'cornsilk':r=0xFF;g=0xF8;b=0xDC;break;\r\n\t\t\t\t\tcase 'crimson':r=0xDC;g=0x14;b=0x3C;break;\r\n\t\t\t\t\tcase 'cyan':r=0x00;g=0xFF;b=0xFF;break;\r\n\t\t\t\t\tcase 'darkblue':r=0x00;g=0x00;b=0x8B;break;\r\n\t\t\t\t\tcase 'darkcyan':r=0x00;g=0x8B;b=0x8B;break;\r\n\t\t\t\t\tcase 'darkgoldenrod':r=0xB8;g=0x86;b=0x0B;break;\r\n\t\t\t\t\tcase 'darkgray':r=0xA9;g=0xA9;b=0xA9;break;\r\n\t\t\t\t\tcase 'darkgrey':r=0xA9;g=0xA9;b=0xA9;break;\r\n\t\t\t\t\tcase 'darkgreen':r=0x00;g=0x64;b=0x00;break;\r\n\t\t\t\t\tcase 'darkkhaki':r=0xBD;g=0xB7;b=0x6B;break;\r\n\t\t\t\t\tcase 'darkmagenta':r=0x8B;g=0x00;b=0x8B;break;\r\n\t\t\t\t\tcase 'darkolivegreen':r=0x55;g=0x6B;b=0x2F;break;\r\n\t\t\t\t\tcase 'darkorange':r=0xFF;g=0x8C;b=0x00;break;\r\n\t\t\t\t\tcase 'darkorchid':r=0x99;g=0x32;b=0xCC;break;\r\n\t\t\t\t\tcase 'darkred':r=0x8B;g=0x00;b=0x00;break;\r\n\t\t\t\t\tcase 'darksalmon':r=0xE9;g=0x96;b=0x7A;break;\r\n\t\t\t\t\tcase 'darkseagreen':r=0x8F;g=0xBC;b=0x8F;break;\r\n\t\t\t\t\tcase 'darkslateblue':r=0x48;g=0x3D;b=0x8B;break;\r\n\t\t\t\t\tcase 'darkslategray':r=0x2F;g=0x4F;b=0x4F;break;\r\n\t\t\t\t\tcase 'darkslategrey':r=0x2F;g=0x4F;b=0x4F;break;\r\n\t\t\t\t\tcase 'darkturquoise':r=0x00;g=0xCE;b=0xD1;break;\r\n\t\t\t\t\tcase 'darkviolet':r=0x94;g=0x00;b=0xD3;break;\r\n\t\t\t\t\tcase 'deeppink':r=0xFF;g=0x14;b=0x93;break;\r\n\t\t\t\t\tcase 'deepskyblue':r=0x00;g=0xBF;b=0xFF;break;\r\n\t\t\t\t\tcase 'dimgray':r=0x69;g=0x69;b=0x69;break;\r\n\t\t\t\t\tcase 'dimgrey':r=0x69;g=0x69;b=0x69;break;\r\n\t\t\t\t\tcase 'dodgerblue':r=0x1E;g=0x90;b=0xFF;break;\r\n\t\t\t\t\tcase 'firebrick':r=0xB2;g=0x22;b=0x22;break;\r\n\t\t\t\t\tcase 'floralwhite':r=0xFF;g=0xFA;b=0xF0;break;\r\n\t\t\t\t\tcase 'forestgreen':r=0x22;g=0x8B;b=0x22;break;\r\n\t\t\t\t\tcase 'fuchsia':r=0xFF;g=0x00;b=0xFF;break;\r\n\t\t\t\t\tcase 'gainsboro':r=0xDC;g=0xDC;b=0xDC;break;\r\n\t\t\t\t\tcase 'ghostwhite':r=0xF8;g=0xF8;b=0xFF;break;\r\n\t\t\t\t\tcase 'gold':r=0xFF;g=0xD7;b=0x00;break;\r\n\t\t\t\t\tcase 'goldenrod':r=0xDA;g=0xA5;b=0x20;break;\r\n\t\t\t\t\tcase 'gray':r=0x80;g=0x80;b=0x80;break;\r\n\t\t\t\t\tcase 'grey':r=0x80;g=0x80;b=0x80;break;\r\n\t\t\t\t\tcase 'green':r=0x00;g=0x80;b=0x00;break;\r\n\t\t\t\t\tcase 'greenyellow':r=0xAD;g=0xFF;b=0x2F;break;\r\n\t\t\t\t\tcase 'honeydew':r=0xF0;g=0xFF;b=0xF0;break;\r\n\t\t\t\t\tcase 'hotpink':r=0xFF;g=0x69;b=0xB4;break;\r\n\t\t\t\t\tcase 'indianred':r=0xCD;g=0x5C;b=0x5C;break;\r\n\t\t\t\t\tcase 'indigo':r=0x4B;g=0x00;b=0x82;break;\r\n\t\t\t\t\tcase 'ivory':r=0xFF;g=0xFF;b=0xF0;break;\r\n\t\t\t\t\tcase 'khaki':r=0xF0;g=0xE6;b=0x8C;break;\r\n\t\t\t\t\tcase 'lavender':r=0xE6;g=0xE6;b=0xFA;break;\r\n\t\t\t\t\tcase 'lavenderblush':r=0xFF;g=0xF0;b=0xF5;break;\r\n\t\t\t\t\tcase 'lawngreen':r=0x7C;g=0xFC;b=0x00;break;\r\n\t\t\t\t\tcase 'lemonchiffon':r=0xFF;g=0xFA;b=0xCD;break;\r\n\t\t\t\t\tcase 'lightblue':r=0xAD;g=0xD8;b=0xE6;break;\r\n\t\t\t\t\tcase 'lightcoral':r=0xF0;g=0x80;b=0x80;break;\r\n\t\t\t\t\tcase 'lightcyan':r=0xE0;g=0xFF;b=0xFF;break;\r\n\t\t\t\t\tcase 'lightgoldenrodyellow':r=0xFA;g=0xFA;b=0xD2;break;\r\n\t\t\t\t\tcase 'lightgray':r=0xD3;g=0xD3;b=0xD3;break;\r\n\t\t\t\t\tcase 'lightgrey':r=0xD3;g=0xD3;b=0xD3;break;\r\n\t\t\t\t\tcase 'lightgreen':r=0x90;g=0xEE;b=0x90;break;\r\n\t\t\t\t\tcase 'lightpink':r=0xFF;g=0xB6;b=0xC1;break;\r\n\t\t\t\t\tcase 'lightsalmon':r=0xFF;g=0xA0;b=0x7A;break;\r\n\t\t\t\t\tcase 'lightseagreen':r=0x20;g=0xB2;b=0xAA;break;\r\n\t\t\t\t\tcase 'lightskyblue':r=0x87;g=0xCE;b=0xFA;break;\r\n\t\t\t\t\tcase 'lightslategray':r=0x77;g=0x88;b=0x99;break;\r\n\t\t\t\t\tcase 'lightslategrey':r=0x77;g=0x88;b=0x99;break;\r\n\t\t\t\t\tcase 'lightsteelblue':r=0xB0;g=0xC4;b=0xDE;break;\r\n\t\t\t\t\tcase 'lightyellow':r=0xFF;g=0xFF;b=0xE0;break;\r\n\t\t\t\t\tcase 'lime':r=0x00;g=0xFF;b=0x00;break;\r\n\t\t\t\t\tcase 'limegreen':r=0x32;g=0xCD;b=0x32;break;\r\n\t\t\t\t\tcase 'linen':r=0xFA;g=0xF0;b=0xE6;break;\r\n\t\t\t\t\tcase 'magenta':r=0xFF;g=0x00;b=0xFF;break;\r\n\t\t\t\t\tcase 'maroon':r=0x80;g=0x00;b=0x00;break;\r\n\t\t\t\t\tcase 'mediumaquamarine':r=0x66;g=0xCD;b=0xAA;break;\r\n\t\t\t\t\tcase 'mediumblue':r=0x00;g=0x00;b=0xCD;break;\r\n\t\t\t\t\tcase 'mediumorchid':r=0xBA;g=0x55;b=0xD3;break;\r\n\t\t\t\t\tcase 'mediumpurple':r=0x93;g=0x70;b=0xDB;break;\r\n\t\t\t\t\tcase 'mediumseagreen':r=0x3C;g=0xB3;b=0x71;break;\r\n\t\t\t\t\tcase 'mediumslateblue':r=0x7B;g=0x68;b=0xEE;break;\r\n\t\t\t\t\tcase 'mediumspringgreen':r=0x00;g=0xFA;b=0x9A;break;\r\n\t\t\t\t\tcase 'mediumturquoise':r=0x48;g=0xD1;b=0xCC;break;\r\n\t\t\t\t\tcase 'mediumvioletred':r=0xC7;g=0x15;b=0x85;break;\r\n\t\t\t\t\tcase 'midnightblue':r=0x19;g=0x19;b=0x70;break;\r\n\t\t\t\t\tcase 'mintcream':r=0xF5;g=0xFF;b=0xFA;break;\r\n\t\t\t\t\tcase 'mistyrose':r=0xFF;g=0xE4;b=0xE1;break;\r\n\t\t\t\t\tcase 'moccasin':r=0xFF;g=0xE4;b=0xB5;break;\r\n\t\t\t\t\tcase 'navajowhite':r=0xFF;g=0xDE;b=0xAD;break;\r\n\t\t\t\t\tcase 'navy':r=0x00;g=0x00;b=0x80;break;\r\n\t\t\t\t\tcase 'oldlace':r=0xFD;g=0xF5;b=0xE6;break;\r\n\t\t\t\t\tcase 'olive':r=0x80;g=0x80;b=0x00;break;\r\n\t\t\t\t\tcase 'olivedrab':r=0x6B;g=0x8E;b=0x23;break;\r\n\t\t\t\t\tcase 'orange':r=0xFF;g=0xA5;b=0x00;break;\r\n\t\t\t\t\tcase 'orangered':r=0xFF;g=0x45;b=0x00;break;\r\n\t\t\t\t\tcase 'orchid':r=0xDA;g=0x70;b=0xD6;break;\r\n\t\t\t\t\tcase 'palegoldenrod':r=0xEE;g=0xE8;b=0xAA;break;\r\n\t\t\t\t\tcase 'palegreen':r=0x98;g=0xFB;b=0x98;break;\r\n\t\t\t\t\tcase 'paleturquoise':r=0xAF;g=0xEE;b=0xEE;break;\r\n\t\t\t\t\tcase 'palevioletred':r=0xDB;g=0x70;b=0x93;break;\r\n\t\t\t\t\tcase 'papayawhip':r=0xFF;g=0xEF;b=0xD5;break;\r\n\t\t\t\t\tcase 'peachpuff':r=0xFF;g=0xDA;b=0xB9;break;\r\n\t\t\t\t\tcase 'peru':r=0xCD;g=0x85;b=0x3F;break;\r\n\t\t\t\t\tcase 'pink':r=0xFF;g=0xC0;b=0xCB;break;\r\n\t\t\t\t\tcase 'plum':r=0xDD;g=0xA0;b=0xDD;break;\r\n\t\t\t\t\tcase 'powderblue':r=0xB0;g=0xE0;b=0xE6;break;\r\n\t\t\t\t\tcase 'purple':r=0x80;g=0x00;b=0x80;break;\r\n\t\t\t\t\tcase 'rebeccapurple':r=0x66;g=0x33;b=0x99;break;\r\n\t\t\t\t\tcase 'red':r=0xFF;g=0x00;b=0x00;break;\r\n\t\t\t\t\tcase 'rosybrown':r=0xBC;g=0x8F;b=0x8F;break;\r\n\t\t\t\t\tcase 'royalblue':r=0x41;g=0x69;b=0xE1;break;\r\n\t\t\t\t\tcase 'saddlebrown':r=0x8B;g=0x45;b=0x13;break;\r\n\t\t\t\t\tcase 'salmon':r=0xFA;g=0x80;b=0x72;break;\r\n\t\t\t\t\tcase 'sandybrown':r=0xF4;g=0xA4;b=0x60;break;\r\n\t\t\t\t\tcase 'seagreen':r=0x2E;g=0x8B;b=0x57;break;\r\n\t\t\t\t\tcase 'seashell':r=0xFF;g=0xF5;b=0xEE;break;\r\n\t\t\t\t\tcase 'sienna':r=0xA0;g=0x52;b=0x2D;break;\r\n\t\t\t\t\tcase 'silver':r=0xC0;g=0xC0;b=0xC0;break;\r\n\t\t\t\t\tcase 'skyblue':r=0x87;g=0xCE;b=0xEB;break;\r\n\t\t\t\t\tcase 'slateblue':r=0x6A;g=0x5A;b=0xCD;break;\r\n\t\t\t\t\tcase 'slategray':r=0x70;g=0x80;b=0x90;break;\r\n\t\t\t\t\tcase 'slategrey':r=0x70;g=0x80;b=0x90;break;\r\n\t\t\t\t\tcase 'snow':r=0xFF;g=0xFA;b=0xFA;break;\r\n\t\t\t\t\tcase 'springgreen':r=0x00;g=0xFF;b=0x7F;break;\r\n\t\t\t\t\tcase 'steelblue':r=0x46;g=0x82;b=0xB4;break;\r\n\t\t\t\t\tcase 'tan':r=0xD2;g=0xB4;b=0x8C;break;\r\n\t\t\t\t\tcase 'teal':r=0x00;g=0x80;b=0x80;break;\r\n\t\t\t\t\tcase 'thistle':r=0xD8;g=0xBF;b=0xD8;break;\r\n\t\t\t\t\tcase 'tomato':r=0xFF;g=0x63;b=0x47;break;\r\n\t\t\t\t\tcase 'turquoise':r=0x40;g=0xE0;b=0xD0;break;\r\n\t\t\t\t\tcase 'violet':r=0xEE;g=0x82;b=0xEE;break;\r\n\t\t\t\t\tcase 'wheat':r=0xF5;g=0xDE;b=0xB3;break;\r\n\t\t\t\t\tcase 'white':r=0xFF;g=0xFF;b=0xFF;break;\r\n\t\t\t\t\tcase 'whitesmoke':r=0xF5;g=0xF5;b=0xF5;break;\r\n\t\t\t\t\tcase 'yellow':r=0xFF;g=0xFF;b=0x00;break;\r\n\t\t\t\t\tcase 'yellowgreen':r=0x9A;g=0xCD;b=0x32;break;\r\n\t\t\t\t}\r\n\t\t\t\tthis.r = r;\r\n\t\t\t\tthis.g = g;\r\n\t\t\t\tthis.b = b;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse if(value.length == 3 || value.length == 4){\r\n\t\t\tthis.r = value[0];\r\n\t\t\tthis.g = value[1];\r\n\t\t\tthis.b = value[2];\r\n\t\t\tif(value.length == 4){\r\n\t\t\t\tthis.a = value[3];\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\ttoString(){\r\n\t\tvar R = Math.round;\r\n\t\tvar X = Math.max;\r\n\t\tvar N = Math.min;\r\n\t\tif(this.a == 1)\r\n\t\t\treturn \"rgb(\" + N(255, X(0, R(this.r))) + \", \" + N(255, X(0, R(this.g))) + \", \" + N(255, X(0, R(this.b))) + \")\";\r\n\t\telse\r\n\t\t\treturn \"rgba(\" + N(255, X(0, R(this.r))) + \", \" + N(255, X(0, R(this.g))) + \", \" + N(255, X(0, R(this.b))) + \", \" + N(1, X(0, this.a)) + \")\";\r\n\t}\r\n}","import { floatRegex } from \"../../dot-util\";\r\nimport CssDataType from \"./css-data-type\";\r\n\r\nexport default class CssComplex extends CssDataType{\r\n\tparts: string[];\r\n\tnumbers: string;\r\n\tconstructor(value){\r\n\t\tsuper(\"complex\");\r\n\t\tthis.parts = (\" \" + value + \" \").split(floatRegex);\r\n\t\tthis.numbers = value.match(floatRegex);\r\n\t}\r\n\t\r\n\ttoString(){\r\n\t\tvar ret = this.parts[0];\r\n\t\tfor(var i = 0; i < this.numbers.length; i++){\r\n\t\t\tret += this.numbers[i] + this.parts[i+1];\r\n\t\t}\r\n\t\treturn ret;\r\n\t}\r\n}","export declare type CssDataTypeToken = \"url\"|\"number\"|\"length\"|\"angle\"|\"color\"|\"transformation\"|\"filter\"|\"complex\"|\"unknown\";\r\n\r\nexport default abstract class CssDataType{\r\n\ttype: CssDataTypeToken;\r\n\r\n\tconstructor(type: CssDataTypeToken){\r\n\t\tthis.type = type;\r\n\t}\r\n}","import { isF } from \"../../dot-util\";\r\nimport {AllAngleUnits, AllLengthUnits} from \"../unit-function-tables\";\r\nimport { AngleUnits, ColorFormat, NumericAngle, NumericLength, Percentage } from \"../i-dotcss\";\r\nimport CssAngle from \"./css-angle\";\r\nimport CssDataType from \"./css-data-type\";\r\nimport CssLength from \"./css-length\";\r\nimport CssPercentage from \"./css-percentage\";\r\nimport CssColor from \"./css-color\";\r\n\r\nexport default class CssFilter extends CssDataType{\r\n\t\t\r\n\tsimpleValue: string;\r\n\tfilters: Array<{\r\n\t\tfilter: string,\r\n\t\targs: Array<any>\r\n\t}> = [];\r\n\r\n\tconstructor(value){\r\n\t\tsuper(\"filter\");\r\n\t\t\r\n\t\tif(typeof value == \"string\"){\r\n\t\t\tthis.simpleValue = value;\r\n\t\t\treturn; //?? Need a better way to handle this.\r\n\t\t}\r\n\t\telse if(isF(value)){\r\n\t\t\tvalue(this);\r\n\t\t\t// console.log(this.toString());\r\n\t\t}\r\n\t\t//var ret = {value: value, type: cssDataType};\r\n\r\n\t\t// The old way of doing transformations was that it was set up to accept a big string. The added complexity was to support animations.\r\n\t\t// The new way is to use the builder. But I might want to come back and revisit the idea of accepting a string.\r\n\t\t// For instance, a use case of accepting a string for a transformation is if we're trying to animate transforms generated by another framework.\r\n\t\t// Not sure if that's realistic.\r\n\t\t// var transformations = value.split(/\\)\\s*/); transformations.pop(); for(var i = 0; i < transformations.length; i++) transformations[i] += \")\";\r\n\t\t// // var cos = Math.cos; var sin = Math.sin; var tan = Math.tan;\r\n\t\t// for(var t = 0; t < transformations.length; t++){\r\n\t\t// \tvar trans = transformations[t].trim();\r\n\t\t// \tvar parts = trans.split(/[\\(\\)]/);\r\n\t\t// \tvar func = parts[0]\r\n\t\t// \tvar p = parts[1].split(/\\s*,\\s*/)\r\n\t\t\r\n\t\t// \tif(this[func]){\r\n\t\t// \t\tthis[func].apply(this, p);\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\t\r\n\ttoString(){\r\n\t\tif(this.simpleValue){\r\n\t\t\treturn this.simpleValue;\r\n\t\t}\r\n\r\n\t\tvar ret = \"\";\r\n\t\tfor(var i = 0; i < this.filters.length; i++){\r\n\t\t\tvar t = this.filters[i];\r\n\t\t\tret += t.filter + \"(\";\r\n\t\t\tfor(var k = 0; k < t.args.length; k++){\r\n\t\t\t\tret += t.args[k].toString() + \" \";\r\n\t\t\t}\r\n\t\t\tret = ret.trim() + \") \";\r\n\t\t}\r\n\t\treturn ret.trim();\r\n\t}\r\n\t\r\n\tprivate appendFilterString(filter: string, args){\r\n\t\t//this.finalMatrix = dotcss.matrixMultiply3D(m, this.finalMatrix);\r\n\t\tthis.filters.push({filter: filter, args: args});\r\n\t\t/*if(this.value.length > 0) this.value += \" \";\r\n\t\tthis.value += transformation + \"(\";\r\n\t\tfor(var i = 0; i < args.length; i++){\r\n\t\t\tthis.value += args[i] + (i == args.length -1 ? \"\" : \",\")\r\n\t\t}*/\r\n\t\treturn this;\r\n\t}\r\n\r\n\tblur(v: NumericLength){\r\n\t\treturn this.appendFilterString(\"blur\", [new CssLength(v)]);\r\n\t}\r\n\tbrightness(v: Percentage){\r\n\t\treturn this.appendFilterString(\"brightness\", [new CssPercentage(v)]);\r\n\t}\r\n\tcontrast(v: Percentage){\r\n\t\treturn this.appendFilterString(\"contrast\", [new CssPercentage(v)]);\r\n\t}\r\n\tdropShadow(x: NumericLength, y: NumericLength, blur: NumericLength, color: ColorFormat){\r\n\t\treturn this.appendFilterString(\"drop-shadow\", [new CssLength(x), new CssLength(y), new CssLength(blur), new CssColor(color)]);\r\n\t}\r\n\tgrayscale(v: Percentage){\r\n\t\treturn this.appendFilterString(\"grayscale\", [new CssPercentage(v)]);\r\n\t}\r\n\thueRotate(v: AngleUnits){\r\n\t\treturn this.appendFilterString(\"hue-rotate\", [new CssPercentage(v)]);\r\n\t}\r\n\tinvert(v: Percentage){\r\n\t\treturn this.appendFilterString(\"invert\", [new CssPercentage(v)]);\r\n\t}\r\n\topacity(v: Percentage){\r\n\t\treturn this.appendFilterString(\"opacity\", [new CssPercentage(v)]);\r\n\t}\r\n\tsepia(v: Percentage){\r\n\t\treturn this.appendFilterString(\"sepia\", [new CssPercentage(v)]);\r\n\t}\r\n\tsaturate(v: Percentage){\r\n\t\treturn this.appendFilterString(\"saturate\", [new CssPercentage(v)]);\r\n\t}\r\n}\r\n\r\n// Extend the above with special length and degree functions.\r\n\r\n// TODO: when I have some time it would be nice to do the unit functions the same way we do for transforms.\r\n// const lengthFuncs = \"translate|translate3d|translateX|translateY|translateZ|perspective\".split(\"|\");\r\n// const angleFuncs = \"rotate|rotateX|rotateY|rotateZ|skew|skewX|skewY\".split(\"|\");\r\n\r\n// for(let i = 0; i < lengthFuncs.length; i++){\r\n// \tlet F = lengthFuncs[i];\r\n// \tfor(let u = 0; u < AllLengthUnits.length; u++){\r\n// \t\tlet uu = AllLengthUnits[u];\r\n// \t\tCssTransform.prototype[F + (uu.jsName || uu.unit)] = function(){\r\n// \t\t\tfor(var i = 0; i < arguments.length; i++) arguments[i] = arguments[i] + uu.unit.toLowerCase();\r\n// \t\t\treturn CssTransform.prototype[F].apply(this, arguments);\r\n// \t\t}\r\n// \t}\r\n// }\r\n// for(let i = 0; i < angleFuncs.length; i++){\r\n// \tlet F = angleFuncs[i];\r\n// \tfor(let u = 0; u < AllAngleUnits.length; u++){\r\n// \t\tlet uu = AllAngleUnits[u];\r\n// \t\tCssTransform.prototype[F + (uu.unit)] = function(){\r\n// \t\t\tfor(var i = 0; i < arguments.length; i++) arguments[i] = arguments[i] + uu.unit.toLowerCase();\r\n// \t\t\treturn CssTransform.prototype[F].apply(this, arguments);\r\n// \t\t}\r\n// \t}\r\n// }","import { floatRegex } from \"../../dot-util\";\r\nimport CssDataType from \"./css-data-type\";\r\n\r\n//TODO: this should support multiple lengths.\r\n// TODO: add some test cases to test these.\r\nexport default class CssLength extends CssDataType{\r\n\tlength: number;\r\n\tunits: string;\r\n\tconstructor (value:string|number){\r\n\t\tsuper(\"length\")\r\n\t\tvalue = value || \"0px\";\r\n\t\tif(!isNaN(value as number)) value = Math.round(value as number) + \"px\";\r\n\t\tthis.length = Number((value as string).match(floatRegex)[0]);\r\n\t\tthis.units = (value as string).split(floatRegex)[1] || \"px\";\r\n\t}\r\n\t\r\n\ttoString(){\r\n\t\treturn `${this.length}${this.units}`;\r\n\t}\r\n}","import CssDataType from \"./css-data-type\";\r\n\r\nexport default class CssNumber extends CssDataType{\r\n\tvalue: number;\r\n\tconstructor(value){\r\n\t\tsuper(\"number\");\r\n\t\tthis.value = Number(value);\r\n\t}\r\n\ttoString(){\r\n\t\treturn this.value;\r\n\t}\r\n}","import { floatRegex } from \"../../dot-util\";\r\nimport CssDataType from \"./css-data-type\";\r\nimport CssLength from \"./css-length\";\r\n\r\nexport default class CssPercentage extends CssLength{\r\n\tlength: number;\r\n\tconstructor (value:string|number){\r\n\t\tsuper(isNaN(value as any) ? value : `${value}%`)\r\n\t}\r\n}","import { isF } from \"../../dot-util\";\r\nimport {AllAngleUnits, AllLengthUnits} from \"../unit-function-tables\";\r\nimport { BasicCommonValues, ITransformationContext, NumericAngle, NumericLength } from \"../i-dotcss\";\r\nimport dotcss from \"../style-builder\";\r\nimport CssAngle from \"./css-angle\";\r\nimport CssDataType from \"./css-data-type\";\r\nimport CssLength from \"./css-length\";\r\n\r\nexport default class CssTransform extends CssDataType{\r\n\t\r\n\ttransformations: Array<{\r\n\t\ttransformation: string,\r\n\t\targs: Array<any>\r\n\t}>;\r\n\tfinalMatrix: number[];\r\n\tsimpleValue: string;\r\n\t\r\n\tconstructor(value){\r\n\t\tsuper(\"transformation\");\r\n\t\tthis.transformations = [];\r\n\t\t//this.finalMatrix = [1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1];\r\n\t\tif(typeof value == \"string\"){\r\n\t\t\t//this.value = \"matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)\";\r\n\t\t\tthis.simpleValue = value;\r\n\t\t\treturn; //?? Need a better way to handle this.\r\n\t\t}\r\n\t\telse if(isF(value)){\r\n\t\t\tvalue(this);\r\n\t\t}\r\n\t\t//var ret = {value: value, type: cssDataType};\r\n\r\n\t\t// The old way of doing transformations was that it was set up to accept a big string. The added complexity was to support animations.\r\n\t\t// The new way is to use the builder. But I might want to come back and revisit the idea of accepting a string.\r\n\t\t// For instance, a use case of accepting a string for a transformation is if we're trying to animate transforms generated by another framework.\r\n\t\t// Not sure if that's realistic.\r\n\t\t// var transformations = value.split(/\\)\\s*/); transformations.pop(); for(var i = 0; i < transformations.length; i++) transformations[i] += \")\";\r\n\t\t// // var cos = Math.cos; var sin = Math.sin; var tan = Math.tan;\r\n\t\t// for(var t = 0; t < transformations.length; t++){\r\n\t\t// \tvar trans = transformations[t].trim();\r\n\t\t// \tvar parts = trans.split(/[\\(\\)]/);\r\n\t\t// \tvar func = parts[0]\r\n\t\t// \tvar p = parts[1].split(/\\s*,\\s*/)\r\n\t\t\r\n\t\t// \tif(this[func]){\r\n\t\t// \t\tthis[func].apply(this, p);\r\n\t\t// \t}\r\n\t\t// }\r\n\t}\r\n\t\r\n\ttoString(){\r\n\t\tif(this.simpleValue){\r\n\t\t\treturn this.simpleValue;\r\n\t\t}\r\n\r\n\t\tvar ret = \"\";\r\n\t\tfor(var i = 0; i < this.transformations.length; i++){\r\n\t\t\tvar t = this.transformations[i];\r\n\t\t\tret += t.transformation + \"(\";\r\n\t\t\tfor(var k = 0; k < t.args.length; k++){\r\n\t\t\t\tret += t.args[k].toString() + \",\";\r\n\t\t\t}\r\n\t\t\tret = ret.substring(0, ret.length - 1);\r\n\t\t\tret += \") \";\r\n\t\t}\r\n\t\treturn ret.trim();\r\n\t}\r\n\t\r\n\tprivate appendTransformString(transformation, args){\r\n\t\t//this.finalMatrix = dotcss.matrixMultiply3D(m, this.finalMatrix);\r\n\t\tthis.transformations.push({transformation: transformation, args: args});\r\n\t\t/*if(this.value.length > 0) this.value += \" \";\r\n\t\tthis.value += transformation + \"(\";\r\n\t\tfor(var i = 0; i < args.length; i++){\r\n\t\t\tthis.value += args[i] + (i == args.length -1 ? \"\" : \",\")\r\n\t\t}*/\r\n\t\treturn this;\r\n\t}\r\n\t\r\n\tmatrix3d(a1:number, b1:number, c1:number, d1:number, a2:number, b2:number, c2:number, d2:number, a3:number, b3:number, c3:number, d3:number, a4:number, b4:number, c4:number, d4:number){\r\n\t\t// Why do we need this again?\r\n\t\t// Going to try to remove it to see what breaks. I believe it's used for animations.\r\n\t\t// this.finalMatrix = dotcss.matrixMultiply3D(arguments as unknown as Array<number>, this.finalMatrix);\r\n\t\treturn this.appendTransformString(\"matrix3d\", arguments);\r\n\t}\r\n\t\r\n\tmatrix(a: number, b: number, c: number, d: number, tx: number, ty: number){\r\n\t\treturn this.appendTransformString(\"matrix\", arguments);\r\n\t}\r\n\t\r\n\ttranslate(x:NumericLength,y?:NumericLength){\r\n\t\treturn arguments.length == 1 \r\n\t\t\t? this.appendTransformString(\"translate\", [new CssLength(x)]/*, [1,0,0,0,0,1,0,0,0,0,1,0,x,0,0,1]*/) \r\n\t\t\t: this.appendTransformString(\"translate\", [new CssLength(x), new CssLength(y)]/*, [1,0,0,0,0,1,0,0,0,0,1,0,x,y,0,1]*/);\r\n\t}\r\n\t\r\n\ttranslate3d(x:NumericLength,y:NumericLength,z:NumericLength){\r\n\t\treturn this.appendTransformString(\"translate3d\", [new CssLength(x), new CssLength(y), new CssLength(z)]/*, [1,0,0,0,0,1,0,0,0,0,1,0,x,y,z,1]*/);\r\n\t}\r\n\t\r\n\ttranslateX(x:NumericLength){\r\n\t\t\r\n\t\t//var x = dotcss.lengthToPx(p[0]);\r\n\t\t//this.updateValue(\"translateX\", [new CssLength(x + \"px\")]/*, [1,0,0,0,0,1,0,0,0,0,1,0,x,0,0,1]*/);\r\n\t\treturn this.appendTransformString(\"translateX\", [new CssLength(x)]);\r\n\t}\r\n\t\r\n\ttranslateY(y:NumericLength){\r\n\t\t//var y = dotcss.lengthToPx(p[0]);\r\n\t\t//this.updateValue(\"translateY\", [new CssLength(y + \"px\")]/*, [1,0,0,0,0,1,0,0,0,0,1,0,0,y,0,1]*/);\r\n\t\treturn this.appendTransformString(\"translateY\", [new CssLength(y)]);\r\n\t}\r\n\t\r\n\ttranslateZ(z:NumericLength){\r\n\t\t\r\n\t\t//var z = dotcss.lengthToPx(p[0]);\r\n\t\t//this.updateValue(\"translateZ\", [new CssLength(z + \"px\")]/*, [1,0,0,0,0,1,0,0,0,0,1,0,0,0,z,1]*/);\r\n\t\treturn this.appendTransformString(\"translateZ\", [new CssLength(z)]);\r\n\t}\r\n\t\r\n\tscale(x:number,y?:number){\r\n\t\treturn this.appendTransformString(\"scale\", [x,y??1]/*, [x,0,0,0,0,y,0,0,0,0,1,0,0,0,0,1]*/);\r\n\t}\r\n\t\r\n\tscale3d(x:number,y:number,z:number){\r\n\t\treturn this.appendTransformString(\"scale3d\", [x,y,z]/*, [p[0],0,0,0,0,p[1],0,0,0,0,p[2],0,0,0,0,1]*/);\r\n\t}\r\n\t\r\n\tscaleX(x:number){\r\n\t\t//this.updateValue(\"scaleX\", p/*, [p[0],0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]*/);\r\n\t\treturn this.appendTransformString(\"scaleX\", [x]);\r\n\t}\r\n\t\r\n\tscaleY(y:number){\r\n\t\t//this.updateValue(\"scaleY\", p/*, [1,0,0,0,0,p[0],0,0,0,0,1,0,0,0,0,1]*/);\r\n\t\treturn this.appendTransformString(\"scaleY\", [y]);\r\n\t}\r\n\t\r\n\tscaleZ(z:number){\r\n\t\t//this.updateValue(\"scaleZ\", p/*, [1,0,0,0,0,1,0,0,0,0,p[0],0,0,0,0,1]*/);\r\n\t\treturn this.appendTransformString(\"scaleZ\", [z]);\r\n\t}\r\n\t\r\n\trotate(x: NumericAngle){\r\n\t\t// var a = Util.angleToDeg(x);\r\n\t\treturn this.appendTransformString(\"rotate\", [new CssAngle(x)]/*, [Math.cos(a),Math.sin(a),0,0,-Math.sin(axxx),Math.cos(axxx),0,0,0,0,1,0,0,0,0,1]*/);\r\n\t}\r\n\t\r\n\trotate3d(x: number, y: number, z: number, a: NumericAngle){\r\n\t\t\r\n\t\treturn this.appendTransformString(\"rotate3d\", [x, y, z, new CssAngle(a)]/*, \r\n\t\t\t[1+C*(x*x-1),\tz*S+x*y*C,\t\t-y*S+x*z*C,\t\t0,\r\n\t\t\t-z*S+x*y*C,\t\t1+C*(y*y-1),\tx*S+y*z*C,\t\t0,\r\n\t\t\ty*S+x*z*C,\t\t-x*S+y*z*C,\t\t1+C*(z*z-1),\t0,\r\n\t\t\t0,\t\t\t\t0,\t\t\t\t0,\t\t\t\t1]*/\r\n\t\t);\r\n\t}\r\n\r\n\t// Manually create the 4 unit functions for rotate 3d since the arg structure is mixed.\r\n\trotate3dDeg(x: number, y: number, z: number, a: number){return this.rotate3d(x,y,z,a);}\r\n\trotate3dRad(x: number, y: number, z: number, a: number){return this.rotate3d(x,y,z,`${a}rad`);}\r\n\trotate3dGrad(x: number, y: number, z: number, a: number){return this.rotate3d(x,y,z,`${a}grad`);}\r\n\trotate3dTurn(x: number, y: number, z: number, a: number){return this.rotate3d(x,y,z,`${a}turn`);}\r\n\t\r\n\trotateX(x: NumericAngle){\r\n\t\treturn this.appendTransformString(\"rotateX\", [new CssAngle(x)]/*, [1,0,0,0,0,Math.cos(axx),Math.sin(axx),0,0,-Math.sin(axx),Math.cos(axx),0,0,0,0,1]*/);\r\n\t}\r\n\t\r\n\trotateY(y: NumericAngle){\r\n\t\treturn this.appendTransformString(\"rotateY\", [new CssAngle(y)]);\r\n\t}\r\n\t\r\n\trotateZ(z: NumericAngle){\r\n\t\treturn this.appendTransformString(\"rotateZ\", [new CssAngle(z)]);\r\n\t}\r\n\t\r\n\tskew(x: NumericAngle, y?: NumericAngle){\r\n\t\t\r\n\t\treturn arguments.length == 1 \r\n\t\t\t? this.appendTransformString(\"skew\", [new CssAngle(x)]/*, [1,0,0,0,Math.tan(axxxxx),1,0,0,0,0,1,0,0,0,0,1]*/)\r\n\t\t\t: this.appendTransformString(\"skew\", [new CssAngle(x), new CssAngle(y)]/*, [1,Math.tan(axxxy),0,0,Math.tan(axxxx),1,0,0,0,0,1,0,0,0,0,1]*/);\r\n\t}\r\n\t\r\n\tskewX(x: NumericAngle){\r\n\t\treturn this.appendTransformString(\"skewX\", [new CssAngle(x)]);\r\n\t}\r\n\t\r\n\tskewY(y: NumericAngle){\r\n\t\treturn this.appendTransformString(\"skewY\", [new CssAngle(y)]);\r\n\t}\r\n\t\r\n\tperspective(d: NumericLength){\r\n\t\treturn this.appendTransformString(\"perspective\", [new CssLength(d)]/*, [1,0,0,0,0,1,0,0,0,0,1,0,0,0,dotcss.formatNumberValue(-1 / d),1]*/);\r\n\t}\r\n}\r\n\r\n// Extend the above with special length and degree functions.\r\n\r\nconst lengthFuncs = \"translate|translate3d|translateX|translateY|translateZ|perspective\".split(\"|\");\r\nconst angleFuncs = \"rotate|rotateX|rotateY|rotateZ|skew|skewX|skewY\".split(\"|\");\r\n\r\nfor(let i = 0; i < lengthFuncs.length; i++){\r\n\tlet F = lengthFuncs[i];\r\n\tfor(let u = 0; u < AllLengthUnits.length; u++){\r\n\t\tlet uu = AllLengthUnits[u];\r\n\t\tCssTransform.prototype[F + (uu.jsName || uu.unit)] = function(){\r\n\t\t\tfor(var i = 0; i < arguments.length; i++) arguments[i] = arguments[i] + uu.unit.toLowerCase();\r\n\t\t\treturn CssTransform.prototype[F].apply(this, arguments);\r\n\t\t}\r\n\t}\r\n}\r\nfor(let i = 0; i < angleFuncs.length; i++){\r\n\tlet F = angleFuncs[i];\r\n\tfor(let u = 0; u < AllAngleUnits.length; u++){\r\n\t\tlet uu = AllAngleUnits[u];\r\n\t\tCssTransform.prototype[F + (uu.unit)] = function(){\r\n\t\t\tfor(var i = 0; i < arguments.length; i++) arguments[i] = arguments[i] + uu.unit.toLowerCase();\r\n\t\t\treturn CssTransform.prototype[F].apply(this, arguments);\r\n\t\t}\r\n\t}\r\n}","import CssDataType from \"./css-data-type\";\r\n\r\nexport default class CssUnknown extends CssDataType{\r\n\tvalue: any;\r\n\tconstructor(value: any){\r\n\t\tsuper(\"unknown\");\r\n\t\tthis.value = value;\r\n\t}\r\n\r\n\ttoString(){\r\n\t\treturn this.value;\r\n\t}\r\n}","import CssDataType from \"./css-data-type\";\r\n\r\nexport default class CssUrl extends CssDataType{\r\n\turl: Array<string>;\r\n\tconstructor(value){\r\n\t\tsuper(\"url\");\r\n\t\tthis.url = null;\r\n\t\tif(!value || value.length == 0 || (value.length == 1 && value[0] == \"\" || value[0] == \"none\" || value[0] == \"initial\" || value[0] == \"inherit\")){\r\n\t\t\tthis.url = null;\r\n\t\t}\r\n\t\telse{\r\n\t\t\tthis.url = [];\r\n\t\t\tfor(var i = 0; i < value.length; i++){\r\n\t\t\t\tvar currentURL = \"\";\r\n\t\t\t\tif(value[i].toLowerCase().indexOf(\"url\") === 0){\r\n\t\t\t\t\tvar url = value[i].substring(value[i].indexOf(\"(\"), value[i].lastIndexOf(\")\")).trim();\r\n\t\t\t\t\tif((url.indexOf(\"\\\"\") && url.lastIndexOf(\"\\\"\") == url.length - 1) || \r\n\t\t\t\t\t\t(url.indexOf(\"'\") && url.lastIndexOf(\"'\") == url.length - 1)){\r\n\t\t\t\t\t\turl = url.substring(1, url.length - 1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tthis.url.push(url);\r\n\t\t\t\t}\r\n\t\t\t\telse{\r\n\t\t\t\t\tthis.url.push(value[i]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t\r\n\ttoString(): string{\r\n\t\tif(!this.url) return \"none\";\r\n\t\telse \r\n\t\t{\r\n\t\t\tvar ret = [];\r\n\t\t\tfor(var i = 0; i < this.url.length; i++){\r\n\t\t\t\tret.push(\"url(\\\"\" + this.url[i] + \"\\\")\");\r\n\t\t\t}\r\n\t\t\treturn ret.join(\", \");\r\n\t\t}\r\n\t}\r\n}","\"use strict\";\r\n\r\nimport {AllLengthUnits} from \"./unit-function-tables\";\r\nimport CssAngle from \"./css-types.ts/css-angle\";\r\nimport CssColor from \"./css-types.ts/css-color\";\r\nimport CssComplex from \"./css-types.ts/css-complex\";\r\nimport { CssDataTypeToken } from \"./css-types.ts/css-data-type\";\r\nimport CssLength from \"./css-types.ts/css-length\";\r\nimport CssNumber from \"./css-types.ts/css-number\";\r\nimport CssTransform from \"./css-types.ts/css-transform\";\r\nimport CssUnknown from \"./css-types.ts/css-unknown\";\r\nimport CssUrl from \"./css-types.ts/css-url\";\r\nimport IDotCss, { HideParams, LengthProp, NumericLength, ShowParams } from \"./i-dotcss\";\r\nimport { AnimationType, floatRegex, numberStep } from \"../dot-util\";\r\nimport CssFilter from \"./css-types.ts/css-filter\";\r\n\r\n//Latest Update.\r\n/*\r\n* - Wrapped code in anonymous function.\r\n* - Hid _Builder and _StyleProperty.\r\n* - Increased compatibility with IE 8, 9, and 10.\r\n* - Allowed 0-length animations.\r\n* 5.1\r\n* - Typified style builder.\r\n* - Fixed up transformations and redid transform builder.\r\n* - Removed some old junk.\r\n*/\r\n\r\nconst STATIC_SYLES_ATTR = \"data-dot-static-styles\";\r\n\r\n// Rename this to DotcssHelpers.\r\n// The name Dotcss2 comes from a time when this was a clone of dotcss with \"private\" members.\r\nclass Dotcss2{\r\n\t//Inverse of framerate in ms/frame.\r\n\t// Used for old browsers that don't support requestAnimationFrameframe.\r\n\tfxInterval = 1000/60;\r\n\r\n\tlastBuilder: _Builder = null;\r\n\tscopeStack: Array<HTMLElement> = [];\r\n\r\n\tglobalStyleElement: HTMLStyleElement = null;\r\n\r\n\tanimateFull(\r\n\t\telement: HTMLElement,\r\n\t\tjsFriendlyProp: string,\r\n\t\tpropType: string,\r\n\t\tstartValue: any,\r\n\t\ttargetValue: any,\r\n\t\tfinalValue: any,\r\n\t\tcurrentTime: number,\r\n\t\ttotalDuration: number,\r\n\t\tanimationStyle: AnimationType,\r\n\t\tcallback: Function,\r\n\t\tlastValue?: any){\r\n\t\tif(lastValue && element.style[jsFriendlyProp] != lastValue) return; //Animation can be cancelled any time by setting the value directly.\r\n\r\n\t\tif(totalDuration - currentTime > 0){\r\n\t\t\tswitch(propType){\r\n\t\t\t\tcase \"color\":\r\n\t\t\t\t\tvar r = Math.round(numberStep(startValue.r, targetValue.r, currentTime, totalDuration, animationStyle));\r\n\t\t\t\t\tvar g = Math.round(numberStep(startValue.g, targetValue.g, currentTime, totalDuration, animationStyle ));\r\n\t\t\t\t\tvar b = Math.round(numberStep(startValue.b, targetValue.b, currentTime, totalDuration, animationStyle ));\r\n\t\t\t\t\tvar a = dotcss.formatNumberValue(numberStep(startValue.a, targetValue.a, currentTime, totalDuration, animationStyle )); //TODO: make sure this doesn't need to be rounded or something.\r\n\t\t\t\t\tdotcss(element)[jsFriendlyProp](r, g, b, a);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"length\":\r\n\t\t\t\t\tdotcss(element)[jsFriendlyProp](dotcss.formatNumberValue(numberStep(startValue.length, targetValue.length, currentTime, totalDuration, animationStyle), startValue.units) + startValue.units);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tcase \"transformation\":\r\n\t\t\t\t\tvar newTransform = \"\";\r\n\t\t\t\t\t//startValue and targetValue are guaranteed to have the same template.\r\n\t\t\t\t\tfor(var i = 0; i < startValue.transformations.length; i++){\r\n\t\t\t\t\t\tvar t1 = startValue.transformations[i];\r\n\t\t\t\t\t\tvar t2 = targetValue.transformations[i];\r\n\t\t\t\t\t\tnewTransform += t1.transformation + \"(\";\r\n\t\t\t\t\t\tfor(var k = 0; k < t1.args.length; k++){\r\n\t\t\t\t\t\t\tvar v1 = t1.args[k];\r\n\t\t\t\t\t\t\tvar v2 = t2.args[k];\r\n\t\t\t\t\t\t\tvar actualV1 = isNaN(v1) ? v1.length || v1.angle || v1.value || 0 : v1;\r\n\t\t\t\t\t\t\tvar actualV2 = isNaN(v2) ? v2.length || v2.angle || v2.value || 0 : v2;\r\n\t\t\t\t\t\t\tvar units = isNaN(v1) ? v1.units : \"\";\r\n\t\t\t\t\t\t\tnewTransform += dotcss.formatNumberValue(numberStep(actualV1, actualV2, currentTime, totalDuration, animationStyle), units) + units + \",\";\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tnewTransform = newTransform.substring(0, newTransform.length - 1);\r\n\t\t\t\t\t\tnewTransform += \") \";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tdotcss(element)[jsFriendlyProp](newTransform);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\tdefault:\r\n\t\t\t\t\tswitch(startValue.type){\r\n\t\t\t\t\t\tcase \"number\":\r\n\t\t\t\t\t\t\tdotcss(element)[jsFriendlyProp](dotcss.formatNumberValue(numberStep(startValue.value, targetValue.value, currentTime, totalDuration, animationStyle)));\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tcase \"complex\":\r\n\t\t\t\t\t\t\tvar newVal = \"\";\r\n\t\t\t\t\t\t\tfor(var i = 0; i < startValue.numbers.length; i++){\r\n\t\t\t\t\t\t\t\tnewVal += startValue.parts[i];\r\n\t\t\t\t\t\t\t\tnewVal += dotcss.formatNumberValue(numberStep(startValue.numbers[i], targetValue.numbers[i], currentTime, totalDuration, animationStyle))\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tnewVal += startValue.parts[startValue.parts.length - 1];\r\n\r\n\t\t\t\t\t\t\tdotcss(element)[jsFriendlyProp](newVal);\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\tdefault:\r\n\t\t\t\t\t\t\tconsole.warn(\"Unexpected data type for animation.\");\r\n\t\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tvar now = (window.performance && window.performance.now) ? window.performance.now() : null;\r\n\t\t\t//var reachedAnimFrame = false;\r\n\t\t\t//TODO: there could be a memory leak here. Need to investigate.\r\n\t\t\t//Because we're creating a lot of new functions. Are they being released?\r\n\t\t\tvar last = element.style[jsFriendlyProp];\r\n\t\t\tvar nextStep = function(timestamp){\r\n\t\t\t\tvar change = (now ? (window.performance.now() - now) : dotcss2.fxInterval);\r\n\t\t\t\tdotcss2.animateFull(element, jsFriendlyProp, propType, startValue, targetValue, finalValue, currentTime + change, totalDuration, animationStyle, callback, last);\r\n\t\t\t}\r\n\t\t\tif(window.requestAnimationFrame) {\r\n\t\t\t\twindow.requestAnimationFrame(nextStep);\r\n\t\t\t\t//setTimeout(function(){if(!reachedAnimFrame) console.log(\"ERROR\");}, 100);\r\n\t\t\t}\r\n\t\t\telse window.setTimeout(nextStep, dotcss2.fxInterval);\r\n\t\t}\r\n\t\telse{\r\n\t\t\t//TODO: verify that decimal values are properly handled here.\r\n\t\t\tdotcss(element)[jsFriendlyProp](finalValue);\r\n\t\t\tif(callback) callback();\r\n\t\t}\r\n\t}\r\n\r\n\t//Takes the property and generates all the dotcss and builder functions.\r\n\textendDothtml(prop, jsFriendlyProp, type){\r\n\t\t//Create the new function by extending the builder.\r\n\t\tlet _b = _Builder.prototype;\r\n\t\t_b[jsFriendlyProp] = function(){\r\n\r\n\t\t\tif(arguments.length == 0) return this;\r\n\t\t\tvar args = [];\r\n\t\t\tfor(var i = 0; i < arguments.length; i++) args.push(arguments[i]);\r\n\r\n\t\t\t// TODO: Why can't I just pass arguments directly into this function?\r\n\t\t\t// Try it.\r\n\t\t\tvar value = dotcss2.convertStyleIntoDotCssObject(args, type).toString();\r\n\r\n\r\n\t\t\tvar newCss = prop + \":\" + value + \";\";\r\n\t\t\tthis.currentCss += newCss;\r\n\t\t\t// console.log(`SETTING ${jsFriendlyProp}:`, this.toString());\r\n\t\t\t// this.toString()\r\n\r\n\t\t\tif(this.targets){\r\n\t\t\t\tfor(var q = 0; q < this.targets.length; q++){\r\n\t\t\t\t\t//this.targets[q].style += newCss;\r\n\t\t\t\t\tvar t = this.targets[q];\r\n\t\t\t\t\tif(t.tagName == \"STYLE\") t.innerHTML = t.innerHTML.substring(0, t.innerHTML.length - 1) + prop + \":\" + value + \";}\";\r\n\t\t\t\t\telse t.style[jsFriendlyProp] = value;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn this;\r\n\t\t}\r\n\t\t//Add the new function to the dotcss object so that it can be accessed without doing dotcss().\r\n\t\tdotcss2.addPropFunctionToDotCssObject(jsFriendlyProp);\r\n\r\n\t\t//Each unit of length will also have its own version of this function (assuming this is a length property).\r\n\t\tif(type == \"length\"){\r\n\t\t\tfor(var u = 0; u < AllLengthUnits.length; u++){\r\n\t\t\t\tvar uu = AllLengthUnits[u];\r\n\t\t\t\t(function(uu){\r\n\t\t\t\t\t_b[jsFriendlyProp + (uu.jsName || uu.unit)] = function(){\r\n\t\t\t\t\t\tfor(var i = 0; i < arguments.length; i++) arguments[i] = arguments[i] + uu.unit.toLowerCase();\r\n\t\t\t\t\t\treturn _b[jsFriendlyProp].apply(this, arguments);\r\n\t\t\t\t\t}\r\n\t\t\t\t})(uu);\r\n\t\t\t\tdotcss2.addPropFunctionToDotCssObject(jsFriendlyProp + (uu.jsName || uu.unit));\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//_b[jsFriendlyProp].__proto__ = Object.create(_StyleProperty.prototype);\r\n\t\t_b[jsFriendlyProp].type = type;\r\n\t\t_b[jsFriendlyProp].jsFriendlyProp = jsFriendlyProp;\r\n\r\n\t\t// This is weird. It looks like I was trying to implement some form of multilpe inheritance.\r\n\t\t// This should really be upgraded.\r\n\t\tfor (var k in _StyleProperty.prototype) {\r\n\t\t\tif(_b[jsFriendlyProp][k] === undefined) _b[jsFriendlyProp][k] = _StyleProperty.prototype[k];\r\n\t\t}\r\n\t}\r\n\r\n\t//Returns a JSON object representation of value specific to the cssDataType passed in.\r\n\tconvertStyleIntoDotCssObject(value, cssDataType: CssDataTypeToken){\r\n\t\t//if(!value) return null;\r\n\t\tif(!(value instanceof Array)) value = [value];\r\n\t\tif(cssDataType == \"color\") return new CssColor(value);\r\n\t\telse if (cssDataType == \"url\") return new CssUrl(value);\r\n\t\telse if (cssDataType == \"length\" && (!isNaN(value[0]) || (value[0].indexOf(\" \") == -1 && value[0].replace(floatRegex, \"\") != value[0]))) return new CssLength(value[0]);\r\n\t\telse if (cssDataType == \"transformation\") return (new CssTransform(value[0])).toString()\r\n\t\telse if (cssDataType == \"filter\") return (new CssFilter(value[0])).toString()\r\n\t\telse{\r\n\t\t\tif(value[0] === \"\"\r\n\t\t\t\t|| (\r\n\t\t\t\t\t(isNaN(value[0]))\r\n\t\t\t\t\t&& (\"\" + value[0]).replace(floatRegex, \"\") == value[0])\r\n\t\t\t\t) return new CssUnknown(value[0]); //No numbers.\r\n\t\t\tif(isNaN(value[0])) return new CssComplex(value[0]); //Numbers\r\n\t\t\telse return new CssNumber(value[0]); //Just a number.\r\n\t\t}\r\n\r\n\t};\r\n\r\n\t//Ensures that two complex values match.\r\n\tcompareComplexDataTypes(value1, value2){\r\n\t\tif(value1.type != \"complex\" || value2.type != \"complex\") return false;\r\n\t\tif(value1.numbers.length != value2.numbers.length) return false;\r\n\t\tif(value1.parts.length != value2.parts.length) return false;\r\n\t\tfor(var i = 0; i < value1.parts.length; i++){\r\n\t\t\tif(value1.parts[i] != value2.parts[i]) return false;\r\n\t\t}\r\n\t\treturn true;\r\n\t};\r\n\r\n\t//Adds a builder function directly to the dotcss object so that dotcss doesn't\r\n\t//have to be used as a function when a target doesn't need to be specified.\r\n\taddPropFunctionToDotCssObject(funcName){\r\n\t\tdotcss[funcName] = function(){\r\n\t\t\tvar n = new _Builder();\r\n\t\t\treturn n[funcName].apply(n, arguments);\r\n\t\t}\r\n\t};\r\n\r\n\t// Might remove this.\r\n\t// I think this doesn't work. Removing now. Not sure what it was supposed to do.\r\n\t// makeTransformFunction(fn){\r\n\t// \tdotcss[fn] = function(){\r\n\t// \t\tvar n = new Transform();\r\n\t// \t\treturn n[fn].apply(n, arguments);\r\n\t// \t};\r\n\t// }\r\n\r\n\tcomputedStyleOrActualStyle(element, property){\r\n\t\treturn window.getComputedStyle(element)[property] || element.style[property];\r\n\t};\r\n\r\n\tmodDeg(a){\r\n\t\tif(a < 0) a = 360 - ((-a) % 360);\r\n\t\treturn a % 360;\r\n\t};\r\n}\r\nconst dotcss2 = new Dotcss2();\r\n\r\n\r\nconst dotcss = function(query:Array<HTMLElement>|HTMLElement|Array<string>|string){\r\n\t//this.currentCss = \"\";\r\n\tvar target = null;\r\n\tif(query){\r\n\t\t// console.log(query, \"?\");\r\n\t\tif( typeof query == \"string\" ) {\r\n\t\t\t// Creating a style tag. Might not be supported forever.\r\n\t\t\tif(query.length > 2 && query.indexOf(\"{}\") == query.length - 2){\r\n\t\t\t\t// TODO: this needs further testing, particularly when mulitple sytles are set on the same page.\r\n\t\t\t\t// Be sure to set up some tests.\r\n\t\t\t\tquery = query.substring(0, query.length - 2);\r\n\r\n\t\t\t\tif(!dotcss2.globalStyleElement){\r\n\t\t\t\t\tdotcss2.globalStyleElement = document.createElement(\"style\");\r\n\t\t\t\t\tdocument.head.appendChild(dotcss2.globalStyleElement);\r\n\t\t\t\t}\r\n\t\t\t\ttarget = [dotcss2.globalStyleElement];\r\n\t\t\t\ttarget[0].innerHTML += query + \"{}\\r\\n\";\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// This is overly complicated, but here is the spiel.\r\n\t\t\t\t// If there's an element on the scopeStack, it should be used with the querySelectorAll.\r\n\t\t\t\t// BUT, querySelectorAll doesn't actually select the element it's currently on, which is a requirement for dothtml.\r\n\t\t\t\t// To make matters worse, if we do querySelectorAll on the element's parents, we may accidentally select its siblings!!\r\n\t\t\t\t// To fix this, we get a list from querySelectorAll on the element, then push the element itself to that list\r\n\t\t\t\t// iff it is in the list of elements queried from its parent.\r\n\t\t\t\t// In addition to all of that, we don't want scoped styles to be applied to child components.\r\n\t\t\t\tvar s0 = dotcss2.scopeStack[0];\r\n\t\t\t\t// if(s0 instanceof Component){\r\n\t\t\t\t// \ts0 = s0.$el;\r\n\t\t\t\t// }\r\n\t\t\t\t// If we're doing scoped, and it's an element.\r\n\t\t\t\tif(s0 && s0.parentNode && s0.querySelectorAll){\r\n\t\t\t\t\t// console.log(s0);\r\n\t\t\t\t\ttarget = getScopedNodeList(query, s0);\r\n\t\t\t\t}\r\n\t\t\t\telse{\r\n\t\t\t\t\ttarget = document.querySelectorAll(query as string);\r\n\t\t\t\t}\r\n\t\t\t\t// target = referencePt.querySelectorAll(query);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif((query instanceof NodeList) || (query instanceof Array)) target = query;\r\n\t\tif(query instanceof Node) target = [query]; //Doesn't need to be a NodeList. Just iterable.\r\n\t}\r\n\tdotcss2.lastBuilder = new _Builder(target);\r\n\treturn dotcss2.lastBuilder;\r\n} as unknown as IDotCss; // We do this because many of the dotcss methods are generated at runtime. Greatly reduces build size.\r\n\r\n\r\ndotcss.version = \"0.16.0\";\r\n\r\nfunction getScopedNodeList(query: String, s0: Element): Array<HTMLElement>{\r\n\t// Get all of the matching child elements of the component. This will not include s0 itself, but it does include nested components.\r\n\t// So we will need to manipulate this collection.\r\n\t// querySelectorAll returns a NodeList, which we need to convert into an Array.\r\n\tvar target = Array.from(s0.querySelectorAll(query as any));\r\n\t// console.log(query, s0.className);\r\n\r\n\t// Exclude nested components.\r\n\tfor(var t = 0; t < target.length; t++){\r\n\t\tvar T = target[t];\r\n\r\n\t\t// Is it a nested component??\r\n\t\tif(T[\"__dothtml_component\"]){\r\n\t\t\t// It's a component. Remove it, and all of it's descendants.\r\n\t\t\ttarget.splice(t, 1);\r\n\t\t\tt--;\r\n\r\n\t\t\tvar subTargets = T.querySelectorAll(query as any);\r\n\t\t\tfor(var s = 0; s < subTargets.length; s++){\r\n\t\t\t\tlet S = subTargets[s];\r\n\t\t\t\ttarget.splice(target.indexOf(S, t + 1), 1);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t// Loop through all the sibling nodes until we find s0.\r\n\tvar parentTargets = Array.from(s0.parentNode.querySelectorAll(query as any));\r\n\r\n\tvar p = parentTargets.indexOf(s0);\r\n\tif(p != -1){\r\n\t\ttarget.unshift(parentTargets[p]);\r\n\t}\r\n\r\n\treturn target;\r\n}\r\n\r\n/**\r\n * The dotcss builder gets extended with all of the css functions at runtime.\r\n*/\r\nexport class _Builder{\r\n\tcurrentCss: string;\r\n\ttargets: Array<HTMLElement>;\r\n\tconstructor(targets?: Array<HTMLElement>){\r\n\t\tthis.currentCss = \"\";\r\n\t\tthis.targets = targets ?? null;\r\n\t}\r\n\r\n\ttoString(){\r\n\t\t// console.log(\"CALLED TOSTRING!\", this.currentCss);\r\n\t\treturn this.currentCss;\r\n\t}\r\n\r\n\t// These methods are a bit strange to have here.\r\n\t// They should probably be a part of the dotcss core object or something.\r\n\t// Also, they're the only items that are explicitly part of the builder rather than generated.\r\n\r\n\t//Usage:\r\n\t//hide()\r\n\t//hide(duration, complete)\r\n\t//hide(options)\r\n\t//Options\r\n\t//\tdisplay: inline-block, block, etc.\r\n\t//\tduration: duration in ms.\r\n\t//\tcomplete: on-complete callback.\r\n\t//\thideStyle: fade, shrink, or normal\r\n\t//\tanimationStyle: linear or exponential\r\n\thide(style?: {\r\n\t\tduration\r\n\t\thideStyle\r\n\t\tcomplete\r\n\t}){\r\n\t\tif(this.targets){\r\n\t\t\tvar arg0: HideParams|number = arguments[0] || {};\r\n\t\t\tvar arg0N = arg0 as number;\r\n\t\t\tvar arg0O = arg0 as HideParams;\r\n\t\t\tvar ops: HideParams = {};\r\n\t\t\tops.duration = arg0O.duration || (isNaN(arg0N) ? 0 : arg0N) || 0;\r\n\t\t\t//ops.display = arg0.display || \"none\";\r\n\t\t\t//ops.opacity = arg0.opacity || null;\r\n\t\t\t//ops.width = arg0.width || null;\r\n\t\t\t//ops.height = arg0.height || null;\r\n\t\t\tops.complete = arg0O.complete || (typeof arguments[1] == \"function\" ? arguments[1] : (typeof arguments[2] == \"function\" ? arguments[2] : function(){}));\r\n\t\t\tops.hideStyle = arg0O.hideStyle || \"normal\";\r\n\t\t\tops.animationStyle = arg0O.animationStyle || (typeof arguments[1] == \"string\" ? arguments[1] as any : \"ease\");\r\n\r\n\t\t\tif(ops.duration > 0){\r\n\t\t\t\tlet doneCnt = 0;\r\n\t\t\t\tlet m = 0;\r\n\t\t\t\tlet q = this.targets.length;\r\n\t\t\t\tfor(let i = 0; i < this.targets.length; i++){\r\n\t\t\t\t\tlet w = this.targets[i].style.width as NumericLength;\r\n\t\t\t\t\tlet h = this.targets[i].style.height as NumericLength;\r\n\t\t\t\t\tlet oStr = this.targets[i].style.opacity;\r\n\t\t\t\t\tlet o: number;\r\n\t\t\t\t\tif(!oStr || oStr === \"\") o = 1;\r\n\t\t\t\t\telse o = Number(oStr);\r\n\t\t\t\t\tlet ov = this.targets[i].style.overflow;\r\n\t\t\t\t\tif(ops.hideStyle != \"fade\"){\r\n\t\t\t\t\t\tthis.targets[i].style.overflow = \"hidden\";\r\n\t\t\t\t\t\tm += 2;\r\n\t\t\t\t\t\t(function(that, t, w: NumericLength, h: NumericLength, ov){\r\n\t\t\t\t\t\t\tdotcss(t).width.animate(0, ops.duration, ops.animationStyle, function(){\r\n\t\t\t\t\t\t\t\tdotcss(t).display(\"none\").width(w).overflow(ov); //Restore original overflow value. Only needs to be done once.\r\n\t\t\t\t\t\t\t\tdoneCnt++; if(doneCnt >= m * q) ops.complete(that);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t\tdotcss(t).height.animate(0, ops.duration, ops.animationStyle, function(){\r\n\t\t\t\t\t\t\t\tdotcss(t).display(\"none\").height(h);\r\n\t\t\t\t\t\t\t\tdoneCnt++; if(doneCnt >= m * q) ops.complete(that);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t})(this, this.targets[i], w, h, ov);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(ops.hideStyle != \"shrink\"){\r\n\t\t\t\t\t\tm++;\r\n\t\t\t\t\t\t(function(that, t, o){\r\n\t\t\t\t\t\t\treturn dotcss(t).opacity.animate(0, ops.duration, ops.animationStyle, function(){\r\n\t\t\t\t\t\t\t\tdotcss(t).display(\"none\").opacity(o);\r\n\t\t\t\t\t\t\t\tdoneCnt++; if(doneCnt >= m * q) ops.complete(that);\r\n\t\t\t\t\t\t\t});\r\n\t\t\t\t\t\t})(this, this.targets[i], o);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\tdotcss(this.targets).display(\"none\");\r\n\t\t\t\tops.complete(this); //This sets the display to none.\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n\r\n\t//Usage:\r\n\t//show()\r\n\t//show(duration, complete)\r\n\t//show(options)\r\n\t//Options\r\n\t//\tdisplay: inline-block, block, etc.\r\n\t//\topacity: final opacity.\r\n\t//\twidth: final width.\r\n\t//\theight: final height.\r\n\t//\tduration: duration in ms.\r\n\t//\tcomplete: on-complete callback.\r\n\t//\tshowStyle: fade, grow, or normal\r\n\t//\tanimationStyle: linear or exponential\r\n\tshow(style?: {\r\n\t\tduration\r\n\t\tshowStyle\r\n\t\tcomplete\r\n\t}){\r\n\t\tif(this.targets){\r\n\t\t\tlet arg0 = arguments[0] || {};\r\n\t\t\tlet arg0N = arg0 as number;\r\n\t\t\tlet arg0O = arg0 as ShowParams;\r\n\t\t\tlet ops: ShowParams = {};\r\n\t\t\tops.duration = arg0O.duration || (isNaN(arg0N) ? 0 : arg0N) || 0;\r\n\t\t\tops.display = arg0O.display || \"block\";\r\n\t\t\tops.opacity = arg0O.opacity;\r\n\t\t\tops.width = arg0O.width || null;\r\n\t\t\tops.height = arg0O.height || null;\r\n\t\t\tops.complete = arg0O.complete || (typeof arguments[1] == \"function\" ? arguments[1] : (typeof arguments[2] == \"function\" ? arguments[2] : function(){}));\r\n\t\t\tops.showStyle = arg0O.showStyle || \"normal\";\r\n\t\t\tops.animationStyle = arg0O.animationStyle || (typeof arguments[1] == \"string\" ? arguments[1] as any : \"ease\");\r\n\r\n\t\t\tif(ops.duration > 0){\r\n\t\t\t\tlet doneCnt = 0;\r\n\t\t\t\tlet q = this.targets.length;\r\n\t\t\t\tlet m = 0;\r\n\t\t\t\tfor(let i = 0; i < this.targets.length; i++){\r\n\t\t\t\t\tlet o = ops.opacity;\r\n\t\t\t\t\tif(ops.opacity === undefined){\r\n\t\t\t\t\t\to = parseFloat(this.targets[i].style.opacity) || 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif(ops.showStyle != \"fade\"){\r\n\t\t\t\t\t\tm += 2;\r\n\t\t\t\t\t\tlet w = ops.width || this.targets[i].style.width as NumericLength;\r\n\t\t\t\t\t\tlet h = ops.height || this.targets[i].style.height as NumericLength;\r\n\r\n\t\t\t\t\t\tdotcss(this.targets[i]).width(0);\r\n\t\t\t\t\t\tdotcss(this.targets[i]).height(0);\r\n\t\t\t\t\t\t// console.log(doneCnt + \" \" + q*m);\r\n\t\t\t\t\t\tdotcss(this.targets[i]).width.animate(w, ops.duration, ops.animationStyle, function(){doneCnt++; if(doneCnt >= q * m) ops.complete();});\r\n\t\t\t\t\t\tdotcss(this.targets[i]).height.animate(h, ops.duration, ops.animationStyle, function(){doneCnt++; if(doneCnt >= q * m) ops.complete();});\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t//let o = this.targets[i].style.opacity; //Guess I should fade to 1?\r\n\t\t\t\t\tdotcss(this.targets[i]).opacity(0);\r\n\t\t\t\t\tdotcss(this.targets[i]).display(ops.display);\r\n\r\n\t\t\t\t\tif(ops.showStyle != \"grow\"){\r\n\t\t\t\t\t\tm++;\r\n\t\t\t\t\t\tdotcss(this.targets[i]).opacity.animate(o, ops.duration, ops.animationStyle, function(){doneCnt++; if(doneCnt == q * m) ops.complete();});\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\treturn dotcss(this.targets).display(ops.display);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this;\r\n\t}\r\n\r\n\tfadeOut(duration, complete){\r\n\t\treturn this.hide({\r\n\t\t\tduration: isNaN(duration) ? 400 : Number(duration),\r\n\t\t\thideStyle: \"fade\",\r\n\t\t\tcomplete: complete\r\n\t\t});\r\n\t};\r\n\r\n\tfadeIn(duration, complete){\r\n\t\treturn this.show({\r\n\t\t\tduration: isNaN(duration) ? 400 : Number(duration),\r\n\t\t\tshowStyle: \"fade\",\r\n\t\t\tcomplete: complete\r\n\t\t});\r\n\t};\r\n}\r\n\r\n// This could be better handeld. Consider putting it inside the dotcss class.\r\ndotcss.prototype.toString = _Builder.prototype.toString;\r\n\r\n// Why do we need this?\r\nclass _StyleProperty{\r\n\ttype: CssDataTypeToken;\r\n\tjsFriendlyProp: string;\r\n\tconstructor(){\r\n\t\tthis.type = null;\r\n\t\tthis.jsFriendlyProp = null;\r\n\r\n\t}\r\n\t//toString override gets the value.\r\n\ttoString(): string{\r\n\t\tif(dotcss2.lastBuilder.targets){\r\n\t\t\t// TODO: this doesn't make sense. Please figure it out.\r\n\t\t\tlet ret = null;\r\n\t\t\tif(dotcss2.lastBuilder.targets.length > 1){\r\n\t\t\t\tret = [];\r\n\t\t\t\tfor(let i = 0; i < dotcss2.lastBuilder.targets.length; i++){\r\n\t\t\t\t\tret.push(dotcss2.lastBuilder.targets[i].style[this.jsFriendlyProp]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse ret = dotcss2.lastBuilder.targets[0].style[this.jsFriendlyProp];\r\n\t\t\treturn ret;\r\n\t\t}\r\n\t\telse return null;\r\n\t}\r\n\r\n\t//val is another special function that breaks the value into a special object.\r\n\tval(){\r\n\t\tif(dotcss2.lastBuilder.targets){\r\n\t\t\tlet ret = null;\r\n\t\t\t// TODO: something wrong with this. Types don't check out.\r\n\t\t\tif(dotcss2.lastBuilder.targets.length > 1){\r\n\t\t\t\tret = null;\r\n\t\t\t\tfor(let i = 0; i < dotcss2.lastBuilder.targets.length; i++){\r\n\t\t\t\t\tif(dotcss2.lastBuilder.targets[0].style[this.jsFriendlyProp]){\r\n\t\t\t\t\t\tret.push(dotcss2.convertStyleIntoDotCssObject(dotcss2.lastBuilder.targets[i].style[this.jsFriendlyProp], this.type));\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse ret.push(null);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse{\r\n\t\t\t\tif(dotcss2.lastBuilder.targets[0].style[this.jsFriendlyProp]){\r\n\t\t\t\t\tret = dotcss2.convertStyleIntoDotCssObject(dotcss2.lastBuilder.targets[0].style[this.jsFriendlyProp], this.type)\r\n\t\t\t\t}\r\n\t\t\t\telse ret = null;\r\n\t\t\t}\r\n\t\t\treturn ret;\r\n\t\t}\r\n\t\telse return null;\r\n\t}\r\n\r\n\t//Ability to animate just like jquery.\r\n\t//complete does not get called if the animation was cancelled.\r\n\tanimate(value, duration, style, complete){\r\n\t\tduration = isNaN(duration) ? 400 : (duration || 0);\r\n\t\tif(dotcss2.lastBuilder && dotcss2.lastBuilder.targets){\r\n\t\t\tif(!complete && style && style.call && style.apply){ //Fix params.\r\n\t\t\t\tcomplete = style;\r\n\t\t\t\tstyle = undefined;\r\n\t\t\t}\r\n\t\t\tfor(let i = 0; i < dotcss2.lastBuilder.targets.length; i++){\r\n\t\t\t\tlet target = dotcss2.lastBuilder.targets[i];\r\n\t\t\t\tlet oldValue = null;\r\n\t\t\t\tlet newValue = null;\r\n\t\t\t\tlet finalValue = null; //newValue might be in different units from the final value...\r\n\r\n\t\t\t\t//Get the old and new values.\r\n\t\t\t\tnewValue = dotcss2.convertStyleIntoDotCssObject(value, this.type);\r\n\r\n\t\t\t\t//If it's a transformation, a little extra work is required.\r\n\t\t\t\t//Need to frame all the rotations properly, and combine both the new and the old transformations.\r\n\t\t\t\tif(this.type == \"transformation\"){\r\n\t\t\t\t\t//Special handling. We'd like to consider the transformation as a complex data type first, then if that's not possible, convert it into a matrix data type.\r\n\t\t\t\t\t//Reason being: linear transformations on matrices are inaccurate. Rotations end up scaling the target.\r\n\t\t\t\t\t//Don't want to get the computed value for transformations.\r\n\t\t\t\t\toldValue = dotcss2.convertStyleIntoDotCssObject(target.style[this.jsFriendlyProp], this.type);\r\n\t\t\t\t}\r\n\t\t\t\tif(!oldValue){ //Standard. Happens when the type is not a transformation.\r\n\t\t\t\t\toldValue = dotcss2.convertStyleIntoDotCssObject(dotcss2.computedStyleOrActualStyle(target, this.jsFriendlyProp), this.type);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tfinalValue = newValue.toString();\r\n\r\n\t\t\t\t//Do a little type/unit checking.\r\n\r\n\t\t\t\tif(this.type == \"length\"){\r\n\t\t\t\t\tif(oldValue.units != newValue.units){\r\n\t\t\t\t\t\t//Need to rectify this.\r\n\t\t\t\t\t\t//This can get messy. If one of the lengths is zero, it would minimize the likelihood of an error.\r\n\t\t\t\t\t\tif(oldValue.length == 0){\r\n\t\t\t\t\t\t\toldValue.units = newValue.units;\r\n\t\t\t\t\t\t\toldValue.length = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if(newValue.length == 0){\r\n\t\t\t\t\t\t\tnewValue.units = oldValue.units;\r\n\t\t\t\t\t\t\tnewValue.length = 0;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\t//Things are messy. Try to mitigate. Convert the old value into the new units, as best we can.\r\n\t\t\t\t\t\t\tlet currentLengthPx = dotcss.lengthToPx(oldValue.toString(), this.jsFriendlyProp as LengthProp, target);\r\n\t\t\t\t\t\t\tlet newLengthPx = dotcss.lengthToPx(newValue.toString(), this.jsFriendlyProp as LengthProp, target);\r\n\t\t\t\t\t\t\toldValue.length = currentLengthPx;\r\n\t\t\t\t\t\t\toldValue.units = \"px\";\r\n\t\t\t\t\t\t\tnewValue.length = newLengthPx;\r\n\t\t\t\t\t\t\tnewValue.units = \"px\";\r\n\r\n\t\t\t\t\t\t\t//Won't need this anymore.\r\n\t\t\t\t\t\t\t//console.warn(\"Couldn't animate \" + this.jsFriendlyProp + \". Inconsistent units.\");\r\n\t\t\t\t\t\t\t//return dotcss2._lastBuilder;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse if(this.type == \"color\"){} //OK\r\n\t\t\t\telse if(this.type == \"transformation\"){\r\n\t\t\t\t\t//Couple things to do here.\r\n\t\t\t\t\t//1. The old and new values must contain the exact same transformation template.\r\n\t\t\t\t\t//2. Angles in the old transformation should be reframed so that they are close to the new angles (or should they)\r\n\r\n\t\t\t\t\tlet startTransform = \"\";\r\n\t\t\t\t\tlet desiredTransform = \"\";\r\n\t\t\t\t\tlet oldIndex = oldValue.transformations.length - 1;\r\n\t\t\t\t\tlet newIndex = newValue.transformations.length - 1;\r\n\t\t\t\t\twhile(oldIndex >= 0 || newIndex >= 0){\r\n\t\t\t\t\t\tlet transformToAdd = \"\";\r\n\t\t\t\t\t\tlet oldTransformValues = null;\r\n\t\t\t\t\t\tlet newTransformValues = null;\r\n\t\t\t\t\t\tif(oldIndex >= 0 && newIndex >= 0 && oldValue.transformations[oldIndex].transformation == newValue.transformations[newIndex].transformation){\r\n\t\t\t\t\t\t\tlet currentOldT = oldValue.transformations[oldIndex];\r\n\t\t\t\t\t\t\tlet currentNewT = newValue.transformations[newIndex];\r\n\r\n\t\t\t\t\t\t\ttransformToAdd = currentOldT.transformation;\r\n\t\t\t\t\t\t\toldTransformValues = currentOldT.args;\r\n\t\t\t\t\t\t\tnewTransformValues = currentNewT.args;\r\n\r\n\t\t\t\t\t\t\toldIndex--;\r\n\t\t\t\t\t\t\tnewIndex--;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse if(oldIndex >= newIndex){\r\n\t\t\t\t\t\t\tlet currentOldT = oldValue.transformations[oldIndex];\r\n\t\t\t\t\t\t\ttransformToAdd = currentOldT.transformation;\r\n\t\t\t\t\t\t\toldTransformValues = currentOldT.args;\r\n\t\t\t\t\t\t\tif(transformToAdd == \"matrix\"){\r\n\t\t\t\t\t\t\t\tnewTransformValues = [1,0, 0,1, 0,0];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse if(transformToAdd == \"matrix3d\"){\r\n\t\t\t\t\t\t\t\tnewTransformValues = [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tlet filler = (transformToAdd.indexOf(\"scale\") == -1) ? 0 : 1;\r\n\t\t\t\t\t\t\t\tnewTransformValues = [];\r\n\t\t\t\t\t\t\t\tfor(let j = 0; j < oldTransformValues.length; j++) newTransformValues.push(!isNaN(oldTransformValues[j]) ? filler : (\r\n\t\t\t\t\t\t\t\t\t!isNaN(oldTransformValues[j].angle) ? new CssAngle(0) : (\r\n\t\t\t\t\t\t\t\t\t\t!isNaN(oldTransformValues[j].length) ? new CssLength(0) : (0)\r\n\t\t\t\t\t\t\t\t\t)));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\toldIndex--;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\tlet currentNewT = newValue.transformations[newIndex];\r\n\t\t\t\t\t\t\ttransformToAdd = currentNewT.transformation;\r\n\t\t\t\t\t\t\tnewTransformValues = currentNewT.args;\r\n\t\t\t\t\t\t\tif(transformToAdd == \"matrix\"){\r\n\t\t\t\t\t\t\t\toldTransformValues = [1,0, 0,1, 0,0];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse if(transformToAdd == \"matrix3d\"){\r\n\t\t\t\t\t\t\t\toldTransformValues = [1,0,0,0, 0,1,0,0, 0,0,1,0, 0,0,0,1];\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\tlet filler = (transformToAdd.indexOf(\"scale\") == -1) ? 0 : 1;\r\n\t\t\t\t\t\t\t\toldTransformValues = [];\r\n\t\t\t\t\t\t\t\tfor(let j = 0; j < newTransformValues.length; j++) oldTransformValues.push(!isNaN(newTransformValues[j]) ? filler : (\r\n\t\t\t\t\t\t\t\t\t!isNaN(newTransformValues[j].angle) ? new CssAngle(0) : (\r\n\t\t\t\t\t\t\t\t\t\t!isNaN(newTransformValues[j].length) ? new CssLength(0) : (0)\r\n\t\t\t\t\t\t\t\t\t)));\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tnewIndex--;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tstartTransform = \") \" + startTransform;\r\n\t\t\t\t\t\tdesiredTransform = \") \" + desiredTransform;\r\n\t\t\t\t\t\t//Handle special values here.\r\n\t\t\t\t\t\tif(transformToAdd.indexOf(\"rotate\") != -1){\r\n\t\t\t\t\t\t\tlet oldAngle = oldTransformValues[oldTransformValues.length - 1].angle;\r\n\t\t\t\t\t\t\tlet newAngle = newTransformValues[newTransformValues.length - 1].angle;\r\n\t\t\t\t\t\t\tlet sep = dotcss.angleSubtract(newAngle, oldAngle);\r\n\t\t\t\t\t\t\toldTransformValues[oldTransformValues.length - 1].angle = newAngle - sep;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tfor(let j = oldTransformValues.length - 1; j >= 0; j--){\r\n\t\t\t\t\t\t\tstartTransform = \",\" + oldTransformValues[i] + startTransform;\r\n\t\t\t\t\t\t\tdesiredTransform = \",\" + newTransformValues[i] + desiredTransform;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tstartTransform = transformToAdd + \"(\" + startTransform.substring(1);\r\n\t\t\t\t\t\tdesiredTransform = transformToAdd + \"(\" + desiredTransform.substring(1);\r\n\t\t\t\t\t}\r\n\t\t\t\t\toldValue = dotcss2.convertStyleIntoDotCssObject(startTransform, \"transformation\");\r\n\t\t\t\t\tnewValue = dotcss2.convertStyleIntoDotCssObject(desiredTransform, \"transformation\");\r\n\r\n\t\t\t\t}\r\n\t\t\t\telse if(oldValue.type == \"number\" && newValue.type == \"number\"){} //OK\r\n\t\t\t\telse if(oldValue.type == \"complex\" && newValue.type == \"complex\"){\r\n\t\t\t\t\tif(!dotcss2.compareComplexDataTypes(oldValue, newValue)){\r\n\t\t\t\t\t\tconsole.warn(\"Couldn't animate \" + this.jsFriendlyProp + \". Value mismatch.\");\r\n\t\t\t\t\t\tcontinue;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse{\r\n\t\t\t\t\tconsole.warn(\"Couldn't animate \" + this.jsFriendlyProp + \". Not a recognizable length, color, or number.\");\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\tdotcss2.animateFull(target, this.jsFriendlyProp, oldValue.type || this.type, oldValue, newValue, finalValue, dotcss2.fxInterval, duration, style || \"ease\", complete);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn dotcss2.lastBuilder;\r\n\t}\r\n\r\n\t//Have to add these back since we're going to replace the __proto__ of a function with this new prototype.\r\n\tapply = Function.apply;\r\n\tcall = Function.call;\r\n};\r\n\r\ndotcss.formatNumberValue = function(value, unit){\r\n\tswitch(unit){\r\n\t\tcase \"px\": return Math.round(value);\r\n\t\tdefault: return Math.round(value * 100) / 100;\r\n\t}\r\n};\r\n\r\n// TODO: figure out a way to add vMargin, hMargin, vPadding, etc.\r\nconst _allProps = {\r\n\tcolor: \"color|background-Color|border-Bottom-Color|border-Color|border-Left-Color|border-Right-Color|border-Top-Color|text-Decoration-Color|outline-Color|column-Rule-Color\",\r\n\tlength: \"background-Size|block-Size|border-Bottom-Left-Radius|border-Bottom-Right-Radius|border-Bottom-Width|border-Image-Width|border-Left-Width|border-Radius|border-Right-Width|border-Top-Left-Radius|border-Top-Right-Radius|border-Top-Width|border-Width|bottom|gap|height|left|margin|margin-Bottom|margin-Left|margin-Right|margin-Top|max-Height|max-Width|min-Height|min-Width|padding|padding-Bottom|padding-Left|padding-Right|padding-Top|right|top|width|line-Height|flex-Basis|font-Size|text-Indent\",\r\n\turl: \"background-Image|border-Image|list-Style-Image|content|image-Orientation\",\r\n\ttransformation: \"transform\",\r\n\tfilter: \"filter|backdrop-Filter\",\r\n\tmisc: \"appearance|aspect-Ratio|opacity|background|background-Attachment|background-Blend-Mode|background-Position|background-Repeat|background-Clip|background-Origin|border|border-Bottom|border-Bottom-Style|border-Image-Outset|border-Image-Repeat|border-Image-Slice|border-Image-Source|border-Left|border-Left-Style|border-Right|border-Right-Style|border-Style|border-Top|border-Top-Style|box-Decoration-Break|box-Shadow|clear|clip|display|float|overflow|box|overflow-X|overflow-Y|position|visibility|vertical-Align|z-Index|align-Content|align-Items|align-Self|flex|flex-Basis|flex-Direction|flex-Flow|flex-Grow|flex-Shrink|flex-Wrap|grid|grid-Area|grid-Auto-Columns|grid-auto-Rows|grid-Column|grid-Column-End|grid-Column-Gap|grid-Column-Start|grid-Gap|grid-Row|grid-Row-End|grid-Row-Gap|grid-Row-Start|grid-Template|grid-Template-Areas|grid-Template-Columns|grid-Template-Rows|justify-Content|order|hanging-Punctuation|hyphens|letter-Spacing|line-Break|overflow-Wrap|tab-Size|text-Align|text-Align-Last|text-Combine-Upright|text-Justify|text-Transform|white-Space|word-Break|word-Spacing|word-Wrap|text-Decoration|text-Decoration-Line|text-Decoration-Style|text-Shadow|text-Underline-Position|font|font-Family|font-Feature-Settings|font-Kerning|font-Language-Override|font-Size-Adjust|font-Stretch|font-Style|font-Synthesis|font-Variant|font-Variant-Alternates|font-Variant-Caps|font-Variant-East-Asian|font-Variant-Ligatures|font-Variant-Numeric|font-Variant-Position|font-Weight|direction|text-Orientation|text-Combine-Upright|unicode-Bidi|user-Select|writing-Mode|border-Collapse|border-Spacing|caption-Side|empty-Cells|table-Layout|counter-Increment|counter-Reset|list-Style|list-Style-Position|list-Style-Type|animation|animation-Delay|animation-Direction|animation-Duration|animation-Fill-Mode|animation-Iteration-Count|animation-Name|animation-Play-State|animation-Timing-Function|backface-Visibility|perspective2d|perspective-Origin|transform-Origin|transform-Style|transition|transition-Property|transition-Duration|transition-Timing-Function|transition-Delay|box-Sizing|cursor|ime-Mode|nav-Down|nav-Index|nav-Left|nav-Right|nav-Up|outline|outline-Offset|outline-Style|outline-Width|resize|text-Overflow|break-After|break-Before|break-Inside|column-Count|column-Fill|column-Gap|column-Rule|column-Rule-Style|column-Rule-Width|column-Span|column-Width|columns|widows|orphans|page-Break-After|page-Break-Before|page-Break-Inside|marks|quotes|image-Rendering|image-Resolution|object-Fit|object-Position|mask|mask-Type|mark|mark-After|mark-Before|phonemes|rest|rest-After|rest-Before|voice-Balance|voice-Duration|voice-Pitch|voice-Pitch-Range|voice-Rate|voice-Stress|voice-Volume|marquee-Direction|marquee-Play-Count|marquee-Speed|marquee-Style|pointer-Events\"\r\n}\r\n\r\n// const _allTransforms = [\r\n// \t\"matrix\",\r\n// \t\"matrix3d\",\r\n// \t\"translate\",\r\n// \t\"translate3d\",\r\n// \t\"translateX\",\r\n// \t\"translateY\",\r\n// \t\"translateZ\",\r\n// \t\"scale\",\r\n// \t\"scale3d\",\r\n// \t\"scaleX\",\r\n// \t\"scaleY\",\r\n// \t\"scaleZ\",\r\n// \t\"rotate\",\r\n// \t\"rotate3d\",\r\n// \t\"rotateX\",\r\n// \t\"rotateY\",\r\n// \t\"rotateZ\",\r\n// \t\"skew\",\r\n// \t\"skewX\",\r\n// \t\"skewY\",\r\n// \t\"perspective\"\r\n// ]\r\n\r\n// TODO: this may have been intended to be private.\r\n\r\ndotcss.matrixMultiply3D = function(A: Array<number>, B: Array<number>){\r\n\tif(A.length != 16 || B.length != 16) throw \"3D matrices must be arrays of 16 length.\";\r\n\tvar ret = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];\r\n\tfor(var y = 0; y < 4; y++)\r\n\t\tfor(var x = 0; x < 4; x++)\r\n\t\t\tfor(var i = 0; i < 4; i++)\r\n\t\t\t\tret[y + x * 4] += Number(A[y + i * 4]) * Number(B[i + x * 4]);\r\n\treturn ret;\r\n};\r\n\r\n//Public functions.\r\n\r\n// TODO: this doesn't really belong in here. This is like a math lib.\r\n\r\n\r\n\r\n// // TODO: I don't think these are really needed. The css types take care of these.\r\n\r\n// dotcss.angleSubtract = function(a: number, b: number):number{\r\n// \tif(a < 0) a = 360 - ((-a) % 360); else a = a % 360;\r\n// \tif(b < 0) b = 360 - ((-b) % 360); else b = b % 360;\r\n// \tvar phi = Math.abs(b - a) % 360;\r\n// \tvar d = phi > 180 ? 360 - phi : phi;\r\n// \tvar sign = (a - b >= 0 && a - b <= 180) || (a - b <=-180 && a- b>= -360) ? 1 : -1;\r\n// \treturn d * sign;\r\n// };\r\n\r\n// //Special handler for building urls.\r\n// dotcss.url = function(url: string): string{\r\n// \treturn `url('${url}')`;\r\n// };\r\n\r\n// //Special handler for building rgb colors.\r\n// dotcss.rgb = function(r: number, g: number, b: number): string{\r\n// \treturn `rgb(${r},${g},${b})`;\r\n// };\r\n\r\n// //Special handler for building rgba colors.\r\n// dotcss.rgba = function(r: number, g: number, b: number, a: number): string{\r\n// \treturn `rgba(${r},${g},${b},${a})`;\r\n// };\r\n\r\n// We don't do this anymore.\r\n// dotcss.buildTransform = function(){\r\n// \treturn new dotcss2._Transform();\r\n// };\r\n\r\ndotcss[\"cacheScopedStaticStyles\"] = function(el: HTMLElement){\r\n\tlet elements = getScopedNodeList(\"*\", el);\r\n\tfor(let element of elements){\r\n\t\tif(element.hasAttribute(\"style\")){\r\n\t\t\telement.setAttribute(STATIC_SYLES_ATTR, element.getAttribute(\"style\"));\r\n\t\t}\r\n\t}\r\n}\r\n\r\ndotcss[\"clearDynamicStyles\"] = function(el: HTMLElement){\r\n\tlet elements = getScopedNodeList(\"*\", el);\r\n\tfor(let element of elements){\r\n\t\telement.removeAttribute(\"style\");\r\n\t\tif(element.hasAttribute(STATIC_SYLES_ATTR)){\r\n\t\t\telement.setAttribute(\"style\", element.getAttribute(STATIC_SYLES_ATTR));\r\n\t\t}\r\n\t}\r\n}\r\n\r\ndotcss.scopeToEl = function(el: HTMLElement){\r\n\tdotcss2.scopeStack.unshift(el);\r\n\treturn this;\r\n};\r\ndotcss.unscope = function(){\r\n\tdotcss2.scopeStack.shift();\r\n\treturn this;\r\n};\r\n\r\n//Build dotcss.\r\nfor(var k in _allProps) {\r\n\tlet P = _allProps[k].split(\"|\");\r\n\tfor(var i in P){\r\n\t\tdotcss2.extendDothtml(P[i].toLowerCase(), P[i].replace(new RegExp(\"-\", \"g\"), \"\"), k);\r\n\t}\r\n}\r\n// for(let i: number = 0; i < _allLengthUnits.length; i++) dotcss2.makeTransformFunction(_allLengthUnits[i]);\r\n\r\n//dotcss = new dotcss();\r\n\r\n// for (var k in _b) {\r\n// \tif(_Builder[k] === undefined) dotcss[k] = _p[k];\r\n// }\r\n\r\nexport default dotcss;\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n// Old stuff that might not be needed anymore?\r\n// angleToDeg: function(a: number|string){\r\n// \tif(!isNaN(a as number)) return Number(a); //If there are no units, assume deg.\r\n// \ta = (a as string).trim();\r\n// \tif(a.indexOf(\"deg\") != -1) return dotcss.formatNumberValue(Number(a.split(\"deg\")[0]));\r\n// \telse if(a.indexOf(\"grad\") != -1) return dotcss.formatNumberValue(Number(a.split(\"grad\")[0]) * 0.9);\r\n// \telse if(a.indexOf(\"rad\") != -1) return dotcss.formatNumberValue(Number(a.split(\"rad\")[0]) * 180 / Math.PI);\r\n// \telse if(a.indexOf(\"turn\") != -1) return dotcss.formatNumberValue(Number(a.split(\"turn\")[0]) * 360);\r\n// \telse throw a + \" does not have valid units for an angle.\"\r\n// },\tlengthToPx: function(l: string|number, prop?: LengthProp, element?: Element){\r\n// \tvar R = Math.round;\r\n// \tvar N = Number;\r\n// \tif(!isNaN(l as number)) return R(N(l)); //If there are no units, assume px.\r\n// \tl = (l as string).trim();\r\n// \tvar S = l.split;\r\n// \t//Absolute:\r\n// \tif(l.indexOf(\"px\") != -1) return R(N(l.split(\"px\")[0]));\r\n// \telse if(l.indexOf(\"in\") != -1) return R(N(l.split(\"in\")[0]) * 96);\r\n// \telse if(l.indexOf(\"pt\") != -1) return R(N(l.split(\"pt\")[0]) * 96 / 72);\r\n// \telse if(l.indexOf(\"pc\") != -1) return R(N(l.split(\"pc\")[0]) * 16);\r\n// \telse if(l.indexOf(\"cm\") != -1) return R(N(l.split(\"cm\")[0]) * 96 / 2.54);\r\n// \telse if(l.indexOf(\"mm\") != -1) return R(N(l.split(\"mm\")[0]) * 96 / 25.4);\r\n// \telse if(l.indexOf(\"q\") != -1) return R(N(l.split(\"q\")[0]) * 96 / 101.6);\r\n// \t//Technically relative:\r\n// \telse if(l.indexOf(\"vw\") != -1) return R(N(l.split(\"vw\")[0]) * 0.01 * Math.max(document.documentElement.clientWidth, window.innerWidth || 0));\r\n// \telse if(l.indexOf(\"vh\") != -1) return R(N(l.split(\"vh\")[0]) * 0.01 * Math.max(document.documentElement.clientHeight, window.innerHeight || 0));\r\n// \telse if(l.indexOf(\"vmin\") != -1) return Math.min(Util.lengthToPx(R(N(l.split(\"vmin\")[0]+ \"vw\"))), R(N(l.split(\"vmin\")[0]+ \"vx\"))); //I know this is slow, but it's compact, and it's not like this is a common unit.\r\n// \telse if(l.indexOf(\"vmax\") != -1) return Math.max(Util.lengthToPx(R(N(l.split(\"vmin\")[0]+ \"vw\"))), R(N(l.split(\"vmin\")[0]+ \"vx\")));\r\n// \telse if(l.indexOf(\"rem\") != -1) return R(N(l.split(\"rem\")[0]) * Util.lengthToPx(dotcss2._computedStyleOrActualStyle(document.body, \"fontSize\"))); //Couldn't get a stack overflow if it's a computed value. Always in px.\r\n\r\n// \t//Absolutely relative:\r\n// \telse if (prop && element) {\r\n// \t\t//If we're setting things relative to font sizes, that's easy.\r\n// \t\t//Can't animate ex or ch. Sorry.\r\n// \t\tif(l.indexOf(\"em\") != -1) return R(N(l.split(\"em\")[0]) * Util.lengthToPx(dotcss2._computedStyleOrActualStyle(element, \"fontSize\")));\r\n\r\n// \t\tvar ref = null;\r\n// \t\tswitch(prop){\r\n// \t\t\tcase \"maxHeight\":\r\n// \t\t\tcase \"minHeight\":\r\n// \t\t\tcase \"top\":\r\n// \t\t\tcase \"bottom\":\r\n// \t\t\tcase \"height\":\r\n// \t\t\t\tif(!element.parentNode) throw \"Cannot convert \" + l + \" \" + prop + \" to px for an element that has no parent.\"\r\n// \t\t\t\tref = Util.lengthToPx(dotcss2._computedStyleOrActualStyle(element.parentNode, \"height\"));\r\n// \t\t\t\tbreak;\r\n// \t\t\tcase \"maxHidth\":\r\n// \t\t\tcase \"minWidth\":\r\n// \t\t\tcase \"right\":\r\n// \t\t\tcase \"left\":\r\n// \t\t\tcase \"width\":\r\n// \t\t\tcase \"margin\": //Yes, all padding and margins are relative to width.\r\n// \t\t\tcase \"marginTop\":\r\n// \t\t\tcase \"marginBottom\":\r\n// \t\t\tcase \"marginLeft\":\r\n// \t\t\tcase \"marginRight\":\r\n// \t\t\tcase \"outlineOffset\":\r\n// \t\t\tcase \"padding\":\r\n// \t\t\tcase \"paddingTop\":\r\n// \t\t\tcase \"paddingBottom\":\r\n// \t\t\tcase \"paddingLeft\":\r\n// \t\t\tcase \"paddingRight\":\r\n// \t\t\t\tref = Util.lengthToPx(dotcss2._computedStyleOrActualStyle(element.parentNode, \"width\"));\r\n// \t\t\t\tif(!element.parentNode) throw \"Cannot convert \" + l + \" \" + prop + \" to px for an element that has no parent.\"\r\n// \t\t\t\tbreak;\r\n// \t\t\tcase \"lineHeight\": //Always relative to font. Would actually be nice to be able to set this relative to container though\r\n// \t\t\t\tref = Util.lengthToPx(dotcss2._computedStyleOrActualStyle(element, \"fontSize\"));\r\n// \t\t\t\tbreak;\r\n// \t\t\tcase \"fontSize\": //Thought this is not strictly allowed in css, we'll assume it means relative to current element's height.\r\n// \t\t\t\tref = Util.lengthToPx(dotcss2._computedStyleOrActualStyle(element, \"height\"));\r\n// \t\t\t\tbreak;\r\n// \t\t\tdefault:\r\n// \t\t\t\tthrow \"Unable to convert the value \" + l + \" to px for \" + prop + \".\";\r\n// \t\t}\r\n\r\n// \t\tif(isNaN(ref)) throw \"Convert the value \" + l + \" to px for \" + prop + \" because the value it is relative to is not a number.\";\r\n\r\n// \t\tif(l.indexOf(\"%\") != -1) return R(N(l.split(\"%\")[0]) * 0.01 * ref);\r\n// \t\telse throw \"The units of \" + l + \" are not recognized by dotcss.\";\r\n// \t}\r\n// \telse throw l + \" does not have valid units for an absolute length.\";\r\n// },","export const AllLengthUnits = [\r\n\t{unit:\"Em\"},\r\n\t{unit:\"Ex\"},\r\n\t{unit:\"Ch\"},\r\n\t{unit:\"Rem\"},\r\n\t{unit:\"Vw\"},\r\n\t{unit:\"Vh\"},\r\n\t{unit:\"Vmin\"},\r\n\t{unit:\"Vmax\"},\r\n\t{unit:\"%\", jsName:\"P\"},\r\n\t{unit:\"Cm\"},\r\n\t{unit:\"Mm\"},\r\n\t{unit:\"In\"},\r\n\t{unit:\"Px\"},\r\n\t{unit:\"Pt\"},\r\n\t{unit:\"Pc\"}\r\n];\r\n\r\nexport const AllAngleUnits = [\r\n\t{unit:\"Deg\"},\r\n\t{unit:\"Grad\"},\r\n\t{unit:\"Rad\"},\r\n\t{unit:\"Turn\"}\r\n];","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// startup\n// Load entry module and return exports\n// This entry module is referenced by other modules so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(220);\n"],"names":["root","factory","exports","module","define","amd","a","i","self","ArgCallback","constructor","element","value","this","el","f","attributeName","super","attr","updateContent","dot","setAttribute","content","propVal","empty","h","dotTarget","startNode","endNode","condition","lastValue","undefined","_appendOrCreateDocument","parentNode","e","nextSibling","removeChild","Component","static","obj","__dotComponentInitialized","__dotClassNumb","ClassPrefix","next","__activePropContainer","__component","eachK","props","k","v","createProp","initializeComponent","GlobalComponentStack","push","created","__args","__built","__propContainer","activePropConstructor","rawProps","activeProps","propDependencies","bindings","initializeEventHandlers","rebuild","ready","sT","pop","$el","__eventsInitialized","ret","builder","lst","getLast","childNodes","length","name","style","$styleBuilder","css","scopeToEl","__stylesSet","cacheScopedStaticStyles","clearDynamicStyles","unscope","$updateStyles","built","events","apply","arguments","activePropContainer","Object","defineProperty","prototype","configurable","enumerable","get","rawProp","configureDependency","set","Array","addEventListener","index","b","as","input","setVal","updateProp","cc","cb","ArrayArgCallback","item","p","__document","ar","updateStyles","arg","AttrArgCallback","args","$refs","deleting","deleted","on","event","handler","handlers","indexOf","off","splice","__$el","keys","call","setTimeout","s","toString","current","reset","floatRegex","RegExp","startValue","targetValue","currentTime","totalDuration","Number","Math","cos","PI","targetSelector","targets","document","querySelectorAll","Element","Node","NodeList","newDot","DotDocument","SELECTOR_MODE","DEFEL","_anonFuncCounter","ext","method","_p","deleteElement","dc","attachEvent","ev","val","a3","createElement","tag","c","createAttribute","attribute","alias","ATTRIBUTE_MODE","classPrefix","__lastNode","lastChild","__if","__pendingCalls","__anonAttrFuncs","__classPrefix","__classedElements","__selectionMode","allTags","allAttributes","specialAttributes","allEventAttr","dotElement","d","_getLastChildOrNull","last","innerHTML","ref","l","gl","pendingCalls","nDot","_getNewDocument","isF","_evalContent","build","cp","className","str","parentEl","beforeNode","T","isNaN","nd","eContent","cf","ContentArgCallback","pendingCallTarget","previousSibling","tagName","type","params","arg3","callback","insertBefore","appendChild","ne","nDoc","hDoc","textNode","createTextNode","substring","toLowerCase","pD","_getAnInstance","cn","_Builder","originalValue","valueSetter","eValue","getAttribute","targetId","appendMode","destination","getElementById","iterations","target","array","forceNoDeferred","defer","each","func","customData","suffix","class","prefix","v2","play","getCurrent","pause","resetTime","stop","isArray","join","checked","selected","getVal","nodeType","contentCallback","__conditionalArray","totalCondition","allConditions","startTextNode","endTextNode","ConditionalArgCallback","renderContent","_conditionalBlock","when","newCondition","timeout","timeoutDot","timeoutNode","parentElement","deferDot","deferNode","queue","firstQ","stack","shift","bindTo","prop","lastProp","lastIndex","lastComponent","_value","resetScopeClass","bus","version","default","ERR","EventBus","_callbacks","_checkAddEvent","emit","flush","ObservableArray","items","_self","_array","_handlers","itemadded","itemremoved","itemset","read","defineIndexProperty","raiseEvent","forEach","writable","eventName","Error","ln","howMany","removed","removeEvents","n","RangeError","getOwnPropertyNames","CssAngle","round","angle","match","units","split","CssColor","r","g","cH","cData","cDataItems","R","X","max","N","min","CssComplex","parts","numbers","CssFilter","filters","simpleValue","t","filter","trim","appendFilterString","blur","brightness","contrast","dropShadow","x","y","color","grayscale","hueRotate","invert","opacity","sepia","saturate","CssLength","CssNumber","CssPercentage","CssTransform","transformations","transformation","appendTransformString","matrix3d","a1","b1","c1","d1","a2","b2","c2","d2","b3","c3","d3","a4","b4","c4","d4","matrix","tx","ty","translate","translate3d","z","translateX","translateY","translateZ","scale","scale3d","scaleX","scaleY","scaleZ","rotate","rotate3d","rotate3dDeg","rotate3dRad","rotate3dGrad","rotate3dTurn","rotateX","rotateY","rotateZ","skew","skewX","skewY","perspective","lengthFuncs","angleFuncs","F","u","AllLengthUnits","uu","jsName","unit","AllAngleUnits","CssUnknown","CssUrl","url","lastIndexOf","STATIC_SYLES_ATTR","dotcss2","fxInterval","lastBuilder","scopeStack","globalStyleElement","animateFull","jsFriendlyProp","propType","finalValue","animationStyle","numberStep","dotcss","formatNumberValue","newTransform","t1","t2","v1","actualV1","actualV2","newVal","console","warn","now","window","performance","nextStep","timestamp","change","requestAnimationFrame","extendDothtml","_b","convertStyleIntoDotCssObject","newCss","currentCss","q","addPropFunctionToDotCssObject","_StyleProperty","cssDataType","replace","compareComplexDataTypes","value1","value2","funcName","computedStyleOrActualStyle","property","getComputedStyle","modDeg","query","head","s0","getScopedNodeList","from","subTargets","S","parentTargets","unshift","hide","arg0","arg0N","arg0O","ops","duration","complete","hideStyle","doneCnt","m","o","w","width","height","oStr","ov","overflow","that","animate","display","show","showStyle","parseFloat","fadeOut","fadeIn","Function","oldValue","newValue","currentLengthPx","lengthToPx","newLengthPx","startTransform","desiredTransform","oldIndex","newIndex","transformToAdd","oldTransformValues","newTransformValues","currentOldT","currentNewT","filler","j","oldAngle","newAngle","sep","angleSubtract","_allProps","misc","matrixMultiply3D","A","B","elements","hasAttribute","removeAttribute","P","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__"],"sourceRoot":""}
|
package/lib/err.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
declare class _EventBus {
|
|
2
|
+
private _callbacks;
|
|
3
|
+
_checkAddEvent: (event: any) => any;
|
|
4
|
+
on(event: any, callback: any): void;
|
|
5
|
+
off(event: any, callback: any): void;
|
|
6
|
+
emit(event: any, ...args: any[]): void;
|
|
7
|
+
flush(event: any): void;
|
|
8
|
+
}
|
|
9
|
+
declare const EventBus: _EventBus;
|
|
10
|
+
export default EventBus;
|