Permalink
Browse files

added IE8 support in the main file

  • Loading branch information...
1 parent edff27b commit 7038cfa374a2572839402ec0ff1956bb893468b2 @WebReflection committed Mar 19, 2015
Showing with 29,923 additions and 1,377 deletions.
  1. +0 −1 .gitignore
  2. +1 −3 Makefile
  3. +10 −1 README.md
  4. +1 −1 bower.json
  5. +0 −2 build/document-register-element-ie8.js
  6. +0 −649 build/document-register-element-ie8.max.js
  7. +1 −1 build/document-register-element.amd.js
  8. +1 −1 build/document-register-element.js
  9. +132 −24 build/document-register-element.max.amd.js
  10. +132 −24 build/document-register-element.max.js
  11. +3 −1 cdnjs.json
  12. +19 −0 examples/base.html
  13. +19 −0 examples/bower_components/core-component-page/.bower.json
  14. +6 −0 examples/bower_components/core-component-page/README.md
  15. BIN examples/bower_components/core-component-page/bowager-logo.png
  16. +9 −0 examples/bower_components/core-component-page/bower.json
  17. +37 −0 examples/bower_components/core-component-page/core-component-page.html
  18. +23 −0 examples/bower_components/core-component-page/demo.html
  19. +22 −0 examples/bower_components/core-component-page/index.html
  20. +21 −0 examples/bower_components/core-shared-lib/.bower.json
  21. +4 −0 examples/bower_components/core-shared-lib/README.md
  22. +11 −0 examples/bower_components/core-shared-lib/bower.json
  23. +151 −0 examples/bower_components/core-shared-lib/core-shared-lib.html
  24. +33 −0 examples/bower_components/core-shared-lib/demo.html
  25. +22 −0 examples/bower_components/core-shared-lib/index.html
  26. +47 −0 examples/bower_components/core-shared-lib/tests/html/core-shared-lib.html
  27. +3 −0 examples/bower_components/core-shared-lib/tests/js/htmltests.js
  28. +14 −0 examples/bower_components/core-shared-lib/tests/runner.html
  29. +6 −0 examples/bower_components/core-shared-lib/tests/tests.json
  30. +39 −0 examples/bower_components/google-apis/.bower.json
  31. +13 −0 examples/bower_components/google-apis/LICENSE
  32. +4 −0 examples/bower_components/google-apis/README.md
  33. +30 −0 examples/bower_components/google-apis/bower.json
  34. +43 −0 examples/bower_components/google-apis/demo.html
  35. +16 −0 examples/bower_components/google-apis/google-apis.html
  36. +278 −0 examples/bower_components/google-apis/google-client-api.html
  37. +44 −0 examples/bower_components/google-apis/google-js-api.html
  38. +43 −0 examples/bower_components/google-apis/google-jsapi.html
  39. +141 −0 examples/bower_components/google-apis/google-maps-api.html
  40. +42 −0 examples/bower_components/google-apis/google-plusone-api.html
  41. +42 −0 examples/bower_components/google-apis/google-realtime-api.html
  42. +44 −0 examples/bower_components/google-apis/google-youtube-api.html
  43. +18 −0 examples/bower_components/google-apis/index.html
  44. +45 −0 examples/bower_components/google-map/.bower.json
  45. +13 −0 examples/bower_components/google-map/LICENSE
  46. +5 −0 examples/bower_components/google-map/README.md
  47. +35 −0 examples/bower_components/google-map/bower.json
  48. +42 −0 examples/bower_components/google-map/demo.html
  49. +161 −0 examples/bower_components/google-map/google-map-directions.html
  50. +94 −0 examples/bower_components/google-map/google-map-search.html
  51. +1,001 −0 examples/bower_components/google-map/google-map.html
  52. +18 −0 examples/bower_components/google-map/index.html
  53. +31 −0 examples/bower_components/google-map/metadata.html
  54. +32 −0 examples/bower_components/polymer/.bower.json
  55. +21 −0 examples/bower_components/polymer/README.md
  56. +23 −0 examples/bower_components/polymer/bower.json
  57. +26 −0 examples/bower_components/polymer/build.log
  58. +286 −0 examples/bower_components/polymer/layout.html
  59. +12 −0 examples/bower_components/polymer/polymer.html
  60. +11,859 −0 examples/bower_components/polymer/polymer.js
  61. +14 −0 examples/bower_components/polymer/polymer.min.js
  62. +23 −0 examples/bower_components/webcomponentsjs/.bower.json
  63. +634 −0 examples/bower_components/webcomponentsjs/CustomElements.js
  64. +11 −0 examples/bower_components/webcomponentsjs/CustomElements.min.js
  65. +764 −0 examples/bower_components/webcomponentsjs/HTMLImports.js
  66. +11 −0 examples/bower_components/webcomponentsjs/HTMLImports.min.js
  67. +73 −0 examples/bower_components/webcomponentsjs/README.md
  68. +4,277 −0 examples/bower_components/webcomponentsjs/ShadowDOM.js
  69. +13 −0 examples/bower_components/webcomponentsjs/ShadowDOM.min.js
  70. +14 −0 examples/bower_components/webcomponentsjs/bower.json
  71. +31 −0 examples/bower_components/webcomponentsjs/build.log
  72. +31 −0 examples/bower_components/webcomponentsjs/package.json
  73. +1,728 −0 examples/bower_components/webcomponentsjs/webcomponents-lite.js
  74. +11 −0 examples/bower_components/webcomponentsjs/webcomponents-lite.min.js
  75. +6,114 −0 examples/bower_components/webcomponentsjs/webcomponents.js
  76. +14 −0 examples/bower_components/webcomponentsjs/webcomponents.min.js
  77. +35 −0 examples/google-map-plain.html
  78. +38 −0 examples/google-map.html
  79. BIN examples/img/staticmap.png
  80. +186 −0 examples/js/Object.prototype.watch.js
  81. +2 −0 examples/js/document-register-element.js
  82. +2 −0 examples/js/dre-ie8-upfront-fix.js
  83. +34 −0 examples/js/register.js
  84. +2 −0 examples/js/restyle.js
  85. +110 −0 examples/js/x-bind.js
  86. +128 −0 examples/js/x-clock.js
  87. +161 −0 examples/js/x-map.js
  88. +22 −0 examples/two-ways-binding.html
  89. +26 −0 examples/x-clock.html
  90. +20 −0 examples/x-map-plain.html
  91. +30 −0 examples/x-map.html
  92. 0 ie8.htc
  93. +0 −21 ie8.html
  94. +2 −2 index.html
  95. +1 −1 package.json
  96. +0 −621 src/document-register-element-ie8.js
  97. +132 −24 src/document-register-element.js
View
@@ -1,3 +1,2 @@
.DS_Store
-examples/
node_modules/
View
@@ -22,7 +22,7 @@ AMD = $(VAR)
build:
make clean
make var
- make ie8
+# make ie8
make dreie8
# make node
make amd
@@ -90,8 +90,6 @@ duk:
size:
wc -c build/$(REPO).max.js
gzip -c build/$(REPO).js | wc -c
- wc -c build/$(REPO)-ie8.max.js
- gzip -c build/$(REPO)-ie8.js | wc -c
# hint built file
hint:
View
@@ -208,4 +208,13 @@ In order to prevent footguns inside `attributeChangedCallback` invocations causi
#### About IE8
-I don't think there's any library out there able to bring IE8 to these levels, but the code used in this project is syntactically compatible with this old pal too ... moreover, if anyone would ever manage to bring the deprecated [Mutation events](https://developer.mozilla.org/en-US/docs/Web/Guide/Events/Mutation_events) API to IE8, being the `observer` way more complex to shim, this library should work out of the box!
+Starting from version `0.2.0` there is an experimental support for IE8.
+There is a specific file that needs to be loaded in IE8 only upfront, plus a sequence of polyfills
+that will be simply ignored by every browser but downloaded in IE8.
+
+Please check [base.html] to have a basic model to reuse in order to support IE8.
+
+All tests pass and there is a [map component example](examples/x-map.html) that alredy works in IE8 too.
+
+Remember there are few things to consider when IE8 is a target but since it didn't cost many bytes
+to have it in, I've decided to merge the logic and maintain only one file that will work in IE8 too.
View
@@ -1,7 +1,7 @@
{
"name": "document-register-element",
"description": "A stand-alone working lightweight version of the W3C Custom Elements specification",
- "version": "0.1.9",
+ "version": "0.2.0",
"main": "./build/document-register-element.js",
"ignore": [
"test",
@@ -1,2 +0,0 @@
-/*! (C) WebReflection Mit Style License */
-(function(e,t,n,r){"use strict";function G(e,t){for(var n=0,r=e.length;n<r;n++)at(e[n],t)}function Y(e){for(var t=0,n=e.length,r;t<n;t++)r=e[t],Q(r,m[et(r)])}function Z(e){return function(t){P(t)&&(at(t,e),G(t.querySelectorAll(g),e))}}function et(e){var t=e.getAttribute("is"),n=e.nodeName.toUpperCase(),r=b.call(v,t?h+t.toUpperCase():c+n);return t&&-1<r&&!tt(n,t)?-1:r}function tt(e,t){return-1<g.indexOf(e+'[is="'+t+'"]')}function nt(e){var t=e.currentTarget,n=e.attrChange,r=e.prevValue,i=e.newValue;t.attributeChangedCallback&&e.attrName!=="style"&&t.attributeChangedCallback(e.attrName,n===e.ADDITION?null:r,n===e.REMOVAL?null:i)}function rt(e){var t=Z(e);return function(e){t(e.target)}}function it(e){W&&(W=!1,e.currentTarget.removeEventListener(f,it)),G((e.target||t).querySelectorAll(g),e.detail===o?o:s),D&&ut()}function st(e,t){var n=this;j.call(n,e,t),X.call(n,{target:n})}function ot(e,t){O(e,t),J?J.observe(e,q):(z&&(e.setAttribute=st,e[i]=$(e),e.addEventListener(l,X)),e.addEventListener(a,nt)),e.createdCallback&&(e.created=!0,e.createdCallback(),e.created=!1)}function ut(){for(var e,t=0,n=H.length;t<n;t++)e=H[t],y.contains(e)||(H.splice(t,1),at(e,o))}function at(e,t){var n,r=et(e);-1<r&&(K(e,m[r]),r=0,t===s&&!e[s]?(e[o]=!1,e[s]=!0,r=1,D&&b.call(H,e)<0&&H.push(e)):t===o&&!e[o]&&(e[s]=!1,e[o]=!0,r=1),r&&(n=e[t+"Callback"])&&n.call(e))}if(r in t)return;var i="__"+r+(Math.random()*1e5>>0),s="attached",o="detached",u="extends",a="DOMAttrModified",f="DOMContentLoaded",l="DOMSubtreeModified",c="<",h="=",p=/^[A-Z][A-Z0-9]*(?:-[A-Z0-9]+)+$/,d=["ANNOTATION-XML","COLOR-PROFILE","FONT-FACE","FONT-FACE-SRC","FONT-FACE-URI","FONT-FACE-FORMAT","FONT-FACE-NAME","MISSING-GLYPH"],v=[],m=[],g="",y=t.documentElement,b=v.indexOf||function(e){for(var t=this.length;t--&&this[t]!==e;);return t},w=n.prototype,E=w.hasOwnProperty,S=w.isPrototypeOf,x=n.defineProperty,T=n.getOwnPropertyDescriptor,N=n.getOwnPropertyNames,C=n.getPrototypeOf,k=n.setPrototypeOf,L=!!n.__proto__,A=n.create||function ft(e){return e?(ft.prototype=e,new ft):this},O=k||(L?function(e,t){return e.__proto__=t,e}:N&&T?function(){function e(e,t){for(var n,r=N(t),i=0,s=r.length;i<s;i++)n=r[i],E.call(e,n)||x(e,n,T(t,n))}return function(t,n){do e(t,n);while(n=C(n));return t}}():function(e,t){for(var n in t)e[n]=t[n];return e}),M=e.MutationObserver||e.WebKitMutationObserver,_=(e.HTMLElement||e.Element||e.Node).prototype,D=!S.call(_,y),P=D?function(e){return e.nodeType===1}:function(e){return S.call(_,e)},H=D&&[],B=_.cloneNode,j=_.setAttribute,F=_.removeAttribute,I=t.createElement,q=M&&{attributes:!0,characterData:!0,attributeOldValue:!0},R=M||function(e){z=!1,y.removeEventListener(a,R)},U=!1,z=!0,W=!0,X,V,$,J,K,Q;k||L?(K=function(e,t){S.call(t,e)||ot(e,t)},Q=ot):(K=function(e,t){e[i]||(e[i]=n(!0),ot(e,t))},Q=K),D?(z=!1,function(){var e=T(_,"addEventListener"),t=e.value,n=function(e){var t=new CustomEvent(a,{bubles:!0});t.attrName=e,t.prevValue=this.getAttribute(e),t.newValue=null,t.REMOVAL=t.attrChange=2,F.call(this,e),this.dispatchEvent(t)},r=function(e,t){var n=this.hasAttribute(e),r=n&&this.getAttribute(e),i=new CustomEvent(a,{bubles:!0});j.call(this,e,t),i.attrName=e,i.prevValue=n?r:null,i.newValue=t,n?i.MODIFICATION=i.attrChange=1:i.ADDITION=i.attrChange=0,this.dispatchEvent(i)},s=function(e){var t=e.currentTarget,n=t[i],r=e.propertyName,s;n.hasOwnProperty(r)&&(n=n[r],s=new CustomEvent(a,{bubles:!0}),s.attrName=n.name,s.prevValue=n.value||null,s.newValue=n.value=t[r]||null,s.prevValue==null?s.ADDITION=s.attrChange=0:s.MODIFICATION=s.attrChange=1,t.dispatchEvent(s))};e.value=function(e,o,u){e===a&&this.attributeChangedCallback&&this.setAttribute!==r&&(this[i]={className:{name:"class",value:this.className}},this.setAttribute=r,this.removeAttribute=n,t.call(this,"propertychange",s)),t.call(this,e,o,u)},x(_,"addEventListener",e)}()):M||(y.addEventListener(a,R),y.setAttribute(i,1),y.removeAttribute(i),z&&(X=function(e){var t=this,n,r,s;if(t===e.target){n=t[i],t[i]=r=$(t);for(s in r){if(!(s in n))return V(0,t,s,n[s],r[s],"ADDITION");if(r[s]!==n[s])return V(1,t,s,n[s],r[s],"MODIFICATION")}for(s in n)if(!(s in r))return V(2,t,s,n[s],r[s],"REMOVAL")}},V=function(e,t,n,r,i,s){var o={attrChange:e,currentTarget:t,attrName:n,prevValue:r,newValue:i};o[s]=e,nt(o)},$=function(e){for(var t,n,r={},i=e.attributes,s=0,o=i.length;s<o;s++)t=i[s],n=t.name,n!=="setAttribute"&&(r[n]=t.value);return r})),t[r]=function(n,r){x=n.toUpperCase(),U||(U=!0,M?(J=function(e,t){function n(e,t){for(var n=0,r=e.length;n<r;t(e[n++]));}return new M(function(r){for(var i,s,o=0,u=r.length;o<u;o++)i=r[o],i.type==="childList"?(n(i.addedNodes,e),n(i.removedNodes,t)):(s=i.target,s.attributeChangedCallback&&i.attributeName!=="style"&&s.attributeChangedCallback(i.attributeName,i.oldValue,s.getAttribute(i.attributeName)))})}(Z(s),Z(o)),J.observe(t,{childList:!0,subtree:!0})):(t.addEventListener("DOMNodeInserted",rt(s)),t.addEventListener("DOMNodeRemoved",rt(o))),t.addEventListener(f,it),t.addEventListener("readystatechange",it),t.createElement=function(e,n){var r=I.apply(t,arguments),i=""+e,s=b.call(v,(n?h:c)+(n||i).toUpperCase()),o=-1<s;return n&&(r.setAttribute("is",n=n.toLowerCase()),o&&(o=tt(i.toUpperCase(),n))),o&&Q(r,m[s]),r},_.cloneNode=function(e){var t=B.call(this,!!e),n=et(t);return-1<n&&Q(t,m[n]),e&&Y(t.querySelectorAll(g)),t});if(-2<b.call(v,h+x)+b.call(v,c+x))throw new Error("A "+n+" type is already registered");if(!p.test(x)||-1<b.call(d,x))throw new Error("The type "+n+" is invalid");var i=function(){return t.createElement(y,l&&x)},a=r||w,l=E.call(a,u),y=l?r[u].toUpperCase():x,S=v.push((l?h:c)+x)-1,x;return g=g.concat(g.length?",":"",l?y+'[is="'+n.toLowerCase()+'"]':y),i.prototype=m[S]=E.call(a,"prototype")?a.prototype:A(_),G(t.querySelectorAll(g),s),i}})(window,document,Object,"registerElement");
Oops, something went wrong.

0 comments on commit 7038cfa

Please sign in to comment.