', {'class': 'selectBox'}).appendTo($content);
+ var checkSelected = function () {
+ if (!sel.down) { return; }
+ var pos = sel.pos;
+ var l = $content[0].querySelectorAll('.element:not(.selected):not(.header)');
+ var p, el;
+ for (var i = 0; i < l.length; i++) {
+ el = l[i];
+ p = $(el).position();
+ p.top += 10 + $content.scrollTop();
+ p.left += 10;
+ p.bottom = p.top + $(el).outerHeight();
+ p.right = p.left + $(el).outerWidth();
+ if (p.right < pos.left || p.left > pos.right
+ || p.top > pos.bottom || p.bottom < pos.top) {
+ $(el).removeClass('selectedTmp');
+ } else {
+ $(el).addClass('selectedTmp');
+ }
+ }
+ };
+ $content.on('mousedown', function (e) {
+ console.log('down');
+ sel.down = true;
+ if (!e.ctrlKey) { removeSelected(); }
+ var rect = e.currentTarget.getBoundingClientRect();
+ sel.startX = e.clientX - rect.left,
+ sel.startY = e.clientY - rect.top + $content.scrollTop();
+ sel.$selectBox.show().css({
+ left: sel.startX + 'px',
+ top: sel.startY + 'px',
+ width: '0px',
+ height: '0px'
+ });
+ if (sel.move) { console.log('ret'); return; }
+ sel.move = function (ev) {
+ var rectMove = ev.currentTarget.getBoundingClientRect(),
+ offX = ev.clientX - rectMove.left,
+ offY = ev.clientY - rectMove.top + $content.scrollTop();
+
+
+ var left = sel.startX,
+ top = sel.startY;
+ var width = offX - sel.startX;
+ if (width < 0) {
+ left = Math.max(0, offX);
+ var diffX = left-offX;
+ width = Math.abs(width) - diffX;
+ }
+ var height = offY - sel.startY;
+ if (height < 0) {
+ top = Math.max(0, offY);
+ var diffY = top-offY;
+ height = Math.abs(height) - diffY;
+ }
+ sel.$selectBox.css({
+ width: width + 'px',
+ left: left + 'px',
+ height: height + 'px',
+ top: top + 'px'
+ });
+
+
+ sel.pos = {
+ top: top,
+ left: left,
+ bottom: top + height,
+ right: left + width
+ };
+ var diffT = sel.update ? +new Date() - sel.update : sel.refresh;
+ if (diffT < sel.refresh) {
+ if (!sel.to) {
+ sel.to = window.setTimeout(function () {
+ sel.update = +new Date();
+ checkSelected();
+ sel.to = undefined;
+ }, (sel.refresh - diffT));
+ }
+ console.log('cancelled');
+ return;
+ }
+ sel.update = +new Date();
+ checkSelected();
+ };
+ $content.mousemove(sel.move);
+ });
+ $content.on('mouseup', function (e) {
+ console.log(sel.pos);
+ sel.down = false;
+ sel.$selectBox.hide();
+ $content.off('mousemove', sel.move);
+ delete sel.move;
+ $content.find('.selectedTmp').removeClass('selectedTmp').addClass('selected');
+ });
+
+
var removeInput = function (cancel) {
if (!cancel && $iframe.find('.element-row > input').length === 1) {
var $input = $iframe.find('.element-row > input');
@@ -1501,6 +1603,7 @@ define([
currentPath = path;
var s = $content.scrollTop() || 0;
$content.html("");
+ sel.$selectBox = $('
', {'class': 'selectBox'}).appendTo($content);
if (!path || path.length === 0) {
path = [ROOT];
}