| OLD | NEW |
| 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 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 106 /** @type {!Map.<string, !WebInspector.Spectrum.Palette>} */ | 106 /** @type {!Map.<string, !WebInspector.Spectrum.Palette>} */ |
| 107 this._palettes = new Map(); | 107 this._palettes = new Map(); |
| 108 this._palettePanel = this.contentElement.createChild("div", "palette-panel")
; | 108 this._palettePanel = this.contentElement.createChild("div", "palette-panel")
; |
| 109 this._palettePanelShowing = false; | 109 this._palettePanelShowing = false; |
| 110 this._paletteContainer = this.contentElement.createChild("div", "spectrum-pa
lette"); | 110 this._paletteContainer = this.contentElement.createChild("div", "spectrum-pa
lette"); |
| 111 this._paletteContainer.addEventListener("contextmenu", this._showPaletteColo
rContextMenu.bind(this, -1)); | 111 this._paletteContainer.addEventListener("contextmenu", this._showPaletteColo
rContextMenu.bind(this, -1)); |
| 112 WebInspector.installDragHandle(this._paletteContainer, this._paletteDragStar
t.bind(this), this._paletteDrag.bind(this), this._paletteDragEnd.bind(this), "de
fault"); | 112 WebInspector.installDragHandle(this._paletteContainer, this._paletteDragStar
t.bind(this), this._paletteDrag.bind(this), this._paletteDragEnd.bind(this), "de
fault"); |
| 113 var paletteSwitcher = this.contentElement.createChild("div", "spectrum-palet
te-switcher spectrum-switcher"); | 113 var paletteSwitcher = this.contentElement.createChild("div", "spectrum-palet
te-switcher spectrum-switcher"); |
| 114 appendSwitcherIcon(paletteSwitcher); | 114 appendSwitcherIcon(paletteSwitcher); |
| 115 paletteSwitcher.addEventListener("click", this._togglePalettePanel.bind(this
, true)); | 115 paletteSwitcher.addEventListener("click", this._togglePalettePanel.bind(this
, true)); |
| 116 |
| 117 this._deleteIconToolbar = new WebInspector.Toolbar(); |
| 118 this._deleteIconToolbar.element.classList.add("delete-color-toolbar"); |
| 119 this._deleteButton = new WebInspector.ToolbarButton("", "garbage-collect-too
lbar-item"); |
| 120 this._deleteIconToolbar.appendToolbarItem(this._deleteButton); |
| 121 |
| 116 var overlay = this.contentElement.createChild("div", "spectrum-overlay fill"
); | 122 var overlay = this.contentElement.createChild("div", "spectrum-overlay fill"
); |
| 117 overlay.addEventListener("click", this._togglePalettePanel.bind(this, false)
); | 123 overlay.addEventListener("click", this._togglePalettePanel.bind(this, false)
); |
| 118 | 124 |
| 119 this._addColorToolbar = new WebInspector.Toolbar(); | 125 this._addColorToolbar = new WebInspector.Toolbar(); |
| 120 this._addColorToolbar.element.classList.add("add-color-toolbar"); | 126 this._addColorToolbar.element.classList.add("add-color-toolbar"); |
| 121 var addColorButton = new WebInspector.ToolbarButton(WebInspector.UIString("A
dd to palette"), "add-toolbar-item"); | 127 var addColorButton = new WebInspector.ToolbarButton(WebInspector.UIString("A
dd to palette"), "add-toolbar-item"); |
| 122 addColorButton.addEventListener("click", this._addColorToCustomPalette.bind(
this)); | 128 addColorButton.addEventListener("click", this._addColorToCustomPalette.bind(
this)); |
| 123 this._addColorToolbar.appendToolbarItem(addColorButton); | 129 this._addColorToolbar.appendToolbarItem(addColorButton); |
| 124 | 130 |
| 125 new WebInspector.Spectrum.PaletteGenerator(this._generatedPaletteLoaded.bind
(this)); | 131 new WebInspector.Spectrum.PaletteGenerator(this._generatedPaletteLoaded.bind
(this)); |
| (...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 colorElement.addEventListener("contextmenu", this._showPaletteCo
lorContextMenu.bind(this, i)); | 257 colorElement.addEventListener("contextmenu", this._showPaletteCo
lorContextMenu.bind(this, i)); |
| 252 } | 258 } |
| 253 this._paletteContainer.appendChild(colorElement); | 259 this._paletteContainer.appendChild(colorElement); |
| 254 } | 260 } |
| 255 this._paletteContainerMutable = palette.mutable; | 261 this._paletteContainerMutable = palette.mutable; |
| 256 | 262 |
| 257 var numItems = palette.colors.length; | 263 var numItems = palette.colors.length; |
| 258 if (palette.mutable) | 264 if (palette.mutable) |
| 259 numItems++; | 265 numItems++; |
| 260 var rowsNeeded = Math.max(1, Math.ceil(numItems / WebInspector.Spectrum.
_itemsPerPaletteRow)); | 266 var rowsNeeded = Math.max(1, Math.ceil(numItems / WebInspector.Spectrum.
_itemsPerPaletteRow)); |
| 261 if (palette.mutable) | 267 if (palette.mutable) { |
| 262 this.contentElement.appendChild(this._addColorToolbar.element); | 268 this._paletteContainer.appendChild(this._addColorToolbar.element); |
| 263 else | 269 this._paletteContainer.appendChild(this._deleteIconToolbar.element); |
| 270 } else { |
| 264 this._addColorToolbar.element.remove(); | 271 this._addColorToolbar.element.remove(); |
| 272 this._deleteIconToolbar.element.remove(); |
| 273 } |
| 265 | 274 |
| 266 this._togglePalettePanel(false); | 275 this._togglePalettePanel(false); |
| 267 var paletteColorHeight = 12; | 276 var paletteColorHeight = 12; |
| 268 var paletteMargin = 12; | 277 var paletteMargin = 12; |
| 269 this.element.style.height = (this._paletteContainer.offsetTop + paletteM
argin + (paletteColorHeight + paletteMargin) * rowsNeeded) + "px"; | 278 this.element.style.height = (this._paletteContainer.offsetTop + paletteM
argin + (paletteColorHeight + paletteMargin) * rowsNeeded) + "px"; |
| 270 this.dispatchEventToListeners(WebInspector.Spectrum.Events.SizeChanged); | 279 this.dispatchEventToListeners(WebInspector.Spectrum.Events.SizeChanged); |
| 271 }, | 280 }, |
| 272 | 281 |
| 273 /** | 282 /** |
| 274 * @param {!Event} e | 283 * @param {!Event} e |
| 275 * @return {number} | 284 * @return {number} |
| 276 */ | 285 */ |
| 277 _slotIndexForEvent: function(e) | 286 _slotIndexForEvent: function(e) |
| 278 { | 287 { |
| 279 var localX = e.pageX - this._paletteContainer.totalOffsetLeft(); | 288 var localX = e.pageX - this._paletteContainer.totalOffsetLeft(); |
| 280 var localY = e.pageY - this._paletteContainer.totalOffsetTop(); | 289 var localY = e.pageY - this._paletteContainer.totalOffsetTop(); |
| 281 var col = Math.min(localX / WebInspector.Spectrum._colorChipSize | 0, We
bInspector.Spectrum._itemsPerPaletteRow - 1); | 290 var col = Math.min(localX / WebInspector.Spectrum._colorChipSize | 0, We
bInspector.Spectrum._itemsPerPaletteRow - 1); |
| 282 var row = (localY / WebInspector.Spectrum._colorChipSize) | 0; | 291 var row = (localY / WebInspector.Spectrum._colorChipSize) | 0; |
| 283 return Math.min(row * WebInspector.Spectrum._itemsPerPaletteRow + col, t
his._paletteContainer.children.length - 1); | 292 return Math.min(row * WebInspector.Spectrum._itemsPerPaletteRow + col, t
his._customPaletteSetting.get().colors.length - 1); |
| 284 }, | 293 }, |
| 285 | 294 |
| 286 /** | 295 /** |
| 296 * @param {!Event} e |
| 297 * @return {boolean} |
| 298 */ |
| 299 _isDraggingToBin: function(e) |
| 300 { |
| 301 return e.pageX > this._deleteIconToolbar.element.totalOffsetLeft(); |
| 302 }, |
| 303 |
| 304 /** |
| 287 * @param {!Event} e | 305 * @param {!Event} e |
| 288 * @return {boolean} | 306 * @return {boolean} |
| 289 */ | 307 */ |
| 290 _paletteDragStart: function(e) | 308 _paletteDragStart: function(e) |
| 291 { | 309 { |
| 292 var element = e.deepElementFromPoint(); | 310 var element = e.deepElementFromPoint(); |
| 293 if (!element.__mutable) | 311 if (!element || !element.__mutable) |
| 294 return false; | 312 return false; |
| 295 | 313 |
| 296 var index = this._slotIndexForEvent(e); | 314 var index = this._slotIndexForEvent(e); |
| 297 this._dragElement = element; | 315 this._dragElement = element; |
| 298 this._dragHotSpotX = e.pageX - (index % WebInspector.Spectrum._itemsPerP
aletteRow) * WebInspector.Spectrum._colorChipSize; | 316 this._dragHotSpotX = e.pageX - (index % WebInspector.Spectrum._itemsPerP
aletteRow) * WebInspector.Spectrum._colorChipSize; |
| 299 this._dragHotSpotY = e.pageY - (index / WebInspector.Spectrum._itemsPerP
aletteRow | 0) * WebInspector.Spectrum._colorChipSize; | 317 this._dragHotSpotY = e.pageY - (index / WebInspector.Spectrum._itemsPerP
aletteRow | 0) * WebInspector.Spectrum._colorChipSize; |
| 318 |
| 319 this._deleteIconToolbar.element.classList.add("dragging"); |
| 300 return true; | 320 return true; |
| 301 }, | 321 }, |
| 302 | 322 |
| 303 /** | 323 /** |
| 304 * @param {!Event} e | 324 * @param {!Event} e |
| 305 */ | 325 */ |
| 306 _paletteDrag: function(e) | 326 _paletteDrag: function(e) |
| 307 { | 327 { |
| 308 if (e.pageX < this._paletteContainer.totalOffsetLeft() || e.pageY < this
._paletteContainer.totalOffsetTop()) | 328 if (e.pageX < this._paletteContainer.totalOffsetLeft() || e.pageY < this
._paletteContainer.totalOffsetTop()) |
| 309 return; | 329 return; |
| 310 var newIndex = this._slotIndexForEvent(e); | 330 var newIndex = this._slotIndexForEvent(e); |
| 311 var offsetX = e.pageX - (newIndex % WebInspector.Spectrum._itemsPerPalet
teRow) * WebInspector.Spectrum._colorChipSize; | 331 var offsetX = e.pageX - (newIndex % WebInspector.Spectrum._itemsPerPalet
teRow) * WebInspector.Spectrum._colorChipSize; |
| 312 var offsetY = e.pageY - (newIndex / WebInspector.Spectrum._itemsPerPalet
teRow | 0) * WebInspector.Spectrum._colorChipSize; | 332 var offsetY = e.pageY - (newIndex / WebInspector.Spectrum._itemsPerPalet
teRow | 0) * WebInspector.Spectrum._colorChipSize; |
| 313 | 333 |
| 314 this._dragElement.style.transform = "translateX(" + (offsetX - this._dra
gHotSpotX) + "px) translateY(" + (offsetY - this._dragHotSpotY) + "px)"; | 334 var isDeleting = this._isDraggingToBin(e); |
| 335 this._deleteIconToolbar.element.classList.toggle("delete-color-toolbar-a
ctive", isDeleting); |
| 336 var dragElementTransform = "translateX(" + (offsetX - this._dragHotSpotX
) + "px) translateY(" + (offsetY - this._dragHotSpotY) + "px)"; |
| 337 this._dragElement.style.transform = isDeleting ? dragElementTransform +
" scale(0.8)" : dragElementTransform; |
| 315 var children = Array.prototype.slice.call(this._paletteContainer.childre
n); | 338 var children = Array.prototype.slice.call(this._paletteContainer.childre
n); |
| 316 var index = children.indexOf(this._dragElement); | 339 var index = children.indexOf(this._dragElement); |
| 317 /** @type {!Map.<!Element, {left: number, top: number}>} */ | 340 /** @type {!Map.<!Element, {left: number, top: number}>} */ |
| 318 var swatchOffsets = new Map(); | 341 var swatchOffsets = new Map(); |
| 319 for (var swatch of children) | 342 for (var swatch of children) |
| 320 swatchOffsets.set(swatch, swatch.totalOffset()); | 343 swatchOffsets.set(swatch, swatch.totalOffset()); |
| 321 | 344 |
| 322 if (index !== newIndex) | 345 if (index !== newIndex) |
| 323 this._paletteContainer.insertBefore(this._dragElement, children[newI
ndex > index ? newIndex + 1 : newIndex]); | 346 this._paletteContainer.insertBefore(this._dragElement, children[newI
ndex > index ? newIndex + 1 : newIndex]); |
| 324 | 347 |
| 325 for (var swatch of children) { | 348 for (var swatch of children) { |
| 326 if (swatch === this._dragElement) | 349 if (swatch === this._dragElement) |
| 327 continue; | 350 continue; |
| 328 var before = swatchOffsets.get(swatch); | 351 var before = swatchOffsets.get(swatch); |
| 329 var after = swatch.totalOffset(); | 352 var after = swatch.totalOffset(); |
| 330 if (before.left !== after.left || before.top !== after.top) { | 353 if (before.left !== after.left || before.top !== after.top) { |
| 331 swatch.animate([ | 354 swatch.animate([ |
| 332 { transform: "translateX(" + (before.left - after.left) + "p
x) translateY(" + (before.top - after.top) + "px)" }, | 355 { 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)" }); | 356 { transform: "none" }], { duration: 100, easing: "cubic-bezi
er(0, 0, 0.2, 1)" }); |
| 334 } | 357 } |
| 335 } | 358 } |
| 336 }, | 359 }, |
| 337 | 360 |
| 338 /** | 361 /** |
| 339 * @param {!Event} e | 362 * @param {!Event} e |
| 340 */ | 363 */ |
| 341 _paletteDragEnd: function(e) | 364 _paletteDragEnd: function(e) |
| 342 { | 365 { |
| 366 if (this._isDraggingToBin(e)) |
| 367 this._dragElement.remove(); |
| 343 this._dragElement.style.removeProperty("transform"); | 368 this._dragElement.style.removeProperty("transform"); |
| 344 var children = this._paletteContainer.children; | 369 var children = this._paletteContainer.children; |
| 345 var colors = []; | 370 var colors = []; |
| 346 for (var i = 0; i < children.length; ++i) { | 371 for (var i = 0; i < children.length; ++i) { |
| 347 if (children[i].__color) | 372 if (children[i].__color) |
| 348 colors.push(children[i].__color); | 373 colors.push(children[i].__color); |
| 349 } | 374 } |
| 350 var palette = this._customPaletteSetting.get(); | 375 var palette = this._customPaletteSetting.get(); |
| 351 palette.colors = colors; | 376 palette.colors = colors; |
| 352 this._customPaletteSetting.set(palette); | 377 this._customPaletteSetting.set(palette); |
| 353 this._showPalette(this._customPaletteSetting.get(), false); | 378 this._showPalette(this._customPaletteSetting.get(), false); |
| 379 |
| 380 this._deleteIconToolbar.element.classList.remove("dragging"); |
| 381 this._deleteIconToolbar.element.classList.remove("delete-color-toolbar-a
ctive"); |
| 382 this._deleteButton.setToggled(false); |
| 354 }, | 383 }, |
| 355 | 384 |
| 356 /** | 385 /** |
| 357 * @param {!WebInspector.Spectrum.Palette} generatedPalette | 386 * @param {!WebInspector.Spectrum.Palette} generatedPalette |
| 358 */ | 387 */ |
| 359 _generatedPaletteLoaded: function(generatedPalette) | 388 _generatedPaletteLoaded: function(generatedPalette) |
| 360 { | 389 { |
| 361 if (generatedPalette.colors.length) | 390 if (generatedPalette.colors.length) |
| 362 this._palettes.set(generatedPalette.title, generatedPalette); | 391 this._palettes.set(generatedPalette.title, generatedPalette); |
| 363 this._palettes.set(WebInspector.Spectrum.MaterialPalette.title, WebInspe
ctor.Spectrum.MaterialPalette); | 392 this._palettes.set(WebInspector.Spectrum.MaterialPalette.title, WebInspe
ctor.Spectrum.MaterialPalette); |
| (...skipping 541 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 905 "#8BC34A", | 934 "#8BC34A", |
| 906 "#CDDC39", | 935 "#CDDC39", |
| 907 "#FFEB3B", | 936 "#FFEB3B", |
| 908 "#FFC107", | 937 "#FFC107", |
| 909 "#FF9800", | 938 "#FF9800", |
| 910 "#FF5722", | 939 "#FF5722", |
| 911 "#795548", | 940 "#795548", |
| 912 "#9E9E9E", | 941 "#9E9E9E", |
| 913 "#607D8B" | 942 "#607D8B" |
| 914 ]}; | 943 ]}; |
| OLD | NEW |