tao_on_rails 0.5.3 → 0.6.0
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.
- checksums.yaml +4 -4
- data/.DS_Store +0 -0
- data/dist/tao.js +88 -156
- data/lib/assets/javascripts/tao/application.coffee +1 -1
- data/lib/assets/javascripts/tao/component.coffee +39 -21
- data/lib/assets/javascripts/tao/page.coffee +3 -3
- data/lib/tao_on_rails/rails/version.rb +1 -1
- data/vendor/assets/javascripts/.DS_Store +0 -0
- data/vendor/assets/javascripts/polyfills/.DS_Store +0 -0
- data/vendor/assets/javascripts/polyfills/custom-elements.js +36 -35
- data/vendor/assets/javascripts/polyfills/native-shim.coffee +7 -4
- data/vendor/assets/javascripts/polyfills/polyfills.coffee +0 -1
- metadata +5 -3
- data/vendor/assets/javascripts/polyfills/htmlelement-instanceof.js +0 -91
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de9e1c635c69c821689bd1fa77d5a10c09488d7b
|
4
|
+
data.tar.gz: 87d215ee8c1b4ddfddae9dbd945e65fa45d4a303
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a35b1d83c05900ea8b717d87a0cad18cfb2f4e3278a48d04d3fdabf6758b92d79751bc36fa3eadd0b61e46c990bb4cc5d97db68db817c7c87b4fabb8f4f6feeb
|
7
|
+
data.tar.gz: 1dec9b9db604fad8bbf1838acfbb0de072c8a5e2618c31ad8d1e5d1fffd3cebbc07ca76b745c1513a9336e9e74b3db6000f16f0a524945858e11f947972d4d6a
|
data/.DS_Store
ADDED
Binary file
|
data/dist/tao.js
CHANGED
@@ -27924,8 +27924,8 @@ return jQuery;
|
|
27924
27924
|
var ref;
|
27925
27925
|
_this.trigger('before-page-cache', [_this.currentPage]);
|
27926
27926
|
if ((ref = _this.currentPage) != null) {
|
27927
|
-
if (typeof ref.
|
27928
|
-
ref.
|
27927
|
+
if (typeof ref.beforeCache === "function") {
|
27928
|
+
ref.beforeCache();
|
27929
27929
|
}
|
27930
27930
|
}
|
27931
27931
|
return window.currentPage = _this.currentPage = null;
|
@@ -29974,17 +29974,15 @@ var Deferred = void 0;
|
|
29974
29974
|
(function () {
|
29975
29975
|
'use strict';
|
29976
29976
|
|
29977
|
-
var doc = document;
|
29978
|
-
var win = window;
|
29979
|
-
|
29980
29977
|
/**
|
29981
29978
|
* Gets 'customElement' from window so that it could be modified after
|
29982
29979
|
* the polyfill loads.
|
29983
29980
|
* @function
|
29984
29981
|
* @return {CustomElementRegistry}
|
29985
29982
|
*/
|
29983
|
+
|
29986
29984
|
var _customElements = function _customElements() {
|
29987
|
-
return
|
29985
|
+
return window['customElements'];
|
29988
29986
|
};
|
29989
29987
|
|
29990
29988
|
var _observerProp = '__$CE_observer';
|
@@ -30025,7 +30023,7 @@ var Deferred = void 0;
|
|
30025
30023
|
// IE 11 requires the third and fourth arguments be present. If the third
|
30026
30024
|
// arg is null, it applies the default behaviour. However IE also requires
|
30027
30025
|
// the fourth argument be present even though the other browsers ignore it.
|
30028
|
-
return
|
30026
|
+
return document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, null, false);
|
30029
30027
|
}
|
30030
30028
|
|
30031
30029
|
/**
|
@@ -30303,9 +30301,9 @@ var Deferred = void 0;
|
|
30303
30301
|
var onReady = function onReady() {
|
30304
30302
|
_this2._upgradeScheduled = false;
|
30305
30303
|
if (!_this2._mainDocumentObserver) {
|
30306
|
-
_this2._mainDocumentObserver = _this2._observeRoot(
|
30304
|
+
_this2._mainDocumentObserver = _this2._observeRoot(document);
|
30307
30305
|
}
|
30308
|
-
_this2._addNodes(
|
30306
|
+
_this2._addNodes(document.childNodes);
|
30309
30307
|
};
|
30310
30308
|
if (window['HTMLImports']) {
|
30311
30309
|
window['HTMLImports']['whenReady'](onReady);
|
@@ -30641,7 +30639,7 @@ var Deferred = void 0;
|
|
30641
30639
|
// patch window.HTMLElement
|
30642
30640
|
|
30643
30641
|
/** @const */
|
30644
|
-
var origHTMLElement =
|
30642
|
+
var origHTMLElement = window.HTMLElement;
|
30645
30643
|
CustomElementRegistry.prototype['nativeHTMLElement'] = origHTMLElement;
|
30646
30644
|
/**
|
30647
30645
|
* @type {function(new: HTMLElement)}
|
@@ -30658,21 +30656,24 @@ var Deferred = void 0;
|
|
30658
30656
|
if (this.constructor) {
|
30659
30657
|
// Find the tagname of the constructor and create a new element with it
|
30660
30658
|
var tagName = customElements._constructors.get(this.constructor);
|
30661
|
-
return _createElement(
|
30659
|
+
return _createElement(document, tagName, undefined, false);
|
30662
30660
|
}
|
30663
30661
|
throw new Error('Unknown constructor. Did you call customElements.define()?');
|
30664
30662
|
};
|
30665
|
-
|
30666
|
-
|
30667
|
-
|
30668
|
-
|
30663
|
+
window.HTMLElement = newHTMLElement;
|
30664
|
+
// By setting the patched HTMLElement's prototype property to the native
|
30665
|
+
// HTMLElement's prototype we make sure that:
|
30666
|
+
// document.createElement('a') instanceof HTMLElement
|
30667
|
+
// works because instanceof uses HTMLElement.prototype, which is on the
|
30668
|
+
// ptototype chain of built-in elements.
|
30669
|
+
window.HTMLElement.prototype = origHTMLElement.prototype;
|
30669
30670
|
|
30670
30671
|
// patch doc.createElement
|
30671
30672
|
// TODO(justinfagnani): why is the cast neccessary?
|
30672
30673
|
// Can we fix the Closure DOM externs?
|
30673
|
-
var
|
30674
|
+
var _nativeCreateElement =
|
30674
30675
|
/** @type {function(this:Document, string, (Object|undefined)=): !HTMLElement}}*/
|
30675
|
-
|
30676
|
+
document.createElement;
|
30676
30677
|
|
30677
30678
|
/**
|
30678
30679
|
* Creates a new element and upgrades it if it's a custom element.
|
@@ -30686,7 +30687,7 @@ var Deferred = void 0;
|
|
30686
30687
|
*/
|
30687
30688
|
function _createElement(doc, tagName, options, callConstructor) {
|
30688
30689
|
var customElements = _customElements();
|
30689
|
-
var element = options ?
|
30690
|
+
var element = options ? _nativeCreateElement.call(doc, tagName, options) : _nativeCreateElement.call(doc, tagName);
|
30690
30691
|
var definition = customElements._definitions.get(tagName.toLowerCase());
|
30691
30692
|
if (definition) {
|
30692
30693
|
customElements._upgradeElement(element, definition, callConstructor);
|
@@ -30694,35 +30695,35 @@ var Deferred = void 0;
|
|
30694
30695
|
customElements._observeRoot(element);
|
30695
30696
|
return element;
|
30696
30697
|
};
|
30697
|
-
|
30698
|
-
return _createElement(
|
30698
|
+
document.createElement = function (tagName, options) {
|
30699
|
+
return _createElement(document, tagName, options, true);
|
30699
30700
|
};
|
30700
30701
|
|
30701
|
-
// patch
|
30702
|
+
// patch document.createElementNS
|
30702
30703
|
|
30703
30704
|
var HTMLNS = 'http://www.w3.org/1999/xhtml';
|
30704
30705
|
|
30705
30706
|
/** @type {function(this:Document,string,string):Element} */
|
30706
|
-
var
|
30707
|
-
|
30707
|
+
var _nativeCreateElementNS = document.createElementNS;
|
30708
|
+
document.createElementNS =
|
30708
30709
|
/** @type {function(this:Document,(string|null),string):!Element} */
|
30709
30710
|
function (namespaceURI, qualifiedName) {
|
30710
|
-
if (namespaceURI ===
|
30711
|
-
return
|
30711
|
+
if (namespaceURI === HTMLNS) {
|
30712
|
+
return document.createElement(qualifiedName);
|
30712
30713
|
} else {
|
30713
|
-
return
|
30714
|
+
return _nativeCreateElementNS.call(document, namespaceURI, qualifiedName);
|
30714
30715
|
}
|
30715
30716
|
};
|
30716
30717
|
|
30717
30718
|
// patch Element.attachShadow
|
30718
30719
|
|
30719
30720
|
/** @type {function({closed: boolean})} */
|
30720
|
-
var
|
30721
|
-
if (
|
30721
|
+
var _nativeAttachShadow = Element.prototype['attachShadow'];
|
30722
|
+
if (_nativeAttachShadow) {
|
30722
30723
|
Object.defineProperty(Element.prototype, 'attachShadow', {
|
30723
30724
|
value: function value(options) {
|
30724
30725
|
/** @type {!Node} */
|
30725
|
-
var root =
|
30726
|
+
var root = _nativeAttachShadow.call(this, options);
|
30726
30727
|
/** @type {CustomElementRegistry} */
|
30727
30728
|
var customElements = _customElements();
|
30728
30729
|
customElements._observeRoot(root);
|
@@ -30731,11 +30732,11 @@ var Deferred = void 0;
|
|
30731
30732
|
});
|
30732
30733
|
}
|
30733
30734
|
|
30734
|
-
// patch
|
30735
|
+
// patch document.importNode
|
30735
30736
|
|
30736
|
-
var
|
30737
|
-
|
30738
|
-
var clone = /** @type{!Node} */
|
30737
|
+
var _nativeImportNode = document.importNode;
|
30738
|
+
document.importNode = function (node, deep) {
|
30739
|
+
var clone = /** @type{!Node} */_nativeImportNode.call(document, node, deep);
|
30739
30740
|
var customElements = _customElements();
|
30740
30741
|
var nodes = isElement(clone) ? [clone] : clone.childNodes;
|
30741
30742
|
/** @type {CustomElementRegistry} */_customElements()._addNodes(nodes);
|
@@ -30744,13 +30745,13 @@ var Deferred = void 0;
|
|
30744
30745
|
|
30745
30746
|
// patch Element.setAttribute & removeAttribute
|
30746
30747
|
|
30747
|
-
var
|
30748
|
+
var _nativeSetAttribute = Element.prototype.setAttribute;
|
30748
30749
|
Element.prototype['setAttribute'] = function (name, value) {
|
30749
|
-
changeAttribute(this, name, value,
|
30750
|
+
changeAttribute(this, name, value, _nativeSetAttribute);
|
30750
30751
|
};
|
30751
|
-
var
|
30752
|
+
var _nativeRemoveAttribute = Element.prototype.removeAttribute;
|
30752
30753
|
Element.prototype['removeAttribute'] = function (name) {
|
30753
|
-
changeAttribute(this, name, null,
|
30754
|
+
changeAttribute(this, name, null, _nativeRemoveAttribute);
|
30754
30755
|
};
|
30755
30756
|
|
30756
30757
|
function changeAttribute(element, name, value, operation) {
|
@@ -30787,102 +30788,10 @@ var Deferred = void 0;
|
|
30787
30788
|
})();
|
30788
30789
|
(function() {
|
30789
30790
|
if (window.customElements && !customElements.polyfilled) {
|
30790
|
-
eval('(() => {\n \'use strict\';\n\n const NativeHTMLElement = window.HTMLElement;\n const nativeDefine = window.customElements.define;\n const nativeGet = window.customElements.get;\n\n /**\n * Map of user-provided constructors to tag names.\n *\n * @type {Map<Function, string>}\n */\n const tagnameByConstructor = new Map();\n\n /**\n * Map of tag
|
30791
|
+
eval('(() => {\n \'use strict\';\n\n const NativeHTMLElement = window.HTMLElement;\n const nativeDefine = window.customElements.define;\n const nativeGet = window.customElements.get;\n\n /**\n * Map of user-provided constructors to tag names.\n *\n * @type {Map<Function, string>}\n */\n const tagnameByConstructor = new Map();\n\n /**\n * Map of tag names to user-provided constructors.\n *\n * @type {Map<string, Function>}\n */\n const constructorByTagname = new Map();\n\n\n /**\n * Whether the constructors are being called by a browser process, ie parsing\n * or createElement.\n */\n let browserConstruction = false;\n\n /**\n * Whether the constructors are being called by a user-space process, ie\n * calling an element constructor.\n */\n let userConstruction = false;\n\n window.HTMLElement = function() {\n if (!browserConstruction) {\n const tagname = tagnameByConstructor.get(this.constructor);\n const fakeClass = nativeGet.call(window.customElements, tagname);\n\n // Make sure that the fake constructor doesn\'t call back to this constructor\n userConstruction = true;\n const instance = new (fakeClass)();\n return instance;\n }\n // Else do nothing. This will be reached by ES5-style classes doing\n // HTMLElement.call() during initialization\n browserConstruction = false;\n };\n // By setting the patched HTMLElement\'s prototype property to the native\n // HTMLElement\'s prototype we make sure that:\n // document.createElement(\'a\') instanceof HTMLElement\n // works because instanceof uses HTMLElement.prototype, which is on the\n // ptototype chain of built-in elements.\n window.HTMLElement.prototype = NativeHTMLElement.prototype;\n\n window.customElements.define = (tagname, elementClass) => {\n const elementProto = elementClass.prototype;\n const StandInElement = class extends NativeHTMLElement {\n constructor() {\n // Call the native HTMLElement constructor, this gives us the\n // under-construction instance as `this`:\n super();\n\n // The prototype will be wrong up because the browser used our fake\n // class, so fix it:\n Object.setPrototypeOf(this, elementProto);\n\n if (!userConstruction) {\n // Make sure that user-defined constructor bottom\'s out to a do-nothing\n // HTMLElement() call\n browserConstruction = true;\n // Call the user-defined constructor on our instance:\n elementClass.call(this);\n }\n userConstruction = false;\n }\n };\n const standInProto = StandInElement.prototype;\n StandInElement.observedAttributes = elementClass.observedAttributes;\n standInProto.connectedCallback = elementProto.connectedCallback;\n standInProto.disconnectedCallback = elementProto.disconnectedCallback;\n standInProto.attributeChangedCallback = elementProto.attributeChangedCallback;\n standInProto.adoptedCallback = elementProto.adoptedCallback;\n\n tagnameByConstructor.set(elementClass, tagname);\n constructorByTagname.set(tagname, elementClass);\n nativeDefine.call(window.customElements, tagname, StandInElement);\n };\n\n window.customElements.get = (tagname) => constructorByTagname.get(tagname);\n\n})();');
|
30791
30792
|
}
|
30792
30793
|
|
30793
30794
|
}).call(this);
|
30794
|
-
/**
|
30795
|
-
* @license
|
30796
|
-
* Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
|
30797
|
-
* This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
30798
|
-
* The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
30799
|
-
* The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
30800
|
-
* Code distributed by Google as part of the polymer project is also
|
30801
|
-
* subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
30802
|
-
*/
|
30803
|
-
|
30804
|
-
(function() {
|
30805
|
-
'use strict';
|
30806
|
-
|
30807
|
-
// patch all built-in subclasses of HTMLElement to inherit from the new HTMLElement
|
30808
|
-
// See https://html.spec.whatwg.org/multipage/indices.html#element-interfaces
|
30809
|
-
|
30810
|
-
/** @const */
|
30811
|
-
var htmlElementSubclasses = [
|
30812
|
-
'Button',
|
30813
|
-
'Canvas',
|
30814
|
-
'Data',
|
30815
|
-
'Head',
|
30816
|
-
'Mod',
|
30817
|
-
'TableCell',
|
30818
|
-
'TableCol',
|
30819
|
-
'Anchor',
|
30820
|
-
'Area',
|
30821
|
-
'Base',
|
30822
|
-
'Body',
|
30823
|
-
'BR',
|
30824
|
-
'DataList',
|
30825
|
-
'Details',
|
30826
|
-
'Dialog',
|
30827
|
-
'Div',
|
30828
|
-
'DList',
|
30829
|
-
'Embed',
|
30830
|
-
'FieldSet',
|
30831
|
-
'Form',
|
30832
|
-
'Heading',
|
30833
|
-
'HR',
|
30834
|
-
'Html',
|
30835
|
-
'IFrame',
|
30836
|
-
'Image',
|
30837
|
-
'Input',
|
30838
|
-
'Keygen',
|
30839
|
-
'Label',
|
30840
|
-
'Legend',
|
30841
|
-
'LI',
|
30842
|
-
'Link',
|
30843
|
-
'Map',
|
30844
|
-
'Media',
|
30845
|
-
'Menu',
|
30846
|
-
'MenuItem',
|
30847
|
-
'Meta',
|
30848
|
-
'Meter',
|
30849
|
-
'Object',
|
30850
|
-
'OList',
|
30851
|
-
'OptGroup',
|
30852
|
-
'Option',
|
30853
|
-
'Output',
|
30854
|
-
'Paragraph',
|
30855
|
-
'Param',
|
30856
|
-
'Picture',
|
30857
|
-
'Pre',
|
30858
|
-
'Progress',
|
30859
|
-
'Quote',
|
30860
|
-
'Script',
|
30861
|
-
'Select',
|
30862
|
-
'Slot',
|
30863
|
-
'Source',
|
30864
|
-
'Span',
|
30865
|
-
'Style',
|
30866
|
-
'TableCaption',
|
30867
|
-
'Table',
|
30868
|
-
'TableRow',
|
30869
|
-
'TableSection',
|
30870
|
-
'Template',
|
30871
|
-
'TextArea',
|
30872
|
-
'Time',
|
30873
|
-
'Title',
|
30874
|
-
'Track',
|
30875
|
-
'UList',
|
30876
|
-
'Unknown',
|
30877
|
-
];
|
30878
|
-
|
30879
|
-
for (var i = 0; i < htmlElementSubclasses.length; i++) {
|
30880
|
-
var ctor = window['HTML' + htmlElementSubclasses[i] + 'Element'];
|
30881
|
-
if (ctor) {
|
30882
|
-
ctor.prototype.__proto__ = window.HTMLElement.prototype;
|
30883
|
-
}
|
30884
|
-
}
|
30885
|
-
})();
|
30886
30795
|
(function() {
|
30887
30796
|
|
30888
30797
|
|
@@ -30903,11 +30812,11 @@ var Deferred = void 0;
|
|
30903
30812
|
return components[superClass];
|
30904
30813
|
}
|
30905
30814
|
return components[superClass] = (function(superClass1) {
|
30815
|
+
var count;
|
30816
|
+
|
30906
30817
|
extend(_Class, superClass1);
|
30907
30818
|
|
30908
|
-
|
30909
|
-
return _Class.__super__.constructor.apply(this, arguments);
|
30910
|
-
}
|
30819
|
+
count = 0;
|
30911
30820
|
|
30912
30821
|
_Class.extend = function(obj) {
|
30913
30822
|
var key, ref, val;
|
@@ -31019,26 +30928,57 @@ var Deferred = void 0;
|
|
31019
30928
|
return $(this);
|
31020
30929
|
});
|
31021
30930
|
|
30931
|
+
_Class.attribute('taoId');
|
30932
|
+
|
30933
|
+
function _Class() {
|
30934
|
+
var instance;
|
30935
|
+
instance = window[superClass].apply(this, arguments);
|
30936
|
+
this._created();
|
30937
|
+
instance;
|
30938
|
+
}
|
30939
|
+
|
31022
30940
|
_Class.prototype.connectedCallback = function() {
|
31023
|
-
|
31024
|
-
|
31025
|
-
|
31026
|
-
|
31027
|
-
|
31028
|
-
|
31029
|
-
|
30941
|
+
return $((function(_this) {
|
30942
|
+
return function() {
|
30943
|
+
if (!_this.initialized) {
|
30944
|
+
_this.taoId = ++count;
|
30945
|
+
_this._init();
|
30946
|
+
_this.initialized = true;
|
30947
|
+
}
|
30948
|
+
_this.connected = true;
|
30949
|
+
return _this._connected();
|
30950
|
+
};
|
30951
|
+
})(this));
|
31030
30952
|
};
|
31031
30953
|
|
31032
30954
|
_Class.prototype.disconnectedCallback = function() {
|
31033
|
-
|
31034
|
-
|
30955
|
+
return $((function(_this) {
|
30956
|
+
return function() {
|
30957
|
+
_this.connected = false;
|
30958
|
+
return _this._disconnected();
|
30959
|
+
};
|
30960
|
+
})(this));
|
30961
|
+
};
|
30962
|
+
|
30963
|
+
_Class.prototype.attributeChangedCallback = function(name) {
|
30964
|
+
return this._attributeChanged(name);
|
31035
30965
|
};
|
31036
30966
|
|
31037
|
-
_Class.prototype.
|
30967
|
+
_Class.prototype._created = function() {};
|
30968
|
+
|
30969
|
+
_Class.prototype._init = function() {};
|
30970
|
+
|
30971
|
+
_Class.prototype._connected = function() {};
|
30972
|
+
|
30973
|
+
_Class.prototype._disconnected = function() {};
|
30974
|
+
|
30975
|
+
_Class.prototype._attributeChanged = function(name) {
|
31038
30976
|
var name1;
|
31039
|
-
return typeof this[name1 = "_" + (_.camelCase(
|
30977
|
+
return typeof this[name1 = "_" + (_.camelCase(name)) + "Changed"] === "function" ? this[name1]() : void 0;
|
31040
30978
|
};
|
31041
30979
|
|
30980
|
+
_Class.prototype.beforeCache = function() {};
|
30981
|
+
|
31042
30982
|
_Class.prototype.on = function() {
|
31043
30983
|
var args, ref;
|
31044
30984
|
args = 1 <= arguments.length ? slice.call(arguments, 0) : [];
|
@@ -31063,14 +31003,6 @@ var Deferred = void 0;
|
|
31063
31003
|
return (ref = this.jq).one.apply(ref, args);
|
31064
31004
|
};
|
31065
31005
|
|
31066
|
-
_Class.prototype._init = function() {};
|
31067
|
-
|
31068
|
-
_Class.prototype._connect = function() {};
|
31069
|
-
|
31070
|
-
_Class.prototype._disconnect = function() {};
|
31071
|
-
|
31072
|
-
_Class.prototype.prepareCache = function() {};
|
31073
|
-
|
31074
31006
|
return _Class;
|
31075
31007
|
|
31076
31008
|
})(window[superClass]);
|
@@ -31095,11 +31027,11 @@ var Deferred = void 0;
|
|
31095
31027
|
|
31096
31028
|
TaoPage.attribute('layout');
|
31097
31029
|
|
31098
|
-
TaoPage.prototype.
|
31099
|
-
return
|
31030
|
+
TaoPage.prototype.beforeCache = function() {
|
31031
|
+
return this.jp.find('[tao-id]').each((function(_this) {
|
31100
31032
|
return function(i, el) {
|
31101
|
-
if (typeof el.
|
31102
|
-
el.
|
31033
|
+
if (typeof el.beforeCache === "function") {
|
31034
|
+
el.beforeCache();
|
31103
31035
|
}
|
31104
31036
|
return null;
|
31105
31037
|
};
|
@@ -48,7 +48,7 @@ class TaoApplication extends TaoModule
|
|
48
48
|
|
49
49
|
.on 'turbolinks:before-cache', (e) =>
|
50
50
|
@trigger 'before-page-cache', [@currentPage]
|
51
|
-
@currentPage?.
|
51
|
+
@currentPage?.beforeCache?()
|
52
52
|
window.currentPage = @currentPage = null
|
53
53
|
|
54
54
|
.on 'turbolinks:request-end', (e) =>
|
@@ -8,6 +8,8 @@ TaoComponentBasedOn = (superClass = 'HTMLElement') ->
|
|
8
8
|
|
9
9
|
class components[superClass] extends window[superClass]
|
10
10
|
|
11
|
+
count = 0
|
12
|
+
|
11
13
|
@extend: (obj) ->
|
12
14
|
unless obj and typeof obj == 'object'
|
13
15
|
throw new Error('TaoComponent.extend: param should be an object')
|
@@ -75,21 +77,48 @@ TaoComponentBasedOn = (superClass = 'HTMLElement') ->
|
|
75
77
|
@get 'jq', ->
|
76
78
|
$(@)
|
77
79
|
|
80
|
+
@attribute 'taoId'
|
81
|
+
|
82
|
+
constructor: ->
|
83
|
+
instance = window[superClass].apply(@, arguments)
|
84
|
+
@_created()
|
85
|
+
instance
|
86
|
+
|
78
87
|
connectedCallback: ->
|
79
|
-
|
80
|
-
@
|
81
|
-
|
82
|
-
|
88
|
+
$ =>
|
89
|
+
unless @initialized
|
90
|
+
@taoId = ++count
|
91
|
+
@_init()
|
92
|
+
@initialized = true
|
83
93
|
|
84
|
-
|
85
|
-
|
94
|
+
@connected = true
|
95
|
+
@_connected()
|
86
96
|
|
87
97
|
disconnectedCallback: ->
|
88
|
-
|
89
|
-
|
98
|
+
$ =>
|
99
|
+
@connected = false
|
100
|
+
@_disconnected()
|
101
|
+
|
102
|
+
attributeChangedCallback: (name) ->
|
103
|
+
@_attributeChanged name
|
104
|
+
|
105
|
+
_created: ->
|
106
|
+
# called when the element was created
|
107
|
+
|
108
|
+
_init: ->
|
109
|
+
# called when the element was connected to dom for the first time
|
110
|
+
|
111
|
+
_connected: ->
|
112
|
+
# called when the element was connected to dom
|
90
113
|
|
91
|
-
|
92
|
-
|
114
|
+
_disconnected: ->
|
115
|
+
# called when the element was disconnected from dom
|
116
|
+
|
117
|
+
_attributeChanged: (name) ->
|
118
|
+
@["_#{_.camelCase name}Changed"]?()
|
119
|
+
|
120
|
+
beforeCache: ->
|
121
|
+
# called before turbolinks cache pages
|
93
122
|
|
94
123
|
on: (args...) ->
|
95
124
|
@jq.on args...
|
@@ -103,17 +132,6 @@ TaoComponentBasedOn = (superClass = 'HTMLElement') ->
|
|
103
132
|
one: (args...) ->
|
104
133
|
@jq.one args...
|
105
134
|
|
106
|
-
_init: ->
|
107
|
-
# to be implemented
|
108
|
-
|
109
|
-
_connect: ->
|
110
|
-
# to be implemented
|
111
|
-
|
112
|
-
_disconnect: ->
|
113
|
-
# to be implemented
|
114
|
-
|
115
|
-
prepareCache: ->
|
116
|
-
# called before turbolinks cache pages
|
117
135
|
|
118
136
|
window.TaoComponentBasedOn = TaoComponentBasedOn
|
119
137
|
window.TaoComponent = TaoComponentBasedOn 'HTMLElement'
|
@@ -4,9 +4,9 @@ class TaoPage extends TaoComponent
|
|
4
4
|
|
5
5
|
@attribute 'layout'
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
el.
|
7
|
+
beforeCache: ->
|
8
|
+
@jp.find('[tao-id]').each (i, el) =>
|
9
|
+
el.beforeCache?()
|
10
10
|
null
|
11
11
|
|
12
12
|
window.TaoPage = TaoPage
|
Binary file
|
Binary file
|
@@ -42,17 +42,15 @@ var Deferred = void 0;
|
|
42
42
|
(function () {
|
43
43
|
'use strict';
|
44
44
|
|
45
|
-
var doc = document;
|
46
|
-
var win = window;
|
47
|
-
|
48
45
|
/**
|
49
46
|
* Gets 'customElement' from window so that it could be modified after
|
50
47
|
* the polyfill loads.
|
51
48
|
* @function
|
52
49
|
* @return {CustomElementRegistry}
|
53
50
|
*/
|
51
|
+
|
54
52
|
var _customElements = function _customElements() {
|
55
|
-
return
|
53
|
+
return window['customElements'];
|
56
54
|
};
|
57
55
|
|
58
56
|
var _observerProp = '__$CE_observer';
|
@@ -93,7 +91,7 @@ var Deferred = void 0;
|
|
93
91
|
// IE 11 requires the third and fourth arguments be present. If the third
|
94
92
|
// arg is null, it applies the default behaviour. However IE also requires
|
95
93
|
// the fourth argument be present even though the other browsers ignore it.
|
96
|
-
return
|
94
|
+
return document.createTreeWalker(root, NodeFilter.SHOW_ELEMENT, null, false);
|
97
95
|
}
|
98
96
|
|
99
97
|
/**
|
@@ -371,9 +369,9 @@ var Deferred = void 0;
|
|
371
369
|
var onReady = function onReady() {
|
372
370
|
_this2._upgradeScheduled = false;
|
373
371
|
if (!_this2._mainDocumentObserver) {
|
374
|
-
_this2._mainDocumentObserver = _this2._observeRoot(
|
372
|
+
_this2._mainDocumentObserver = _this2._observeRoot(document);
|
375
373
|
}
|
376
|
-
_this2._addNodes(
|
374
|
+
_this2._addNodes(document.childNodes);
|
377
375
|
};
|
378
376
|
if (window['HTMLImports']) {
|
379
377
|
window['HTMLImports']['whenReady'](onReady);
|
@@ -709,7 +707,7 @@ var Deferred = void 0;
|
|
709
707
|
// patch window.HTMLElement
|
710
708
|
|
711
709
|
/** @const */
|
712
|
-
var origHTMLElement =
|
710
|
+
var origHTMLElement = window.HTMLElement;
|
713
711
|
CustomElementRegistry.prototype['nativeHTMLElement'] = origHTMLElement;
|
714
712
|
/**
|
715
713
|
* @type {function(new: HTMLElement)}
|
@@ -726,21 +724,24 @@ var Deferred = void 0;
|
|
726
724
|
if (this.constructor) {
|
727
725
|
// Find the tagname of the constructor and create a new element with it
|
728
726
|
var tagName = customElements._constructors.get(this.constructor);
|
729
|
-
return _createElement(
|
727
|
+
return _createElement(document, tagName, undefined, false);
|
730
728
|
}
|
731
729
|
throw new Error('Unknown constructor. Did you call customElements.define()?');
|
732
730
|
};
|
733
|
-
|
734
|
-
|
735
|
-
|
736
|
-
|
731
|
+
window.HTMLElement = newHTMLElement;
|
732
|
+
// By setting the patched HTMLElement's prototype property to the native
|
733
|
+
// HTMLElement's prototype we make sure that:
|
734
|
+
// document.createElement('a') instanceof HTMLElement
|
735
|
+
// works because instanceof uses HTMLElement.prototype, which is on the
|
736
|
+
// ptototype chain of built-in elements.
|
737
|
+
window.HTMLElement.prototype = origHTMLElement.prototype;
|
737
738
|
|
738
739
|
// patch doc.createElement
|
739
740
|
// TODO(justinfagnani): why is the cast neccessary?
|
740
741
|
// Can we fix the Closure DOM externs?
|
741
|
-
var
|
742
|
+
var _nativeCreateElement =
|
742
743
|
/** @type {function(this:Document, string, (Object|undefined)=): !HTMLElement}}*/
|
743
|
-
|
744
|
+
document.createElement;
|
744
745
|
|
745
746
|
/**
|
746
747
|
* Creates a new element and upgrades it if it's a custom element.
|
@@ -754,7 +755,7 @@ var Deferred = void 0;
|
|
754
755
|
*/
|
755
756
|
function _createElement(doc, tagName, options, callConstructor) {
|
756
757
|
var customElements = _customElements();
|
757
|
-
var element = options ?
|
758
|
+
var element = options ? _nativeCreateElement.call(doc, tagName, options) : _nativeCreateElement.call(doc, tagName);
|
758
759
|
var definition = customElements._definitions.get(tagName.toLowerCase());
|
759
760
|
if (definition) {
|
760
761
|
customElements._upgradeElement(element, definition, callConstructor);
|
@@ -762,35 +763,35 @@ var Deferred = void 0;
|
|
762
763
|
customElements._observeRoot(element);
|
763
764
|
return element;
|
764
765
|
};
|
765
|
-
|
766
|
-
return _createElement(
|
766
|
+
document.createElement = function (tagName, options) {
|
767
|
+
return _createElement(document, tagName, options, true);
|
767
768
|
};
|
768
769
|
|
769
|
-
// patch
|
770
|
+
// patch document.createElementNS
|
770
771
|
|
771
772
|
var HTMLNS = 'http://www.w3.org/1999/xhtml';
|
772
773
|
|
773
774
|
/** @type {function(this:Document,string,string):Element} */
|
774
|
-
var
|
775
|
-
|
775
|
+
var _nativeCreateElementNS = document.createElementNS;
|
776
|
+
document.createElementNS =
|
776
777
|
/** @type {function(this:Document,(string|null),string):!Element} */
|
777
778
|
function (namespaceURI, qualifiedName) {
|
778
|
-
if (namespaceURI ===
|
779
|
-
return
|
779
|
+
if (namespaceURI === HTMLNS) {
|
780
|
+
return document.createElement(qualifiedName);
|
780
781
|
} else {
|
781
|
-
return
|
782
|
+
return _nativeCreateElementNS.call(document, namespaceURI, qualifiedName);
|
782
783
|
}
|
783
784
|
};
|
784
785
|
|
785
786
|
// patch Element.attachShadow
|
786
787
|
|
787
788
|
/** @type {function({closed: boolean})} */
|
788
|
-
var
|
789
|
-
if (
|
789
|
+
var _nativeAttachShadow = Element.prototype['attachShadow'];
|
790
|
+
if (_nativeAttachShadow) {
|
790
791
|
Object.defineProperty(Element.prototype, 'attachShadow', {
|
791
792
|
value: function value(options) {
|
792
793
|
/** @type {!Node} */
|
793
|
-
var root =
|
794
|
+
var root = _nativeAttachShadow.call(this, options);
|
794
795
|
/** @type {CustomElementRegistry} */
|
795
796
|
var customElements = _customElements();
|
796
797
|
customElements._observeRoot(root);
|
@@ -799,11 +800,11 @@ var Deferred = void 0;
|
|
799
800
|
});
|
800
801
|
}
|
801
802
|
|
802
|
-
// patch
|
803
|
+
// patch document.importNode
|
803
804
|
|
804
|
-
var
|
805
|
-
|
806
|
-
var clone = /** @type{!Node} */
|
805
|
+
var _nativeImportNode = document.importNode;
|
806
|
+
document.importNode = function (node, deep) {
|
807
|
+
var clone = /** @type{!Node} */_nativeImportNode.call(document, node, deep);
|
807
808
|
var customElements = _customElements();
|
808
809
|
var nodes = isElement(clone) ? [clone] : clone.childNodes;
|
809
810
|
/** @type {CustomElementRegistry} */_customElements()._addNodes(nodes);
|
@@ -812,13 +813,13 @@ var Deferred = void 0;
|
|
812
813
|
|
813
814
|
// patch Element.setAttribute & removeAttribute
|
814
815
|
|
815
|
-
var
|
816
|
+
var _nativeSetAttribute = Element.prototype.setAttribute;
|
816
817
|
Element.prototype['setAttribute'] = function (name, value) {
|
817
|
-
changeAttribute(this, name, value,
|
818
|
+
changeAttribute(this, name, value, _nativeSetAttribute);
|
818
819
|
};
|
819
|
-
var
|
820
|
+
var _nativeRemoveAttribute = Element.prototype.removeAttribute;
|
820
821
|
Element.prototype['removeAttribute'] = function (name) {
|
821
|
-
changeAttribute(this, name, null,
|
822
|
+
changeAttribute(this, name, null, _nativeRemoveAttribute);
|
822
823
|
};
|
823
824
|
|
824
825
|
function changeAttribute(element, name, value, operation) {
|
@@ -16,7 +16,7 @@ if window.customElements && !customElements.polyfilled
|
|
16
16
|
const tagnameByConstructor = new Map();
|
17
17
|
|
18
18
|
/**
|
19
|
-
* Map of tag
|
19
|
+
* Map of tag names to user-provided constructors.
|
20
20
|
*
|
21
21
|
* @type {Map<string, Function>}
|
22
22
|
*/
|
@@ -49,9 +49,12 @@ if window.customElements && !customElements.polyfilled
|
|
49
49
|
// HTMLElement.call() during initialization
|
50
50
|
browserConstruction = false;
|
51
51
|
};
|
52
|
-
|
53
|
-
|
54
|
-
|
52
|
+
// By setting the patched HTMLElement's prototype property to the native
|
53
|
+
// HTMLElement's prototype we make sure that:
|
54
|
+
// document.createElement('a') instanceof HTMLElement
|
55
|
+
// works because instanceof uses HTMLElement.prototype, which is on the
|
56
|
+
// ptototype chain of built-in elements.
|
57
|
+
window.HTMLElement.prototype = NativeHTMLElement.prototype;
|
55
58
|
|
56
59
|
window.customElements.define = (tagname, elementClass) => {
|
57
60
|
const elementProto = elementClass.prototype;
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tao_on_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Siyuan Liu
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: exe
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-01-
|
12
|
+
date: 2017-01-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: turbolinks
|
@@ -147,6 +147,7 @@ executables: []
|
|
147
147
|
extensions: []
|
148
148
|
extra_rdoc_files: []
|
149
149
|
files:
|
150
|
+
- ".DS_Store"
|
150
151
|
- ".blade.yml"
|
151
152
|
- ".gitignore"
|
152
153
|
- ".travis.yml"
|
@@ -176,9 +177,10 @@ files:
|
|
176
177
|
- lib/tao_on_rails/rails/version.rb
|
177
178
|
- lib/tasks/tao_icons.rake
|
178
179
|
- tao_on_rails.gemspec
|
180
|
+
- vendor/assets/javascripts/.DS_Store
|
181
|
+
- vendor/assets/javascripts/polyfills/.DS_Store
|
179
182
|
- vendor/assets/javascripts/polyfills/custom-elements.js
|
180
183
|
- vendor/assets/javascripts/polyfills/es6.js
|
181
|
-
- vendor/assets/javascripts/polyfills/htmlelement-instanceof.js
|
182
184
|
- vendor/assets/javascripts/polyfills/native-shim.coffee
|
183
185
|
- vendor/assets/javascripts/polyfills/polyfills.coffee
|
184
186
|
- vendor/assets/stylesheets/normalize.css
|
@@ -1,91 +0,0 @@
|
|
1
|
-
/**
|
2
|
-
* @license
|
3
|
-
* Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
|
4
|
-
* This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
|
5
|
-
* The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
|
6
|
-
* The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
|
7
|
-
* Code distributed by Google as part of the polymer project is also
|
8
|
-
* subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
|
9
|
-
*/
|
10
|
-
(function() {
|
11
|
-
'use strict';
|
12
|
-
|
13
|
-
// patch all built-in subclasses of HTMLElement to inherit from the new HTMLElement
|
14
|
-
// See https://html.spec.whatwg.org/multipage/indices.html#element-interfaces
|
15
|
-
|
16
|
-
/** @const */
|
17
|
-
var htmlElementSubclasses = [
|
18
|
-
'Button',
|
19
|
-
'Canvas',
|
20
|
-
'Data',
|
21
|
-
'Head',
|
22
|
-
'Mod',
|
23
|
-
'TableCell',
|
24
|
-
'TableCol',
|
25
|
-
'Anchor',
|
26
|
-
'Area',
|
27
|
-
'Base',
|
28
|
-
'Body',
|
29
|
-
'BR',
|
30
|
-
'DataList',
|
31
|
-
'Details',
|
32
|
-
'Dialog',
|
33
|
-
'Div',
|
34
|
-
'DList',
|
35
|
-
'Embed',
|
36
|
-
'FieldSet',
|
37
|
-
'Form',
|
38
|
-
'Heading',
|
39
|
-
'HR',
|
40
|
-
'Html',
|
41
|
-
'IFrame',
|
42
|
-
'Image',
|
43
|
-
'Input',
|
44
|
-
'Keygen',
|
45
|
-
'Label',
|
46
|
-
'Legend',
|
47
|
-
'LI',
|
48
|
-
'Link',
|
49
|
-
'Map',
|
50
|
-
'Media',
|
51
|
-
'Menu',
|
52
|
-
'MenuItem',
|
53
|
-
'Meta',
|
54
|
-
'Meter',
|
55
|
-
'Object',
|
56
|
-
'OList',
|
57
|
-
'OptGroup',
|
58
|
-
'Option',
|
59
|
-
'Output',
|
60
|
-
'Paragraph',
|
61
|
-
'Param',
|
62
|
-
'Picture',
|
63
|
-
'Pre',
|
64
|
-
'Progress',
|
65
|
-
'Quote',
|
66
|
-
'Script',
|
67
|
-
'Select',
|
68
|
-
'Slot',
|
69
|
-
'Source',
|
70
|
-
'Span',
|
71
|
-
'Style',
|
72
|
-
'TableCaption',
|
73
|
-
'Table',
|
74
|
-
'TableRow',
|
75
|
-
'TableSection',
|
76
|
-
'Template',
|
77
|
-
'TextArea',
|
78
|
-
'Time',
|
79
|
-
'Title',
|
80
|
-
'Track',
|
81
|
-
'UList',
|
82
|
-
'Unknown',
|
83
|
-
];
|
84
|
-
|
85
|
-
for (var i = 0; i < htmlElementSubclasses.length; i++) {
|
86
|
-
var ctor = window['HTML' + htmlElementSubclasses[i] + 'Element'];
|
87
|
-
if (ctor) {
|
88
|
-
ctor.prototype.__proto__ = window.HTMLElement.prototype;
|
89
|
-
}
|
90
|
-
}
|
91
|
-
})();
|