polymer-rails 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 39009e09a451db6b696b64d747b85eabe02ae38b
4
- data.tar.gz: 2f05a0e70596c06e796cd2070940e691a4d38293
3
+ metadata.gz: 4ccbca115d533cf6aa8769934efda7779e1c420b
4
+ data.tar.gz: 927f6f95af53a59e42436cec30a1916911eb68ca
5
5
  SHA512:
6
- metadata.gz: ec975c0220275695ad07be0c423d728e2d1971780e5c7150c7974d934eb9fd15725f10b1d06df29c0e64ed0b41ec6db58294a48eb5c79527afe8a165d067b4de
7
- data.tar.gz: 22fe13f96a2eecfe72ab794a012656eb3d65cfa5653830edb82135a51dcbf86ad81eb767629cc426dcd28ef14fc6cbd8859dc88ae3420c6b0d91bc9848f73987
6
+ metadata.gz: b870fe572b064787015fc7041b321facf6c356d46bae30b816310711be9498bf8c377e35a3a26d641822a76a2dc48ae54b051ece3b7551396c4eaf2e751a02c5
7
+ data.tar.gz: d557945c318a077454f4e05698b4e962280e6fb422023249f9794e2d89cf344a6137b9973d4cf6d5cd542c860edfb99f443c19071c4c1c20b29c418586f41082
data/Rakefile CHANGED
@@ -1 +1,19 @@
1
1
  require "bundler/gem_tasks"
2
+
3
+ task :default
4
+
5
+ if RUBY_PLATFORM =~ /java/
6
+ require 'maven/ruby/maven'
7
+ require 'jar_installer'
8
+
9
+ desc 'setup jar dependencies to be used for "testing" and generates lib/example_jars.rb'
10
+ task :setup do
11
+ Jars::JarInstaller.install_jars
12
+ end
13
+
14
+ desc 'compile src/main/java/** into lib/example.jar'
15
+ task :jar do
16
+ Maven::Ruby::Maven.new.exec 'prepare-package'
17
+ end
18
+
19
+ end
@@ -217,6 +217,9 @@ Polymer.telemetry.instanceCount = 0;
217
217
  (function () {
218
218
  var modules = {};
219
219
  var lcModules = {};
220
+ var findModule = function (id) {
221
+ return modules[id] || lcModules[id.toLowerCase()];
222
+ };
220
223
  var DomModule = function () {
221
224
  return document.createElement('dom-module');
222
225
  };
@@ -235,10 +238,10 @@ lcModules[id.toLowerCase()] = this;
235
238
  }
236
239
  },
237
240
  import: function (id, selector) {
238
- var m = modules[id] || lcModules[id.toLowerCase()];
241
+ var m = findModule(id);
239
242
  if (!m) {
240
243
  forceDocumentUpgrade();
241
- m = modules[id];
244
+ m = findModule(id);
242
245
  }
243
246
  if (m && selector) {
244
247
  m = m.querySelector(selector);
@@ -558,7 +561,7 @@ debouncer.stop();
558
561
  }
559
562
  }
560
563
  });
561
- Polymer.version = '1.1.0';
564
+ Polymer.version = '1.1.1';
562
565
  Polymer.Base._addFeature({
563
566
  _registerFeatures: function () {
564
567
  this._prepIs();
@@ -457,47 +457,43 @@ Polymer.dom.addDebouncer(host.debounce('_distribute', host._distributeContent));
457
457
  }
458
458
  },
459
459
  appendChild: function (node) {
460
- var handled;
461
- this._ensureContentLogicalInfo(node);
462
- this._removeNodeFromHost(node, true);
463
- if (this._nodeIsInLogicalTree(this.node)) {
464
- this._addLogicalInfo(node, this.node);
465
- this._addNodeToHost(node);
466
- handled = this._maybeDistribute(node, this.node);
467
- } else {
468
- this._addNodeToHost(node);
469
- }
470
- if (!handled && !this._tryRemoveUndistributedNode(node)) {
471
- var container = this.node._isShadyRoot ? this.node.host : this.node;
472
- addToComposedParent(container, node);
473
- nativeAppendChild.call(container, node);
474
- }
475
- return node;
460
+ return this._addNode(node);
476
461
  },
477
462
  insertBefore: function (node, ref_node) {
478
- if (!ref_node) {
479
- return this.appendChild(node);
480
- }
481
- var handled;
482
- this._ensureContentLogicalInfo(node);
463
+ return this._addNode(node, ref_node);
464
+ },
465
+ _addNode: function (node, ref_node) {
483
466
  this._removeNodeFromHost(node, true);
484
- if (this._nodeIsInLogicalTree(this.node)) {
467
+ var addedInsertionPoint;
468
+ var root = this.getOwnerRoot();
469
+ if (root) {
470
+ addedInsertionPoint = this._maybeAddInsertionPoint(node, this.node);
471
+ }
472
+ if (this._nodeHasLogicalChildren(this.node)) {
473
+ if (ref_node) {
485
474
  var children = this.childNodes;
486
475
  var index = children.indexOf(ref_node);
487
476
  if (index < 0) {
488
477
  throw Error('The ref_node to be inserted before is not a child ' + 'of this node');
489
478
  }
479
+ }
490
480
  this._addLogicalInfo(node, this.node, index);
491
- this._addNodeToHost(node);
492
- handled = this._maybeDistribute(node, this.node);
493
- } else {
494
- this._addNodeToHost(node);
495
481
  }
496
- if (!handled && !this._tryRemoveUndistributedNode(node)) {
482
+ this._addNodeToHost(node);
483
+ if (!this._maybeDistribute(node, this.node) && !this._tryRemoveUndistributedNode(node)) {
484
+ if (ref_node) {
497
485
  ref_node = ref_node.localName === CONTENT ? this._firstComposedNode(ref_node) : ref_node;
486
+ }
498
487
  var container = this.node._isShadyRoot ? this.node.host : this.node;
499
488
  addToComposedParent(container, node, ref_node);
489
+ if (ref_node) {
500
490
  nativeInsertBefore.call(container, node, ref_node);
491
+ } else {
492
+ nativeAppendChild.call(container, node);
493
+ }
494
+ }
495
+ if (addedInsertionPoint) {
496
+ this._updateInsertionPoints(root.host);
501
497
  }
502
498
  return node;
503
499
  },
@@ -505,14 +501,8 @@ removeChild: function (node) {
505
501
  if (factory(node).parentNode !== this.node) {
506
502
  console.warn('The node to be removed is not a child of this node', node);
507
503
  }
508
- var handled;
509
- if (this._nodeIsInLogicalTree(this.node)) {
510
- this._removeNodeFromHost(node);
511
- handled = this._maybeDistribute(node, this.node);
512
- } else {
513
504
  this._removeNodeFromHost(node);
514
- }
515
- if (!handled) {
505
+ if (!this._maybeDistribute(node, this.node)) {
516
506
  var container = this.node._isShadyRoot ? this.node.host : this.node;
517
507
  if (container === node.parentNode) {
518
508
  removeFromComposedParent(container, node);
@@ -560,7 +550,6 @@ if (hasContent) {
560
550
  var root = this._ownerShadyRootForNode(parent);
561
551
  if (root) {
562
552
  var host = root.host;
563
- this._updateInsertionPoints(host);
564
553
  this._lazyDistribute(host);
565
554
  }
566
555
  }
@@ -570,6 +559,25 @@ this._lazyDistribute(parent);
570
559
  }
571
560
  return parentNeedsDist || hasContent && !wrappedContent;
572
561
  },
562
+ _maybeAddInsertionPoint: function (node, parent) {
563
+ var added;
564
+ if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE && !node.__noContent) {
565
+ var c$ = factory(node).querySelectorAll(CONTENT);
566
+ for (var i = 0, n, np, na; i < c$.length && (n = c$[i]); i++) {
567
+ np = factory(n).parentNode;
568
+ if (np === node) {
569
+ np = parent;
570
+ }
571
+ na = this._maybeAddInsertionPoint(n, np);
572
+ added = added || na;
573
+ }
574
+ } else if (node.localName === CONTENT) {
575
+ saveLightChildrenIfNeeded(parent);
576
+ saveLightChildrenIfNeeded(node);
577
+ added = true;
578
+ }
579
+ return added;
580
+ },
573
581
  _tryRemoveUndistributedNode: function (node) {
574
582
  if (this.node.shadyRoot) {
575
583
  if (node._composedParent) {
@@ -586,20 +594,8 @@ saveLightChildrenIfNeeded(c);
586
594
  saveLightChildrenIfNeeded(factory(c).parentNode);
587
595
  }
588
596
  },
589
- _nodeIsInLogicalTree: function (node) {
590
- return Boolean(node._lightParent !== undefined || node._isShadyRoot || node.shadyRoot);
591
- },
592
- _ensureContentLogicalInfo: function (node) {
593
- if (node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) {
594
- saveLightChildrenIfNeeded(this.node);
595
- var c$ = Array.prototype.slice.call(node.childNodes);
596
- for (var i = 0, n; i < c$.length && (n = c$[i]); i++) {
597
- this._ensureContentLogicalInfo(n);
598
- }
599
- } else if (node.localName === CONTENT) {
600
- saveLightChildrenIfNeeded(this.node);
601
- saveLightChildrenIfNeeded(node);
602
- }
597
+ _nodeHasLogicalChildren: function (node) {
598
+ return Boolean(node._lightChildren !== undefined);
603
599
  },
604
600
  _parentNeedsDistribution: function (parent) {
605
601
  return parent && parent.shadyRoot && hasInsertionPoint(parent.shadyRoot);
@@ -609,6 +605,7 @@ var hostNeedsDist;
609
605
  var root;
610
606
  var parent = node._lightParent;
611
607
  if (parent) {
608
+ factory(node)._distributeParent();
612
609
  root = this._ownerShadyRootForNode(node);
613
610
  if (root) {
614
611
  root.host._elementRemove(node);
@@ -621,7 +618,7 @@ if (root && hostNeedsDist) {
621
618
  this._updateInsertionPoints(root.host);
622
619
  this._lazyDistribute(root.host);
623
620
  } else if (ensureComposedRemoval) {
624
- removeFromComposedParent(parent || node.parentNode, node);
621
+ removeFromComposedParent(node._composedParent, node);
625
622
  }
626
623
  },
627
624
  _removeDistributedChildren: function (root, container) {
@@ -1147,7 +1144,7 @@ node._lightChildren = c$;
1147
1144
  }
1148
1145
  }
1149
1146
  function hasInsertionPoint(root) {
1150
- return Boolean(root._insertionPoints.length);
1147
+ return Boolean(root && root._insertionPoints.length);
1151
1148
  }
1152
1149
  var p = Element.prototype;
1153
1150
  var matchesSelector = p.matches || p.matchesSelector || p.mozMatchesSelector || p.msMatchesSelector || p.oMatchesSelector || p.webkitMatchesSelector;
@@ -1656,6 +1656,9 @@ name: arg,
1656
1656
  model: this._modelForPath(arg)
1657
1657
  };
1658
1658
  var fc = arg[0];
1659
+ if (fc === '-') {
1660
+ fc = arg[1];
1661
+ }
1659
1662
  if (fc >= '0' && fc <= '9') {
1660
1663
  fc = '#';
1661
1664
  }
@@ -2276,30 +2279,24 @@ return m && m._cssText || '';
2276
2279
  _cssFromElement: function (element) {
2277
2280
  var cssText = '';
2278
2281
  var content = element.content || element;
2279
- var sourceDoc = element.ownerDocument;
2280
2282
  var e$ = Array.prototype.slice.call(content.querySelectorAll(this.MODULE_STYLES_SELECTOR));
2281
- for (var i = 0, e, resolveDoc, addModule; i < e$.length; i++) {
2283
+ for (var i = 0, e; i < e$.length; i++) {
2282
2284
  e = e$[i];
2283
- resolveDoc = sourceDoc;
2284
- addModule = null;
2285
2285
  if (e.localName === 'template') {
2286
2286
  cssText += this._cssFromElement(e);
2287
2287
  } else {
2288
2288
  if (e.localName === 'style') {
2289
- addModule = e.getAttribute(this.INCLUDE_ATTR);
2289
+ var include = e.getAttribute(this.INCLUDE_ATTR);
2290
2290
  e = e.__appliedElement || e;
2291
2291
  e.parentNode.removeChild(e);
2292
- } else {
2293
- e = e.import && e.import.body;
2294
- resolveDoc = e.ownerDocument;
2292
+ cssText += this.resolveCss(e.textContent, element.ownerDocument);
2293
+ if (include) {
2294
+ cssText += this.cssFromModules(include);
2295
2295
  }
2296
- if (e) {
2297
- cssText += this.resolveCss(e.textContent, resolveDoc);
2296
+ } else if (e.import && e.import.body) {
2297
+ cssText += this.resolveCss(e.import.body.textContent, e.import);
2298
2298
  }
2299
2299
  }
2300
- if (addModule) {
2301
- cssText += this.cssFromModules(addModule);
2302
- }
2303
2300
  }
2304
2301
  return cssText;
2305
2302
  },
@@ -3234,16 +3231,18 @@ var e = this.__appliedElement || this;
3234
3231
  if (this.include) {
3235
3232
  e.textContent += styleUtil.cssFromModules(this.include);
3236
3233
  }
3234
+ var rules = styleUtil.rulesForStyle(e);
3235
+ styleUtil.forEachStyleRule(rules, function (rule) {
3236
+ styleTransformer.documentRule(rule);
3237
+ });
3237
3238
  this._computeStyleProperties();
3238
3239
  var props = this._styleProperties;
3239
- var self = this;
3240
- e.textContent = styleUtil.toCssText(styleUtil.rulesForStyle(e), function (rule) {
3240
+ e.textContent = styleUtil.toCssText(rules, function (rule) {
3241
3241
  var css = rule.cssText = rule.parsedCssText;
3242
3242
  if (rule.propertyInfo && rule.propertyInfo.cssText) {
3243
3243
  css = cssParse.removeCustomPropAssignment(css);
3244
3244
  rule.cssText = propertyUtils.valueForProperties(css, props);
3245
3245
  }
3246
- styleTransformer.documentRule(rule);
3247
3246
  });
3248
3247
  }
3249
3248
  });
@@ -3799,6 +3798,9 @@ this._instances.splice(keys.length, this._instances.length - keys.length);
3799
3798
  _keySort: function (a, b) {
3800
3799
  return this.collection.getKey(a) - this.collection.getKey(b);
3801
3800
  },
3801
+ _numericSort: function (a, b) {
3802
+ return a - b;
3803
+ },
3802
3804
  _applySplicesUserSort: function (splices) {
3803
3805
  var c = this.collection;
3804
3806
  var instances = this._instances;
@@ -3826,7 +3828,7 @@ addedKeys.push(key);
3826
3828
  }
3827
3829
  }
3828
3830
  if (removedIdxs.length) {
3829
- removedIdxs.sort();
3831
+ removedIdxs.sort(this._numericSort);
3830
3832
  for (var i = removedIdxs.length - 1; i >= 0; i--) {
3831
3833
  var idx = removedIdxs[i];
3832
3834
  if (idx !== undefined) {
@@ -4009,6 +4011,10 @@ selected: {
4009
4011
  type: Object,
4010
4012
  notify: true
4011
4013
  },
4014
+ selectedItem: {
4015
+ type: Object,
4016
+ notify: true
4017
+ },
4012
4018
  toggle: {
4013
4019
  type: Boolean,
4014
4020
  value: false
@@ -4031,6 +4037,7 @@ this._selectedColl = Polymer.Collection.get(this.selected);
4031
4037
  this.selected = null;
4032
4038
  this._selectedColl = null;
4033
4039
  }
4040
+ this.selectedItem = null;
4034
4041
  },
4035
4042
  isSelected: function (item) {
4036
4043
  if (this.multi) {
@@ -4048,7 +4055,9 @@ this.unlinkPaths('selected.' + skey);
4048
4055
  }
4049
4056
  } else {
4050
4057
  this.selected = null;
4058
+ this.selectedItem = null;
4051
4059
  this.unlinkPaths('selected');
4060
+ this.unlinkPaths('selectedItem');
4052
4061
  }
4053
4062
  },
4054
4063
  select: function (item) {
@@ -4068,8 +4077,10 @@ this.linkPaths('selected.' + skey, 'items.' + key);
4068
4077
  if (this.toggle && item == this.selected) {
4069
4078
  this.deselect();
4070
4079
  } else {
4071
- this.linkPaths('selected', 'items.' + key);
4072
4080
  this.selected = item;
4081
+ this.selectedItem = item;
4082
+ this.linkPaths('selected', 'items.' + key);
4083
+ this.linkPaths('selectedItem', 'items.' + key);
4073
4084
  }
4074
4085
  }
4075
4086
  }
@@ -7,7 +7,7 @@
7
7
  * Code distributed by Google as part of the polymer project is also
8
8
  * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
9
9
  */
10
- // @version 0.7.11
10
+ // @version 0.7.12
11
11
  window.WebComponents = window.WebComponents || {};
12
12
 
13
13
  (function(scope) {
@@ -909,7 +909,7 @@ if (typeof WeakMap === "undefined") {
909
909
  };
910
910
  global.JsMutationObserver = JsMutationObserver;
911
911
  if (!global.MutationObserver) global.MutationObserver = JsMutationObserver;
912
- })(this);
912
+ })(window);
913
913
 
914
914
  window.HTMLImports = window.HTMLImports || {
915
915
  flags: {}
@@ -1675,6 +1675,7 @@ window.CustomElements = window.CustomElements || {
1675
1675
  scope.addModule = addModule;
1676
1676
  scope.initializeModules = initializeModules;
1677
1677
  scope.hasNative = Boolean(document.registerElement);
1678
+ scope.isIE = /Trident/.test(navigator.userAgent);
1678
1679
  scope.useNative = !flags.register && scope.hasNative && !window.ShadowDOMPolyfill && (!window.HTMLImports || window.HTMLImports.useNative);
1679
1680
  })(window.CustomElements);
1680
1681
 
@@ -1983,7 +1984,7 @@ window.CustomElements.addModule(function(scope) {
1983
1984
  });
1984
1985
 
1985
1986
  window.CustomElements.addModule(function(scope) {
1986
- var isIE11OrOlder = scope.isIE11OrOlder;
1987
+ var isIE = scope.isIE;
1987
1988
  var upgradeDocumentTree = scope.upgradeDocumentTree;
1988
1989
  var upgradeAll = scope.upgradeAll;
1989
1990
  var upgradeWithDefinition = scope.upgradeWithDefinition;
@@ -2179,7 +2180,7 @@ window.CustomElements.addModule(function(scope) {
2179
2180
  }
2180
2181
  wrapDomMethodToForceUpgrade(Node.prototype, "cloneNode");
2181
2182
  wrapDomMethodToForceUpgrade(document, "importNode");
2182
- if (isIE11OrOlder) {
2183
+ if (isIE) {
2183
2184
  (function() {
2184
2185
  var importNode = document.importNode;
2185
2186
  document.importNode = function() {
@@ -2207,7 +2208,7 @@ window.CustomElements.addModule(function(scope) {
2207
2208
  (function(scope) {
2208
2209
  var useNative = scope.useNative;
2209
2210
  var initializeModules = scope.initializeModules;
2210
- var isIE11OrOlder = /Trident/.test(navigator.userAgent);
2211
+ var isIE = scope.isIE;
2211
2212
  if (useNative) {
2212
2213
  var nop = function() {};
2213
2214
  scope.watchShadow = nop;
@@ -2244,6 +2245,9 @@ window.CustomElements.addModule(function(scope) {
2244
2245
  function bootstrap() {
2245
2246
  upgradeDocumentTree(window.wrap(document));
2246
2247
  window.CustomElements.ready = true;
2248
+ var requestAnimationFrame = window.requestAnimationFrame || function(f) {
2249
+ setTimeout(f, 16);
2250
+ };
2247
2251
  requestAnimationFrame(function() {
2248
2252
  setTimeout(function() {
2249
2253
  window.CustomElements.readyTime = Date.now();
@@ -2256,7 +2260,7 @@ window.CustomElements.addModule(function(scope) {
2256
2260
  });
2257
2261
  });
2258
2262
  }
2259
- if (isIE11OrOlder && typeof window.CustomEvent !== "function") {
2263
+ if (isIE && typeof window.CustomEvent !== "function") {
2260
2264
  window.CustomEvent = function(inType, params) {
2261
2265
  params = params || {};
2262
2266
  var e = document.createEvent("CustomEvent");
@@ -2280,7 +2284,6 @@ window.CustomElements.addModule(function(scope) {
2280
2284
  var loadEvent = window.HTMLImports && !window.HTMLImports.ready ? "HTMLImportsLoaded" : "DOMContentLoaded";
2281
2285
  window.addEventListener(loadEvent, bootstrap);
2282
2286
  }
2283
- scope.isIE11OrOlder = isIE11OrOlder;
2284
2287
  })(window.CustomElements);
2285
2288
 
2286
2289
  if (typeof HTMLTemplateElement === "undefined") {
@@ -7,7 +7,7 @@
7
7
  * Code distributed by Google as part of the polymer project is also
8
8
  * subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
9
9
  */
10
- // @version 0.7.11
10
+ // @version 0.7.12
11
11
  window.WebComponents = window.WebComponents || {};
12
12
 
13
13
  (function(scope) {
@@ -1781,8 +1781,8 @@ if (WebComponents.flags.shadow) {
1781
1781
  var originalInsertBefore = OriginalNode.prototype.insertBefore;
1782
1782
  var originalRemoveChild = OriginalNode.prototype.removeChild;
1783
1783
  var originalReplaceChild = OriginalNode.prototype.replaceChild;
1784
- var isIe = /Trident|Edge/.test(navigator.userAgent);
1785
- var removeChildOriginalHelper = isIe ? function(parent, child) {
1784
+ var isIEOrEdge = /Trident|Edge/.test(navigator.userAgent);
1785
+ var removeChildOriginalHelper = isIEOrEdge ? function(parent, child) {
1786
1786
  try {
1787
1787
  originalRemoveChild.call(parent, child);
1788
1788
  } catch (ex) {
@@ -5678,7 +5678,7 @@ if (WebComponents.flags.shadow) {
5678
5678
  };
5679
5679
  global.JsMutationObserver = JsMutationObserver;
5680
5680
  if (!global.MutationObserver) global.MutationObserver = JsMutationObserver;
5681
- })(this);
5681
+ })(window);
5682
5682
 
5683
5683
  window.HTMLImports = window.HTMLImports || {
5684
5684
  flags: {}
@@ -6444,6 +6444,7 @@ window.CustomElements = window.CustomElements || {
6444
6444
  scope.addModule = addModule;
6445
6445
  scope.initializeModules = initializeModules;
6446
6446
  scope.hasNative = Boolean(document.registerElement);
6447
+ scope.isIE = /Trident/.test(navigator.userAgent);
6447
6448
  scope.useNative = !flags.register && scope.hasNative && !window.ShadowDOMPolyfill && (!window.HTMLImports || window.HTMLImports.useNative);
6448
6449
  })(window.CustomElements);
6449
6450
 
@@ -6752,7 +6753,7 @@ window.CustomElements.addModule(function(scope) {
6752
6753
  });
6753
6754
 
6754
6755
  window.CustomElements.addModule(function(scope) {
6755
- var isIE11OrOlder = scope.isIE11OrOlder;
6756
+ var isIE = scope.isIE;
6756
6757
  var upgradeDocumentTree = scope.upgradeDocumentTree;
6757
6758
  var upgradeAll = scope.upgradeAll;
6758
6759
  var upgradeWithDefinition = scope.upgradeWithDefinition;
@@ -6948,7 +6949,7 @@ window.CustomElements.addModule(function(scope) {
6948
6949
  }
6949
6950
  wrapDomMethodToForceUpgrade(Node.prototype, "cloneNode");
6950
6951
  wrapDomMethodToForceUpgrade(document, "importNode");
6951
- if (isIE11OrOlder) {
6952
+ if (isIE) {
6952
6953
  (function() {
6953
6954
  var importNode = document.importNode;
6954
6955
  document.importNode = function() {
@@ -6976,7 +6977,7 @@ window.CustomElements.addModule(function(scope) {
6976
6977
  (function(scope) {
6977
6978
  var useNative = scope.useNative;
6978
6979
  var initializeModules = scope.initializeModules;
6979
- var isIE11OrOlder = /Trident/.test(navigator.userAgent);
6980
+ var isIE = scope.isIE;
6980
6981
  if (useNative) {
6981
6982
  var nop = function() {};
6982
6983
  scope.watchShadow = nop;
@@ -7013,6 +7014,9 @@ window.CustomElements.addModule(function(scope) {
7013
7014
  function bootstrap() {
7014
7015
  upgradeDocumentTree(window.wrap(document));
7015
7016
  window.CustomElements.ready = true;
7017
+ var requestAnimationFrame = window.requestAnimationFrame || function(f) {
7018
+ setTimeout(f, 16);
7019
+ };
7016
7020
  requestAnimationFrame(function() {
7017
7021
  setTimeout(function() {
7018
7022
  window.CustomElements.readyTime = Date.now();
@@ -7025,7 +7029,7 @@ window.CustomElements.addModule(function(scope) {
7025
7029
  });
7026
7030
  });
7027
7031
  }
7028
- if (isIE11OrOlder && typeof window.CustomEvent !== "function") {
7032
+ if (isIE && typeof window.CustomEvent !== "function") {
7029
7033
  window.CustomEvent = function(inType, params) {
7030
7034
  params = params || {};
7031
7035
  var e = document.createEvent("CustomEvent");
@@ -7049,7 +7053,6 @@ window.CustomElements.addModule(function(scope) {
7049
7053
  var loadEvent = window.HTMLImports && !window.HTMLImports.ready ? "HTMLImportsLoaded" : "DOMContentLoaded";
7050
7054
  window.addEventListener(loadEvent, bootstrap);
7051
7055
  }
7052
- scope.isIE11OrOlder = isIE11OrOlder;
7053
7056
  })(window.CustomElements);
7054
7057
 
7055
7058
  (function(scope) {
data/lib/polymer-rails.rb CHANGED
@@ -6,12 +6,9 @@ end
6
6
 
7
7
  require "sprockets"
8
8
  require "polymer-rails/version"
9
- require "polymer-rails/processors/directive_processor"
10
- if Polymer::Rails::LEGACY_SPROCKETS
11
- require "polymer-rails/processors/components_processor_v2"
12
- else
13
- require "polymer-rails/processors/components_processor_v3"
14
- end
9
+ require "polymer-rails/xml_adapters/base"
10
+ require "polymer-rails/processors/directive"
11
+ require "polymer-rails/processors/component"
15
12
  require "polymer-rails/helpers/asset_tag_helper"
16
13
  require "polymer-rails/engine" if defined?(::Rails)
17
14
  require "polymer-rails/railtie" if defined?(::Rails)
@@ -1,18 +1,9 @@
1
- require 'nokogumbo'
1
+ require 'uri'
2
2
 
3
3
  module Polymer
4
4
  module Rails
5
5
  class Component
6
6
 
7
- # HTML Encoding
8
- ENCODING = 'UTF-8'
9
-
10
- # Nodes that should be parsed as XML nodes
11
- XML_NODES = ['*[selected]', '*[checked]', '*[src]:not(script)']
12
-
13
- # XML options for to_xml method
14
- XML_OPTIONS = { save_with: Nokogiri::XML::Node::SaveOptions::NO_EMPTY_TAGS }
15
-
16
7
  # Selectors for component resources
17
8
  SELECTORS = {
18
9
  html: "link[rel='import']:not([type='css'])",
@@ -21,49 +12,34 @@ module Polymer
21
12
  }
22
13
 
23
14
  def initialize(data)
24
- @doc = ::Nokogiri::HTML5("<body>#{data}</body>")
15
+ @adapter = XmlAdapters::Base.factory
16
+ @doc = @adapter.parse_document(data)
25
17
  end
26
18
 
27
19
  def stringify
28
- xml_nodes.reduce(to_html) do |output, node|
29
- output.gsub(node.to_html, node.to_xml(XML_OPTIONS)).encode(ENCODING)
30
- end
20
+ @adapter.stringify(@doc)
31
21
  end
32
22
 
33
23
  def replace_node(node, name, content)
34
- node.replace create_node(name, content)
24
+ @adapter.replace_node node, @adapter.create_node(@doc, name, content)
35
25
  end
36
26
 
37
27
  def stylesheets
38
- @doc.css(SELECTORS[:stylesheet]).reject{|tag| is_external? tag.attributes['href'].value}
28
+ @adapter.css_select(@doc, SELECTORS[:stylesheet]).reject{|tag| is_external? tag.attributes['href'].value}
39
29
  end
40
30
 
41
31
  def javascripts
42
- @doc.css(SELECTORS[:javascript]).reject do |tag|
32
+ @adapter.css_select(@doc, SELECTORS[:javascript]).reject do |tag|
43
33
  is_external? tag.attributes['src'].value
44
34
  end
45
35
  end
46
36
 
47
37
  def html_imports
48
- @doc.css(SELECTORS[:html])
38
+ @adapter.css_select(@doc, SELECTORS[:html])
49
39
  end
50
40
 
51
41
  private
52
42
 
53
- def create_node(name, content)
54
- node = ::Nokogiri::XML::Node.new(name, @doc)
55
- node.content = content
56
- node
57
- end
58
-
59
- def to_html
60
- @doc.css("body").children.to_html(encoding: ENCODING).lstrip
61
- end
62
-
63
- def xml_nodes
64
- @doc.css(XML_NODES.join(','))
65
- end
66
-
67
43
  def is_external?(source)
68
44
  !URI(source).host.nil?
69
45
  end
@@ -0,0 +1,68 @@
1
+ require 'polymer-rails/component'
2
+ if Polymer::Rails::LEGACY_SPROCKETS
3
+ require 'polymer-rails/processors/sprockets_v2_processor'
4
+ else
5
+ require "polymer-rails/processors/sprockets_v3_processor"
6
+ end
7
+
8
+ module Polymer
9
+ module Rails
10
+ module Processors
11
+ class Component < Polymer::Rails::SprocketsProcessor
12
+
13
+ def process
14
+ inline_styles
15
+ inline_javascripts
16
+ require_imports
17
+ @component.stringify
18
+ end
19
+
20
+ private
21
+
22
+ def require_imports
23
+ @component.html_imports.each do |import|
24
+ @context.require_asset absolute_asset_path(import.attributes['href'].value)
25
+ import.remove
26
+ end
27
+ end
28
+
29
+ def inline_javascripts
30
+ @component.javascripts.each do |script|
31
+ @component.replace_node(script, 'script', asset_content(script.attributes['src'].value))
32
+ end
33
+ end
34
+
35
+ def inline_styles
36
+ @component.stylesheets.each do |link|
37
+ @component.replace_node(link, 'style', asset_content(link.attributes['href'].value))
38
+ end
39
+ end
40
+
41
+ def asset_content(file)
42
+ asset_path = absolute_asset_path(file)
43
+ asset = find_asset(asset_path)
44
+ unless asset.blank?
45
+ @context.depend_on_asset asset_path
46
+ asset.to_s
47
+ else
48
+ nil
49
+ end
50
+ end
51
+
52
+ def absolute_asset_path(file)
53
+ search_file = file.sub(/^(\.\.\/)+/, '/').sub(/^\/*/, '')
54
+ ::Rails.application.assets.paths.each do |path|
55
+ file_list = Dir.glob( "#{File.absolute_path search_file, path }*")
56
+ return file_list.first unless file_list.blank?
57
+ end
58
+ components = Dir.glob("#{File.absolute_path file, File.dirname(@context.pathname)}*")
59
+ return components.blank? ? nil : components.first
60
+ end
61
+
62
+ def find_asset(asset_path)
63
+ ::Rails.application.assets.find_asset(asset_path)
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -0,0 +1,8 @@
1
+ module Polymer
2
+ module Rails
3
+ module Processors
4
+ class Directive < Sprockets::DirectiveProcessor
5
+ end
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,12 @@
1
+ module Polymer
2
+ module Rails
3
+ class SprocketsProcessor < Sprockets::Processor
4
+
5
+ def initialize(context, data)
6
+ @context = context
7
+ @component = Component.new(data)
8
+ end
9
+
10
+ end
11
+ end
12
+ end
@@ -1,10 +1,6 @@
1
- require 'polymer-rails/component'
2
- require 'polymer-rails/processors/components_processor'
3
-
4
1
  module Polymer
5
2
  module Rails
6
- class ComponentsProcessorV3
7
- include ::Polymer::Rails::ComponentsProcessor
3
+ class SprocketsProcessor
8
4
 
9
5
  def self.instance
10
6
  @instance ||= new
@@ -8,36 +8,30 @@ module Polymer
8
8
  end
9
9
 
10
10
  initializer :precompile_polymer do |app|
11
- if app.config.respond_to? (:assets)
11
+ if app.config.respond_to?(:assets)
12
12
  app.config.assets.precompile += %w( polymer/polymer.js )
13
13
  end
14
14
  end
15
15
 
16
16
  initializer :add_preprocessors do |app|
17
- if Polymer::Rails::LEGACY_SPROCKETS
18
- add_preprocessors_legacy(app)
19
- else
20
- add_preprocessors(app)
21
- end
17
+ add_preprocessors(app)
22
18
  end
23
19
 
24
20
  private
25
21
 
26
22
  def add_preprocessors(app)
27
- app.assets.register_mime_type 'text/html', extensions: ['.html']
28
- app.assets.register_preprocessor 'text/html', Polymer::Rails::DirectiveProcessor
29
- app.assets.register_bundle_processor 'text/html', ::Sprockets::Bundle
30
- app.assets.register_postprocessor 'text/html', Polymer::Rails::ComponentsProcessorV3
31
- end
32
-
33
- def add_preprocessors_legacy(app)
34
- app.assets.register_mime_type "text/html", '.html'
35
- app.assets.register_preprocessor "text/html", Polymer::Rails::DirectiveProcessor
36
- app.assets.register_postprocessor 'text/html', :web do |context, data|
37
- Polymer::Rails::ComponentsProcessorV2.new(context, data).process
23
+ app.assets.register_preprocessor 'text/html', Polymer::Rails::Processors::Directive
24
+ if Polymer::Rails::LEGACY_SPROCKETS
25
+ app.assets.register_mime_type "text/html", '.html'
26
+ app.assets.register_postprocessor 'text/html', :web do |context, data|
27
+ Polymer::Rails::Processors::Component.new(context, data).process
28
+ end
29
+ else
30
+ app.assets.register_mime_type 'text/html', extensions: ['.html']
31
+ app.assets.register_bundle_processor 'text/html', ::Sprockets::Bundle
32
+ app.assets.register_postprocessor 'text/html', Polymer::Rails::Processors::Component
38
33
  end
39
34
  end
40
-
41
35
  end
42
36
  end
43
37
  end
@@ -1,5 +1,5 @@
1
1
  module Polymer
2
2
  module Rails
3
- VERSION = "1.1.0"
3
+ VERSION = "1.1.1"
4
4
  end
5
5
  end
@@ -0,0 +1,23 @@
1
+ module Polymer
2
+ module Rails
3
+ module XmlAdapters
4
+ class Base
5
+
6
+ # HTML Encoding
7
+ ENCODING = 'UTF-8'
8
+
9
+ def self.factory
10
+ klass = "#{parent}::#{RUBY_PLATFORM =~ /java/ ? 'Jsoup' : 'Nokogiri'}"
11
+ klass.constantize.new
12
+ end
13
+
14
+ end
15
+ end
16
+ end
17
+ end
18
+
19
+ if RUBY_PLATFORM =~ /java/
20
+ require "polymer-rails/xml_adapters/jsoup"
21
+ else
22
+ require "polymer-rails/xml_adapters/nokogiri"
23
+ end
@@ -0,0 +1,48 @@
1
+ require 'ostruct'
2
+ require 'jar_dependencies'
3
+ require_jar 'org.jsoup', 'jsoup', '1.8.3'
4
+
5
+ module Polymer
6
+ module Rails
7
+ module XmlAdapters
8
+ class Jsoup < Base
9
+
10
+ def parse_document data
11
+ doc = org.jsoup.Jsoup.parse_body_fragment(data)
12
+ doc.output_settings.charset(ENCODING)
13
+ doc
14
+ end
15
+
16
+ def create_node doc, name, content
17
+ node = doc.create_element(name)
18
+ datanode = org.jsoup.nodes.DataNode.new(content, doc.base_uri)
19
+ node.append_child datanode
20
+ node
21
+ end
22
+
23
+ def stringify doc
24
+ doc.select('body').html
25
+ end
26
+
27
+ def replace_node old_node, new_node
28
+ old_node.replace_with new_node
29
+ end
30
+
31
+ def css_select doc, selector
32
+ doc.select selector.gsub('\'', '')
33
+ end
34
+
35
+ end
36
+ end
37
+ end
38
+ end
39
+
40
+ Java::OrgJsoupNodes::Attributes.class_eval do
41
+ def [] name
42
+ OpenStruct.new value: get(name)
43
+ end
44
+ end
45
+
46
+ Java::OrgJsoupNodes::Element.class_eval do
47
+ alias name nodeName
48
+ end
@@ -0,0 +1,49 @@
1
+ require 'nokogiri'
2
+ require 'nokogumbo'
3
+
4
+ module Polymer
5
+ module Rails
6
+ module XmlAdapters
7
+ class Nokogiri < Base
8
+
9
+ # XML options for to_xml method
10
+ XML_OPTIONS = { save_with: ::Nokogiri::XML::Node::SaveOptions::NO_EMPTY_TAGS }
11
+
12
+ # Nodes that should be parsed as XML nodes
13
+ XML_NODES = ['*[selected]', '*[checked]', '*[src]:not(script)']
14
+
15
+ def parse_document data
16
+ ::Nokogiri::HTML5 data
17
+ end
18
+
19
+ def create_node doc, name, content
20
+ node = ::Nokogiri::XML::Node.new(name, doc)
21
+ node.content = content
22
+ node
23
+ end
24
+
25
+ def replace_node old_node, new_node
26
+ old_node.replace new_node
27
+ end
28
+
29
+ def stringify doc
30
+ xml_nodes(doc).reduce(to_html(doc)) do |output, node|
31
+ output.gsub(node.to_html, node.to_xml(XML_OPTIONS)).encode(ENCODING)
32
+ end
33
+ end
34
+
35
+ def css_select doc, selector
36
+ doc.css selector
37
+ end
38
+
39
+ private
40
+ def xml_nodes doc
41
+ doc.css(XML_NODES.join(','))
42
+ end
43
+ def to_html doc
44
+ doc.css("head,body").children.to_html(encoding: ENCODING).lstrip
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
metadata CHANGED
@@ -1,57 +1,71 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: polymer-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 1.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Chaplinsky
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-15 00:00:00.000000000 Z
11
+ date: 2015-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rails
14
+ name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 3.1.0
19
+ version: '1.6'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 3.1.0
26
+ version: '1.6'
27
27
  - !ruby/object:Gem::Dependency
28
- name: nokogiri
28
+ name: nokogumbo
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.6'
33
+ version: '1.1'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.6'
40
+ version: '1.1'
41
41
  - !ruby/object:Gem::Dependency
42
- name: nokogumbo
42
+ name: rails
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 3.1.0
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 3.1.0
55
+ - !ruby/object:Gem::Dependency
56
+ name: sprockets
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
59
  - - "~>"
46
60
  - !ruby/object:Gem::Version
47
- version: '1.1'
61
+ version: 3.0.0
48
62
  type: :runtime
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
- version: '1.1'
68
+ version: 3.0.0
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: bundler
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -94,6 +108,20 @@ dependencies:
94
108
  - - "~>"
95
109
  - !ruby/object:Gem::Version
96
110
  version: 3.0.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
97
125
  description: Use of web components and polymer-project in Ruby on Rails projects
98
126
  email:
99
127
  - alchapone@yandex.ru
@@ -119,12 +147,15 @@ files:
119
147
  - lib/polymer-rails/component.rb
120
148
  - lib/polymer-rails/engine.rb
121
149
  - lib/polymer-rails/helpers/asset_tag_helper.rb
122
- - lib/polymer-rails/processors/components_processor.rb
123
- - lib/polymer-rails/processors/components_processor_v2.rb
124
- - lib/polymer-rails/processors/components_processor_v3.rb
125
- - lib/polymer-rails/processors/directive_processor.rb
150
+ - lib/polymer-rails/processors/component.rb
151
+ - lib/polymer-rails/processors/directive.rb
152
+ - lib/polymer-rails/processors/sprockets_v2_processor.rb
153
+ - lib/polymer-rails/processors/sprockets_v3_processor.rb
126
154
  - lib/polymer-rails/railtie.rb
127
155
  - lib/polymer-rails/version.rb
156
+ - lib/polymer-rails/xml_adapters/base.rb
157
+ - lib/polymer-rails/xml_adapters/jsoup.rb
158
+ - lib/polymer-rails/xml_adapters/nokogiri.rb
128
159
  homepage: http://github.com/alchapone/polymer-rails
129
160
  licenses:
130
161
  - MIT
@@ -1,59 +0,0 @@
1
- module Polymer
2
- module Rails
3
- module ComponentsProcessor
4
-
5
- def process
6
- inline_styles
7
- inline_javascripts
8
- require_imports
9
- @component.stringify
10
- end
11
-
12
- private
13
-
14
- def require_imports
15
- @component.html_imports.each do |import|
16
- @context.require_asset absolute_asset_path(import.attributes['href'].value)
17
- import.remove
18
- end
19
- end
20
-
21
- def inline_javascripts
22
- @component.javascripts.each do |script|
23
- @component.replace_node(script, 'script', asset_content(script.attributes['src'].value))
24
- end
25
- end
26
-
27
- def inline_styles
28
- @component.stylesheets.each do |link|
29
- @component.replace_node(link, 'style', asset_content(link.attributes['href'].value))
30
- end
31
- end
32
-
33
- def asset_content(file)
34
- asset_path = absolute_asset_path(file)
35
- asset = find_asset(asset_path)
36
- unless asset.blank?
37
- @context.depend_on_asset asset_path
38
- asset.to_s
39
- else
40
- nil
41
- end
42
- end
43
-
44
- def absolute_asset_path(file)
45
- search_file = file.sub(/^(\.\.\/)+/, '/').sub(/^\/*/, '')
46
- ::Rails.application.assets.paths.each do |path|
47
- file_list = Dir.glob( "#{File.absolute_path search_file, path }*")
48
- return file_list.first unless file_list.blank?
49
- end
50
- components = Dir.glob("#{File.absolute_path file, File.dirname(@context.pathname)}*")
51
- return components.blank? ? nil : components.first
52
- end
53
-
54
- def find_asset(asset_path)
55
- ::Rails.application.assets.find_asset(asset_path)
56
- end
57
- end
58
- end
59
- end
@@ -1,16 +0,0 @@
1
- require 'polymer-rails/component'
2
- require 'polymer-rails/processors/components_processor'
3
-
4
- module Polymer
5
- module Rails
6
- class ComponentsProcessorV2 < Sprockets::Processor
7
- include ::Polymer::Rails::ComponentsProcessor
8
-
9
- def initialize(context, data)
10
- @context = context
11
- @component = Component.new(data)
12
- end
13
-
14
- end
15
- end
16
- end
@@ -1,6 +0,0 @@
1
- module Polymer
2
- module Rails
3
- class DirectiveProcessor < Sprockets::DirectiveProcessor
4
- end
5
- end
6
- end