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

Side by Side Diff: Source/devtools/front_end/elements/Spectrum.js

Issue 1319823002: Devtools Color: Animate drag rearrangement of custom color palette (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Improve performance Created 5 years, 3 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 unified diff | Download patch
« no previous file with comments | « no previous file | Source/devtools/front_end/elements/spectrum.css » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2011 Brian Grinstead All rights reserved. 2 * Copyright (C) 2011 Brian Grinstead All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 colorElement.addEventListener("contextmenu", this._showPaletteCo lorContextMenu.bind(this, i)); 251 colorElement.addEventListener("contextmenu", this._showPaletteCo lorContextMenu.bind(this, i));
252 } 252 }
253 this._paletteContainer.appendChild(colorElement); 253 this._paletteContainer.appendChild(colorElement);
254 } 254 }
255 this._paletteContainerMutable = palette.mutable; 255 this._paletteContainerMutable = palette.mutable;
256 256
257 var numItems = palette.colors.length; 257 var numItems = palette.colors.length;
258 if (palette.mutable) 258 if (palette.mutable)
259 numItems++; 259 numItems++;
260 var rowsNeeded = Math.max(1, Math.ceil(numItems / WebInspector.Spectrum. _itemsPerPaletteRow)); 260 var rowsNeeded = Math.max(1, Math.ceil(numItems / WebInspector.Spectrum. _itemsPerPaletteRow));
261 for (var i = 0; palette.mutable && i < rowsNeeded * WebInspector.Spectru m._itemsPerPaletteRow - numItems; i++)
262 this._paletteContainer.createChild("div", "spectrum-palette-color em pty-color");
263 if (palette.mutable) 261 if (palette.mutable)
264 this.contentElement.appendChild(this._addColorToolbar.element); 262 this.contentElement.appendChild(this._addColorToolbar.element);
265 else 263 else
266 this._addColorToolbar.element.remove(); 264 this._addColorToolbar.element.remove();
267 265
268 this._togglePalettePanel(false); 266 this._togglePalettePanel(false);
269 var paletteColorHeight = 12; 267 var paletteColorHeight = 12;
270 var paletteMargin = 12; 268 var paletteMargin = 12;
271 this.element.style.height = (this._paletteContainer.offsetTop + paletteM argin + (paletteColorHeight + paletteMargin) * rowsNeeded) + "px"; 269 this.element.style.height = (this._paletteContainer.offsetTop + paletteM argin + (paletteColorHeight + paletteMargin) * rowsNeeded) + "px";
272 this.dispatchEventToListeners(WebInspector.Spectrum.Events.SizeChanged); 270 this.dispatchEventToListeners(WebInspector.Spectrum.Events.SizeChanged);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
306 * @param {!Event} e 304 * @param {!Event} e
307 */ 305 */
308 _paletteDrag: function(e) 306 _paletteDrag: function(e)
309 { 307 {
310 if (e.pageX < this._paletteContainer.totalOffsetLeft() || e.pageY < this ._paletteContainer.totalOffsetTop()) 308 if (e.pageX < this._paletteContainer.totalOffsetLeft() || e.pageY < this ._paletteContainer.totalOffsetTop())
311 return; 309 return;
312 var newIndex = this._slotIndexForEvent(e); 310 var newIndex = this._slotIndexForEvent(e);
313 var offsetX = e.pageX - (newIndex % WebInspector.Spectrum._itemsPerPalet teRow) * WebInspector.Spectrum._colorChipSize; 311 var offsetX = e.pageX - (newIndex % WebInspector.Spectrum._itemsPerPalet teRow) * WebInspector.Spectrum._colorChipSize;
314 var offsetY = e.pageY - (newIndex / WebInspector.Spectrum._itemsPerPalet teRow | 0) * WebInspector.Spectrum._colorChipSize; 312 var offsetY = e.pageY - (newIndex / WebInspector.Spectrum._itemsPerPalet teRow | 0) * WebInspector.Spectrum._colorChipSize;
315 313
316 this._dragElement.style.position = "relative"; 314 this._dragElement.style.transform = "translateX(" + (offsetX - this._dra gHotSpotX) + "px) translateY(" + (offsetY - this._dragHotSpotY) + "px)";
317 this._dragElement.style.left = (offsetX - this._dragHotSpotX) + "px";
318 this._dragElement.style.top = (offsetY - this._dragHotSpotY) + "px";
319 var children = Array.prototype.slice.call(this._paletteContainer.childre n); 315 var children = Array.prototype.slice.call(this._paletteContainer.childre n);
320 var index = children.indexOf(this._dragElement); 316 var index = children.indexOf(this._dragElement);
317 /** @type {!Map.<!Element, {left: number, top: number}>} */
318 var swatchOffsets = new Map();
319 for (var swatch of children)
320 swatchOffsets.set(swatch, swatch.totalOffset());
321
321 if (index !== newIndex) 322 if (index !== newIndex)
322 this._paletteContainer.insertBefore(this._dragElement, children[newI ndex > index ? newIndex + 1 : newIndex]); 323 this._paletteContainer.insertBefore(this._dragElement, children[newI ndex > index ? newIndex + 1 : newIndex]);
324
325 for (var swatch of children) {
326 if (swatch === this._dragElement)
327 continue;
328 var before = swatchOffsets.get(swatch);
329 var after = swatch.totalOffset();
330 if (before.left !== after.left || before.top !== after.top) {
331 swatch.animate([
332 { transform: "translateX(" + (before.left - after.left) + "p x) translateY(" + (before.top - after.top) + "px)" },
333 { transform: "none" }], { duration: 100, easing: "cubic-bezi er(0, 0, 0.2, 1)" });
334 }
335 }
323 }, 336 },
324 337
325 /** 338 /**
326 * @param {!Event} e 339 * @param {!Event} e
327 */ 340 */
328 _paletteDragEnd: function(e) 341 _paletteDragEnd: function(e)
329 { 342 {
330 this._dragElement.style.removeProperty("position"); 343 this._dragElement.style.removeProperty("transform");
331 this._dragElement.style.removeProperty("left");
332 this._dragElement.style.removeProperty("top");
333 var children = this._paletteContainer.children; 344 var children = this._paletteContainer.children;
334 var colors = []; 345 var colors = [];
335 for (var i = 0; i < children.length; ++i) { 346 for (var i = 0; i < children.length; ++i) {
336 if (children[i].__color) 347 if (children[i].__color)
337 colors.push(children[i].__color); 348 colors.push(children[i].__color);
338 } 349 }
339 var palette = this._customPaletteSetting.get(); 350 var palette = this._customPaletteSetting.get();
340 palette.colors = colors; 351 palette.colors = colors;
341 this._customPaletteSetting.set(palette); 352 this._customPaletteSetting.set(palette);
342 this._showPalette(this._customPaletteSetting.get(), false); 353 this._showPalette(this._customPaletteSetting.get(), false);
(...skipping 551 matching lines...) Expand 10 before | Expand all | Expand 10 after
894 "#8BC34A", 905 "#8BC34A",
895 "#CDDC39", 906 "#CDDC39",
896 "#FFEB3B", 907 "#FFEB3B",
897 "#FFC107", 908 "#FFC107",
898 "#FF9800", 909 "#FF9800",
899 "#FF5722", 910 "#FF5722",
900 "#795548", 911 "#795548",
901 "#9E9E9E", 912 "#9E9E9E",
902 "#607D8B" 913 "#607D8B"
903 ]}; 914 ]};
OLDNEW
« no previous file with comments | « no previous file | Source/devtools/front_end/elements/spectrum.css » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698