Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(449)

Unified Diff: polymer_0.5.0/bower_components/core-resizable/core-resizable.html

Issue 786953007: npm_modules: Fork bower_components into Polymer 0.4.0 and 0.5.0 versions (Closed) Base URL: https://chromium.googlesource.com/infra/third_party/npm_modules.git@master
Patch Set: Created 5 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: polymer_0.5.0/bower_components/core-resizable/core-resizable.html
diff --git a/polymer_0.5.0/bower_components/core-resizable/core-resizable.html b/polymer_0.5.0/bower_components/core-resizable/core-resizable.html
new file mode 100644
index 0000000000000000000000000000000000000000..21650dc30738f8390d2b996a93c4edba7222a519
--- /dev/null
+++ b/polymer_0.5.0/bower_components/core-resizable/core-resizable.html
@@ -0,0 +1,248 @@
+<!--
+Copyright (c) 2014 The Polymer Project Authors. All rights reserved.
+This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
+The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
+The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
+Code distributed by Google as part of the polymer project is also
+subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
+-->
+
+<!--
+ * @group Polymer Mixins
+-->
+
+<link rel="import" href="../polymer/polymer.html">
+
+<script>
+
+(function(scope) {
+
+/**
+ `Polymer.CoreResizable` and `Polymer.CoreResizer` are a set of mixins that can be used
+ in Polymer elements to coordinate the flow of resize events between "resizers" (elements
+ that control the size or hidden state of their children) and "resizables" (elements that
+ need to be notified when they are resized or un-hidden by their parents in order to take
+ action on their new measurements).
+
+ Elements that perform measurement should add the `Core.Resizable` mixin to their
+ Polymer prototype definition and listen for the `core-resize` event on themselves.
+ This event will be fired when they become showing after having been hidden,
+ when they are resized explicitly by a `CoreResizer`, or when the window has been resized.
+ Note, the `core-resize` event is non-bubbling.
+
+ `CoreResizable`'s must manually call the `resizableAttachedHandler` from the element's
+ `attached` callback and `resizableDetachedHandler` from the element's `detached`
+ callback.
+
+ @element CoreResizable
+ @status beta
+ @homepage github.io
+*/
+
+ scope.CoreResizable = {
+
+ /**
+ * User must call from `attached` callback
+ *
+ * @method resizableAttachedHandler
+ */
+ resizableAttachedHandler: function(cb) {
+ cb = cb || this._notifyResizeSelf;
+ this.async(function() {
+ var detail = {callback: cb, hasParentResizer: false};
+ this.fire('core-request-resize', detail);
+ if (!detail.hasParentResizer) {
+ this._boundWindowResizeHandler = cb.bind(this);
+ // log('adding window resize handler', null, this);
+ window.addEventListener('resize', this._boundWindowResizeHandler);
+ }
+ }.bind(this));
+ },
+
+ /**
+ * User must call from `detached` callback
+ *
+ * @method resizableDetachedHandler
+ */
+ resizableDetachedHandler: function() {
+ this.fire('core-request-resize-cancel', null, this, false);
+ if (this._boundWindowResizeHandler) {
+ window.removeEventListener('resize', this._boundWindowResizeHandler);
+ }
+ },
+
+ // Private: fire non-bubbling resize event to self; returns whether
+ // preventDefault was called, indicating that children should not
+ // be resized
+ _notifyResizeSelf: function() {
+ return this.fire('core-resize', null, this, false).defaultPrevented;
+ }
+
+ };
+
+/**
+ `Polymer.CoreResizable` and `Polymer.CoreResizer` are a set of mixins that can be used
+ in Polymer elements to coordinate the flow of resize events between "resizers" (elements
+ that control the size or hidden state of their children) and "resizables" (elements that
+ need to be notified when they are resized or un-hidden by their parents in order to take
+ action on their new measurements).
+
+ Elements that cause their children to be resized (e.g. a splitter control) or hide/show
+ their children (e.g. overlay) should add the `Core.CoreResizer` mixin to their
+ Polymer prototype definition and then call `this.notifyResize()` any time the element
+ resizes or un-hides its children.
+
+ `CoreResizer`'s must manually call the `resizerAttachedHandler` from the element's
+ `attached` callback and `resizerDetachedHandler` from the element's `detached`
+ callback.
+
+ Note: `CoreResizer` extends `CoreResizable`, and can listen for the `core-resize` event
+ on itself if it needs to perform resize work on itself before notifying children.
+ In this case, returning `false` from the `core-resize` event handler (or calling
+ `preventDefault` on the event) will prevent notification of children if required.
+
+ @element CoreResizer
+ @extends CoreResizable
+ @status beta
+ @homepage github.io
+*/
+
+ scope.CoreResizer = Polymer.mixin({
+
+ /**
+ * User must call from `attached` callback
+ *
+ * @method resizerAttachedHandler
+ */
+ resizerAttachedHandler: function() {
+ this.resizableAttachedHandler(this.notifyResize);
+ this._boundResizeRequested = this._boundResizeRequested || this._handleResizeRequested.bind(this);
+ var listener;
+ if (this.resizerIsPeer) {
+ listener = this.parentElement || (this.parentNode && this.parentNode.host);
+ listener._resizerPeers = listener._resizerPeers || [];
+ listener._resizerPeers.push(this);
+ } else {
+ listener = this;
+ }
+ listener.addEventListener('core-request-resize', this._boundResizeRequested);
+ this._resizerListener = listener;
+ },
+
+ /**
+ * User must call from `detached` callback
+ *
+ * @method resizerDetachedHandler
+ */
+ resizerDetachedHandler: function() {
+ this.resizableDetachedHandler();
+ this._resizerListener.removeEventListener('core-request-resize', this._boundResizeRequested);
+ },
+
+ /**
+ * User should call when resizing or un-hiding children
+ *
+ * @method notifyResize
+ */
+ notifyResize: function() {
+ // Notify self
+ if (!this._notifyResizeSelf()) {
+ // Notify requestors if default was not prevented
+ var r = this.resizeRequestors;
+ if (r) {
+ for (var i=0; i<r.length; i++) {
+ var ri = r[i];
+ if (!this.resizerShouldNotify || this.resizerShouldNotify(ri.target)) {
+ // log('notifying resize', null, ri.target, true);
+ ri.callback.apply(ri.target);
+ // logEnd();
+ }
+ }
+ }
+ }
+ },
+
+ /**
+ * User should implement to introduce filtering when notifying children.
+ * Generally, children that are hidden by the CoreResizer (e.g. non-active
+ * pages) need not be notified during resize, since they will be notified
+ * again when becoming un-hidden.
+ *
+ * Return `true` if CoreResizable passed as argument should be notified of
+ * resize.
+ *
+ * @method resizeerShouldNotify
+ * @param {Element} el
+ */
+ // resizeerShouldNotify: function(el) { } // User to implement if needed
+
+ /**
+ * Set to `true` if the resizer is actually a peer to the elements it
+ * resizes (e.g. splitter); in this case it will listen for resize requests
+ * events from its peers on its parent.
+ *
+ * @property resizerIsPeer
+ * @type Boolean
+ * @default false
+ */
+
+ // Private: Handle requests for resize
+ _handleResizeRequested: function(e) {
+ var target = e.path[0];
+ if ((target == this) ||
+ (target == this._resizerListener) ||
+ (this._resizerPeers && this._resizerPeers.indexOf(target) < 0)) {
+ return;
+ }
+ // log('resize requested', target, this);
+ if (!this.resizeRequestors) {
+ this.resizeRequestors = [];
+ }
+ this.resizeRequestors.push({target: target, callback: e.detail.callback});
+ target.addEventListener('core-request-resize-cancel', this._cancelResizeRequested.bind(this));
+ e.detail.hasParentResizer = true;
+ e.stopPropagation();
+ },
+
+ // Private: Handle cancellation requests for resize
+ _cancelResizeRequested: function(e) {
+ // Exit early if we're already out of the DOM (resizeRequestors will already be null)
+ if (this.resizeRequestors) {
+ for (var i=0; i<this.resizeRequestors.length; i++) {
+ if (this.resizeRequestors[i].target == e.target) {
+ // log('resizeCanceled', e.target, this);
+ this.resizeRequestors.splice(i, 1);
+ break;
+ }
+ }
+ }
+ }
+
+ }, Polymer.CoreResizable);
+
+ // function prettyName(el) {
+ // return el.localName + (el.id ? '#' : '') + el.id;
+ // }
+
+ // function log(what, from, to, group) {
+ // var args = [what];
+ // if (from) {
+ // args.push('from ' + prettyName(from));
+ // }
+ // if (to) {
+ // args.push('to ' + prettyName(to));
+ // }
+ // if (group) {
+ // console.group.apply(console, args);
+ // } else {
+ // console.log.apply(console, args);
+ // }
+ // }
+
+ // function logEnd() {
+ // console.groupEnd();
+ // }
+
+})(Polymer);
+
+</script>
« no previous file with comments | « polymer_0.5.0/bower_components/core-resizable/bower.json ('k') | polymer_0.5.0/bower_components/core-resizable/index.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698