app/assets/htmls/vendor/polymer.html in gobstones-blockly-0.6.0 vs app/assets/htmls/vendor/polymer.html in gobstones-blockly-0.8.5

- old
+ new

@@ -570,11 +570,14 @@ window.addEventListener('test', null, opts); window.removeEventListener('test', null, opts); } catch (e) { } }()); -function PASSIVE_TOUCH() { +function PASSIVE_TOUCH(eventName) { +if (isMouseEvent(eventName) || eventName === 'touchend') { +return; +} if (HAS_NATIVE_TA && SUPPORTS_PASSIVE && Polymer.Settings.passiveTouchGestures) { return { passive: true }; } } var IS_TOUCH_ONLY = navigator.userAgent.match(/iP(?:[oa]d|hone)|Android/); @@ -584,15 +587,17 @@ return; } mouseEvent[HANDLED_OBJ] = { skip: true }; if (mouseEvent.type === 'click') { var path = Polymer.dom(mouseEvent).path; +if (path) { for (var i = 0; i < path.length; i++) { if (path[i] === POINTERSTATE.mouse.target) { return; } } +} mouseEvent.preventDefault(); mouseEvent.stopPropagation(); } }; function setupTeardownMouseCanceller(setup) { @@ -803,12 +808,11 @@ gd = gobj[dep]; if (!gd) { gobj[dep] = gd = { _count: 0 }; } if (gd._count === 0) { -var options = !isMouseEvent(dep) && PASSIVE_TOUCH(); -node.addEventListener(dep, this.handleNative, options); +node.addEventListener(dep, this.handleNative, PASSIVE_TOUCH(dep)); } gd[name] = (gd[name] || 0) + 1; gd._count = (gd._count || 0) + 1; } node.addEventListener(evType, handler); @@ -828,12 +832,11 @@ gd = gobj[dep]; if (gd && gd[name]) { gd[name] = (gd[name] || 1) - 1; gd._count = (gd._count || 1) - 1; if (gd._count === 0) { -var options = !isMouseEvent(dep) && PASSIVE_TOUCH(); -node.removeEventListener(dep, this.handleNative, options); +node.removeEventListener(dep, this.handleNative, PASSIVE_TOUCH(dep)); } } } } node.removeEventListener(evType, handler); @@ -2523,11 +2526,11 @@ MIXIN_RULE: 1000 }, OPEN_BRACE: '{', CLOSE_BRACE: '}', _rx: { -comments: /\/\*[^*]*\*+([^/*][^*]*\*+)*\//gim, +comments: /\/\*[^*]*\*+([^\/*][^*]*\*+)*\//gim, port: /@import[^;]*;/gim, customProp: /(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?(?:[;\n]|$)/gim, mixinProp: /(?:^[^;\-\s}]+)?--[^;{}]*?:[^{};]*?{[^}]*?}(?:[;\n]|$)?/gim, mixinApply: /@apply\s*\(?[^);]*\)?\s*(?:[;\n]|$)?/gim, varApply: /[^;:]*?:[^;]*?var\([^;]*\)(?:[;\n]|$)?/gim, @@ -2539,10 +2542,12 @@ AT_START: '@' }; }();Polymer.StyleUtil = function () { var settings = Polymer.Settings; return { +unscopedStyleImports: new WeakMap(), +SHADY_UNSCOPED_ATTR: 'shady-unscoped', NATIVE_VARIABLES: Polymer.Settings.useNativeCSSProperties, MODULE_STYLES_SELECTOR: 'style, link[rel=import][type~=css], template', INCLUDE_ATTR: 'include', toCssText: function (rules, callback) { if (typeof rules === 'string') { @@ -2646,11 +2651,11 @@ scope.insertBefore(placeHolder, after || scope.firstChild); this.__lastHeadApplyNode = placeHolder; return placeHolder; }, cssFromModules: function (moduleIds, warnIfNotFound) { -var modules = moduleIds.trim().split(' '); +var modules = moduleIds.trim().split(/\s+/); var cssText = ''; for (var i = 0; i < modules.length; i++) { cssText += this.cssFromModule(modules[i], warnIfNotFound); } return cssText; @@ -2681,16 +2686,33 @@ if (include) { cssText += this.cssFromModules(include, true); } e = e.__appliedElement || e; e.parentNode.removeChild(e); -cssText += this.resolveCss(e.textContent, element.ownerDocument); +var css = this.resolveCss(e.textContent, element.ownerDocument); +if (!settings.useNativeShadow && e.hasAttribute(this.SHADY_UNSCOPED_ATTR)) { +e.textContent = css; +document.head.insertBefore(e, document.head.firstChild); +} else { +cssText += css; +} } else if (e.import && e.import.body) { -cssText += this.resolveCss(e.import.body.textContent, e.import); +var importCss = this.resolveCss(e.import.body.textContent, e.import); +if (!settings.useNativeShadow && e.hasAttribute(this.SHADY_UNSCOPED_ATTR)) { +if (!this.unscopedStyleImports.has(e.import)) { +this.unscopedStyleImports.set(e.import, true); +var importStyle = document.createElement('style'); +importStyle.setAttribute(this.SHADY_UNSCOPED_ATTR, ''); +importStyle.textContent = importCss; +document.head.insertBefore(importStyle, document.head.firstChild); } +} else { +cssText += importCss; } } +} +} return cssText; }, styleIncludesToTemplate: function (targetTemplate) { var styles = targetTemplate.content.querySelectorAll('style[include]'); for (var i = 0, s; i < styles.length; i++) { @@ -2879,49 +2901,103 @@ this._transformRule(rule, this._transformComplexSelector, scope, hostScope); }, _transformRule: function (rule, transformer, scope, hostScope) { rule.selector = rule.transformedSelector = this._transformRuleCss(rule, transformer, scope, hostScope); }, +_splitSelectorList: function (selector) { +var parts = []; +var part = ''; +for (var i = 0; i >= 0 && i < selector.length; i++) { +if (selector[i] === '(') { +var end = styleUtil._findMatchingParen(selector, i); +part += selector.slice(i, end + 1); +i = end; +} else if (selector[i] === COMPLEX_SELECTOR_SEP) { +parts.push(part); +part = ''; +} else { +part += selector[i]; +} +} +if (part) { +parts.push(part); +} +if (parts.length === 0) { +parts.push(selector); +} +return parts; +}, _transformRuleCss: function (rule, transformer, scope, hostScope) { -var p$ = rule.selector.split(COMPLEX_SELECTOR_SEP); +var p$ = this._splitSelectorList(rule.selector); if (!styleUtil.isKeyframesSelector(rule)) { for (var i = 0, l = p$.length, p; i < l && (p = p$[i]); i++) { p$[i] = transformer.call(this, p, scope, hostScope); } } return p$.join(COMPLEX_SELECTOR_SEP); }, +_ensureScopedDir: function (s) { +var m = s.match(DIR_PAREN); +if (m && m[1] === '' && m[0].length === s.length) { +s = '*' + s; +} +return s; +}, +_additionalDirSelectors: function (dir, after, prefix) { +if (!dir || !after) { +return ''; +} +prefix = prefix || ''; +return COMPLEX_SELECTOR_SEP + prefix + ' ' + dir + ' ' + after; +}, _transformComplexSelector: function (selector, scope, hostScope) { var stop = false; var hostContext = false; +var dir = false; var self = this; selector = selector.trim(); selector = this._slottedToContent(selector); selector = selector.replace(ROOT, ':host > *'); selector = selector.replace(CONTENT_START, HOST + ' $1'); +selector = this._ensureScopedDir(selector); selector = selector.replace(SIMPLE_SELECTOR_SEP, function (m, c, s) { if (!stop) { var info = self._transformCompoundSelector(s, c, scope, hostScope); stop = stop || info.stop; hostContext = hostContext || info.hostContext; +dir = dir || info.dir; c = info.combinator; s = info.value; } else { s = s.replace(SCOPE_JUMP, ' '); } return c + s; }); if (hostContext) { selector = selector.replace(HOST_CONTEXT_PAREN, function (m, pre, paren, post) { -return pre + paren + ' ' + hostScope + post + COMPLEX_SELECTOR_SEP + ' ' + pre + hostScope + paren + post; +var replacement = pre + paren + ' ' + hostScope + post + COMPLEX_SELECTOR_SEP + ' ' + pre + hostScope + paren + post; +if (dir) { +replacement += self._additionalDirSelectors(paren, post, hostScope); +} +return replacement; }); } return selector; }, +_transformDir: function (s) { +s = s.replace(HOST_DIR, HOST_DIR_REPLACE); +s = s.replace(DIR_PAREN, DIR_REPLACE); +return s; +}, _transformCompoundSelector: function (selector, combinator, scope, hostScope) { var jumpIndex = selector.search(SCOPE_JUMP); var hostContext = false; +var dir = false; +if (selector.match(DIR_PAREN)) { +selector = this._transformDir(selector); +dir = true; +} if (selector.indexOf(HOST_CONTEXT) >= 0) { hostContext = true; } else if (selector.indexOf(HOST) >= 0) { selector = this._transformHostSelector(selector, hostScope); } else if (jumpIndex !== 0) { @@ -2933,16 +3009,16 @@ var stop; if (jumpIndex >= 0) { selector = selector.replace(SCOPE_JUMP, ' '); stop = true; } -selector = selector.replace(DIR_PAREN, DIR_REPLACE); return { value: selector, combinator: combinator, stop: stop, -hostContext: hostContext +hostContext: hostContext, +dir: dir }; }, _transformSimpleSelector: function (selector, scope) { var p$ = selector.split(PSEUDO_PREFIX); p$[0] += scope; @@ -2975,11 +3051,11 @@ this._transformRule(rule, this._transformDocumentSelector); } }, normalizeRootSelector: function (rule) { rule.selector = rule.selector.replace(ROOT, 'html'); -var parts = rule.selector.split(COMPLEX_SELECTOR_SEP); +var parts = this._splitSelectorList(rule.selector); parts = parts.filter(function (part) { return !part.match(HOST_OR_HOST_GT_STAR); }); rule.selector = parts.join(COMPLEX_SELECTOR_SEP); }, @@ -2988,15 +3064,22 @@ }, _slottedToContent: function (cssText) { return cssText.replace(SLOTTED_PAREN, CONTENT + '> $1'); }, _dirShadowTransform: function (selector) { -return selector.split(',').map(function (s) { -s = s.replace(HOST_DIR, HOST_DIR_REPLACE); -s = s.replace(DIR_PAREN, SHADOW_DIR_REPLACE); +if (!selector.match(/:dir\(/)) { +return selector; +} +return this._splitSelectorList(selector).map(function (s) { +s = this._ensureScopedDir(s); +s = this._transformDir(s); +var m = HOST_CONTEXT_PAREN.exec(s); +if (m) { +s += this._additionalDirSelectors(m[2], m[3], ''); +} return s; -}).join(','); +}, this).join(COMPLEX_SELECTOR_SEP); }, SCOPE_NAME: 'style-scope' }; var SCOPE_NAME = api.SCOPE_NAME; var SCOPE_DOC_SELECTOR = ':not([' + SCOPE_NAME + '])' + ':not(.' + SCOPE_NAME + ')'; @@ -3017,13 +3100,12 @@ var CLASS = 'class'; var CONTENT_START = new RegExp('^(' + CONTENT + ')'); var SELECTOR_NO_MATCH = 'should_not_match'; var SLOTTED_PAREN = /(?:::slotted)(?:\(((?:\([^)(]*\)|[^)(]*)+?)\))/g; var HOST_OR_HOST_GT_STAR = /:host(?:\s*>\s*\*)?/; -var DIR_PAREN = /(.*):dir\((ltr|rtl)\)/g; -var DIR_REPLACE = '[dir="$2"] $1, $1[dir="$2"]'; -var SHADOW_DIR_REPLACE = ':host-context([dir="$2"]) $1'; +var DIR_PAREN = /(.*):dir\((ltr|rtl)\)/; +var DIR_REPLACE = ':host-context([dir="$2"]) $1'; var HOST_DIR = /:host\(:dir\((rtl|ltr)\)\)/g; var HOST_DIR_REPLACE = ':host-context([dir="$1"])'; return api; }();Polymer.StyleExtends = function () { var styleUtil = Polymer.StyleUtil; @@ -3697,22 +3779,27 @@ return function (cssText) { return cssText.replace(keyframesRule.keyframesNameRx, keyframesRule.transformedKeyframesName); }; }, _scopeKeyframes: function (rule, scopeId) { -rule.keyframesNameRx = new RegExp(rule.keyframesName, 'g'); +rule.keyframesNameRx = new RegExp('\\b' + rule.keyframesName + '(?!\\B|-)', 'g'); rule.transformedKeyframesName = rule.keyframesName + '-' + scopeId; rule.transformedSelector = rule.transformedSelector || rule.selector; rule.selector = rule.transformedSelector.replace(rule.keyframesName, rule.transformedKeyframesName); }, +_hasDirOrHostContext: function (parsedSelector) { +return /:host-context|:dir/.test(parsedSelector); +}, _scopeSelector: function (rule, hostRx, hostSelector, viaAttr, scopeId) { rule.transformedSelector = rule.transformedSelector || rule.selector; var selector = rule.transformedSelector; -var scope = viaAttr ? '[' + styleTransformer.SCOPE_NAME + '~=' + scopeId + ']' : '.' + scopeId; +var scope = styleTransformer._calcElementScope(scopeId, viaAttr); +var hostScope = styleTransformer._calcElementScope(hostSelector, viaAttr); var parts = selector.split(','); +var isDirOrHostContextSelector = this._hasDirOrHostContext(rule.parsedSelector); for (var i = 0, l = parts.length, p; i < l && (p = parts[i]); i++) { -parts[i] = p.match(hostRx) ? p.replace(hostSelector, scope) : scope + ' ' + p; +parts[i] = p.match(hostRx) ? p.replace(hostSelector, scope) : isDirOrHostContextSelector ? p.replace(hostScope, scope + ' ' + hostScope) : scope + ' ' + p; } rule.selector = parts.join(','); }, applyElementScopeSelector: function (element, selector, old, viaAttr) { var c = viaAttr ? element.getAttribute(styleTransformer.SCOPE_NAME) : element.getAttribute('class') || ''; @@ -4338,11 +4425,11 @@ for (prop in this._instanceProps) { archetype._addPropertyEffect(prop, 'function', this._createInstancePropEffector(prop)); } }, _customPrepAnnotations: function (archetype, template) { -archetype._template = template; -var c = template._content; +var t = archetype._template = document.createElement('template'); +var c = t._content = template._content; if (!c._notes) { var rootDataHost = archetype._rootDataHost; if (rootDataHost) { Polymer.Annotations.prepElement = function () { rootDataHost._prepElement();