'use strict'; /*@ Ox.Clipboard Basic clipboard handler add Add items to clipboard (items[, type]) -> Number of items clear Clear clipboard () -> Number of items copy Copy items to clipboard (items[, type]) -> Number of items paste Paste items from clipboard () -> Items type Get item type () -> Item type @*/ Ox.Clipboard = function() { var clipboard = {items: [], type: void 0}, $element; return { _print: function() { Ox.print(JSON.stringify(clipboard)); }, add: function(items, type) { items = Ox.makeArray(items); if (items.length) { if (type != clipboard.type) { Ox.Clipboard.clear(); } clipboard = { items: Ox.unique(clipboard.items.concat(items)), type: type }; $element && $element.triggerEvent('add'); } return clipboard.items.length; }, bindEvent: function() { if (!$element) { $element = Ox.Element(); } $element.bindEvent.apply(this, arguments); }, clear: function() { clipboard = {items: [], type: void 0}; $element && $element.triggerEvent('clear'); return clipboard.items.length; }, copy: function(items, type) { items = Ox.makeArray(items); if (items.length) { clipboard = {items: items, type: type}; $element && $element.triggerEvent('copy'); } return clipboard.items.length; }, items: function(type) { return !type || type == clipboard.type ? clipboard.items.length : 0; }, paste: function(type) { $element && $element.triggerEvent('paste'); return !type || type == clipboard.type ? clipboard.items : []; }, type: function() { return clipboard.type; }, unbindEvent: function() { $element && $element.unbindEvent.apply(this, arguments); } }; };