UNPKG

causeway-standard-theme

Version:

1,798 lines (1,558 loc) 92.2 kB
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ var DragAndDropHandler, DragElement, HitAreasGenerator, Position, VisibleNodeIterator, node_module, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, hasProp = {}.hasOwnProperty; node_module = require('./node'); Position = node_module.Position; DragAndDropHandler = (function() { function DragAndDropHandler(tree_widget) { this.tree_widget = tree_widget; this.hovered_area = null; this.$ghost = null; this.hit_areas = []; this.is_dragging = false; this.current_item = null; } DragAndDropHandler.prototype.mouseCapture = function(position_info) { var $element, node_element; $element = $(position_info.target); if (!this.mustCaptureElement($element)) { return null; } if (this.tree_widget.options.onIsMoveHandle && !this.tree_widget.options.onIsMoveHandle($element)) { return null; } node_element = this.tree_widget._getNodeElement($element); if (node_element && this.tree_widget.options.onCanMove) { if (!this.tree_widget.options.onCanMove(node_element.node)) { node_element = null; } } this.current_item = node_element; return this.current_item !== null; }; DragAndDropHandler.prototype.mouseStart = function(position_info) { var offset; this.refresh(); offset = $(position_info.target).offset(); this.drag_element = new DragElement(this.current_item.node, position_info.page_x - offset.left, position_info.page_y - offset.top, this.tree_widget.element); this.is_dragging = true; this.current_item.$element.addClass('jqtree-moving'); return true; }; DragAndDropHandler.prototype.mouseDrag = function(position_info) { var area, can_move_to; this.drag_element.move(position_info.page_x, position_info.page_y); area = this.findHoveredArea(position_info.page_x, position_info.page_y); can_move_to = this.canMoveToArea(area); if (can_move_to && area) { if (!area.node.isFolder()) { this.stopOpenFolderTimer(); } if (this.hovered_area !== area) { this.hovered_area = area; if (this.mustOpenFolderTimer(area)) { this.startOpenFolderTimer(area.node); } else { this.stopOpenFolderTimer(); } this.updateDropHint(); } } else { this.removeHover(); this.removeDropHint(); this.stopOpenFolderTimer(); } return true; }; DragAndDropHandler.prototype.mustCaptureElement = function($element) { return !$element.is('input,select'); }; DragAndDropHandler.prototype.canMoveToArea = function(area) { var position_name; if (!area) { return false; } else if (this.tree_widget.options.onCanMoveTo) { position_name = Position.getName(area.position); return this.tree_widget.options.onCanMoveTo(this.current_item.node, area.node, position_name); } else { return true; } }; DragAndDropHandler.prototype.mouseStop = function(position_info) { this.moveItem(position_info); this.clear(); this.removeHover(); this.removeDropHint(); this.removeHitAreas(); if (this.current_item) { this.current_item.$element.removeClass('jqtree-moving'); this.current_item = null; } this.is_dragging = false; return false; }; DragAndDropHandler.prototype.refresh = function() { this.removeHitAreas(); if (this.current_item) { this.generateHitAreas(); this.current_item = this.tree_widget._getNodeElementForNode(this.current_item.node); if (this.is_dragging) { return this.current_item.$element.addClass('jqtree-moving'); } } }; DragAndDropHandler.prototype.removeHitAreas = function() { return this.hit_areas = []; }; DragAndDropHandler.prototype.clear = function() { this.drag_element.remove(); return this.drag_element = null; }; DragAndDropHandler.prototype.removeDropHint = function() { if (this.previous_ghost) { return this.previous_ghost.remove(); } }; DragAndDropHandler.prototype.removeHover = function() { return this.hovered_area = null; }; DragAndDropHandler.prototype.generateHitAreas = function() { var hit_areas_generator; hit_areas_generator = new HitAreasGenerator(this.tree_widget.tree, this.current_item.node, this.getTreeDimensions().bottom); return this.hit_areas = hit_areas_generator.generate(); }; DragAndDropHandler.prototype.findHoveredArea = function(x, y) { var area, dimensions, high, low, mid; dimensions = this.getTreeDimensions(); if (x < dimensions.left || y < dimensions.top || x > dimensions.right || y > dimensions.bottom) { return null; } low = 0; high = this.hit_areas.length; while (low < high) { mid = (low + high) >> 1; area = this.hit_areas[mid]; if (y < area.top) { high = mid; } else if (y > area.bottom) { low = mid + 1; } else { return area; } } return null; }; DragAndDropHandler.prototype.mustOpenFolderTimer = function(area) { var node; node = area.node; return node.isFolder() && !node.is_open && area.position === Position.INSIDE; }; DragAndDropHandler.prototype.updateDropHint = function() { var node_element; if (!this.hovered_area) { return; } this.removeDropHint(); node_element = this.tree_widget._getNodeElementForNode(this.hovered_area.node); return this.previous_ghost = node_element.addDropHint(this.hovered_area.position); }; DragAndDropHandler.prototype.startOpenFolderTimer = function(folder) { var openFolder; openFolder = (function(_this) { return function() { return _this.tree_widget._openNode(folder, _this.tree_widget.options.slide, function() { _this.refresh(); return _this.updateDropHint(); }); }; })(this); this.stopOpenFolderTimer(); return this.open_folder_timer = setTimeout(openFolder, this.tree_widget.options.openFolderDelay); }; DragAndDropHandler.prototype.stopOpenFolderTimer = function() { if (this.open_folder_timer) { clearTimeout(this.open_folder_timer); return this.open_folder_timer = null; } }; DragAndDropHandler.prototype.moveItem = function(position_info) { var doMove, event, moved_node, position, previous_parent, target_node; if (this.hovered_area && this.hovered_area.position !== Position.NONE && this.canMoveToArea(this.hovered_area)) { moved_node = this.current_item.node; target_node = this.hovered_area.node; position = this.hovered_area.position; previous_parent = moved_node.parent; if (position === Position.INSIDE) { this.hovered_area.node.is_open = true; } doMove = (function(_this) { return function() { _this.tree_widget.tree.moveNode(moved_node, target_node, position); _this.tree_widget.element.empty(); return _this.tree_widget._refreshElements(); }; })(this); event = this.tree_widget._triggerEvent('tree.move', { move_info: { moved_node: moved_node, target_node: target_node, position: Position.getName(position), previous_parent: previous_parent, do_move: doMove, original_event: position_info.original_event } }); if (!event.isDefaultPrevented()) { return doMove(); } } }; DragAndDropHandler.prototype.getTreeDimensions = function() { var offset; offset = this.tree_widget.element.offset(); return { left: offset.left, top: offset.top, right: offset.left + this.tree_widget.element.width(), bottom: offset.top + this.tree_widget.element.height() + 16 }; }; return DragAndDropHandler; })(); VisibleNodeIterator = (function() { function VisibleNodeIterator(tree) { this.tree = tree; } VisibleNodeIterator.prototype.iterate = function() { var _iterateNode, is_first_node; is_first_node = true; _iterateNode = (function(_this) { return function(node, next_node) { var $element, child, children_length, i, j, len, must_iterate_inside, ref; must_iterate_inside = (node.is_open || !node.element) && node.hasChildren(); if (node.element) { $element = $(node.element); if (!$element.is(':visible')) { return; } if (is_first_node) { _this.handleFirstNode(node, $element); is_first_node = false; } if (!node.hasChildren()) { _this.handleNode(node, next_node, $element); } else if (node.is_open) { if (!_this.handleOpenFolder(node, $element)) { must_iterate_inside = false; } } else { _this.handleClosedFolder(node, next_node, $element); } } if (must_iterate_inside) { children_length = node.children.length; ref = node.children; for (i = j = 0, len = ref.length; j < len; i = ++j) { child = ref[i]; if (i === (children_length - 1)) { _iterateNode(node.children[i], null); } else { _iterateNode(node.children[i], node.children[i + 1]); } } if (node.is_open) { return _this.handleAfterOpenFolder(node, next_node, $element); } } }; })(this); return _iterateNode(this.tree, null); }; VisibleNodeIterator.prototype.handleNode = function(node, next_node, $element) {}; VisibleNodeIterator.prototype.handleOpenFolder = function(node, $element) {}; VisibleNodeIterator.prototype.handleClosedFolder = function(node, next_node, $element) {}; VisibleNodeIterator.prototype.handleAfterOpenFolder = function(node, next_node, $element) {}; VisibleNodeIterator.prototype.handleFirstNode = function(node, $element) {}; return VisibleNodeIterator; })(); HitAreasGenerator = (function(superClass) { extend(HitAreasGenerator, superClass); function HitAreasGenerator(tree, current_node, tree_bottom) { HitAreasGenerator.__super__.constructor.call(this, tree); this.current_node = current_node; this.tree_bottom = tree_bottom; } HitAreasGenerator.prototype.generate = function() { this.positions = []; this.last_top = 0; this.iterate(); return this.generateHitAreas(this.positions); }; HitAreasGenerator.prototype.getTop = function($element) { return $element.offset().top; }; HitAreasGenerator.prototype.addPosition = function(node, position, top) { var area; area = { top: top, node: node, position: position }; this.positions.push(area); return this.last_top = top; }; HitAreasGenerator.prototype.handleNode = function(node, next_node, $element) { var top; top = this.getTop($element); if (node === this.current_node) { this.addPosition(node, Position.NONE, top); } else { this.addPosition(node, Position.INSIDE, top); } if (next_node === this.current_node || node === this.current_node) { return this.addPosition(node, Position.NONE, top); } else { return this.addPosition(node, Position.AFTER, top); } }; HitAreasGenerator.prototype.handleOpenFolder = function(node, $element) { if (node === this.current_node) { return false; } if (node.children[0] !== this.current_node) { this.addPosition(node, Position.INSIDE, this.getTop($element)); } return true; }; HitAreasGenerator.prototype.handleClosedFolder = function(node, next_node, $element) { var top; top = this.getTop($element); if (node === this.current_node) { return this.addPosition(node, Position.NONE, top); } else { this.addPosition(node, Position.INSIDE, top); if (next_node !== this.current_node) { return this.addPosition(node, Position.AFTER, top); } } }; HitAreasGenerator.prototype.handleFirstNode = function(node, $element) { if (node !== this.current_node) { return this.addPosition(node, Position.BEFORE, this.getTop($(node.element))); } }; HitAreasGenerator.prototype.handleAfterOpenFolder = function(node, next_node, $element) { if (node === this.current_node.node || next_node === this.current_node.node) { return this.addPosition(node, Position.NONE, this.last_top); } else { return this.addPosition(node, Position.AFTER, this.last_top); } }; HitAreasGenerator.prototype.generateHitAreas = function(positions) { var group, hit_areas, j, len, position, previous_top; previous_top = -1; group = []; hit_areas = []; for (j = 0, len = positions.length; j < len; j++) { position = positions[j]; if (position.top !== previous_top && group.length) { if (group.length) { this.generateHitAreasForGroup(hit_areas, group, previous_top, position.top); } previous_top = position.top; group = []; } group.push(position); } this.generateHitAreasForGroup(hit_areas, group, previous_top, this.tree_bottom); return hit_areas; }; HitAreasGenerator.prototype.generateHitAreasForGroup = function(hit_areas, positions_in_group, top, bottom) { var area_height, area_top, i, position, position_count; position_count = Math.min(positions_in_group.length, 4); area_height = Math.round((bottom - top) / position_count); area_top = top; i = 0; while (i < position_count) { position = positions_in_group[i]; hit_areas.push({ top: area_top, bottom: area_top + area_height, node: position.node, position: position.position }); area_top += area_height; i += 1; } return null; }; return HitAreasGenerator; })(VisibleNodeIterator); DragElement = (function() { function DragElement(node, offset_x, offset_y, $tree) { this.offset_x = offset_x; this.offset_y = offset_y; this.$element = $("<span class=\"jqtree-title jqtree-dragging\">" + node.name + "</span>"); this.$element.css("position", "absolute"); $tree.append(this.$element); } DragElement.prototype.move = function(page_x, page_y) { return this.$element.offset({ left: page_x - this.offset_x, top: page_y - this.offset_y }); }; DragElement.prototype.remove = function() { return this.$element.remove(); }; return DragElement; })(); module.exports = DragAndDropHandler; },{"./node":5}],2:[function(require,module,exports){ var ElementsRenderer, NodeElement, html_escape, node_element, util; node_element = require('./node_element'); NodeElement = node_element.NodeElement; util = require('./util'); html_escape = util.html_escape; ElementsRenderer = (function() { function ElementsRenderer(tree_widget) { this.tree_widget = tree_widget; this.opened_icon_element = this.createButtonElement(tree_widget.options.openedIcon); this.closed_icon_element = this.createButtonElement(tree_widget.options.closedIcon); } ElementsRenderer.prototype.render = function(from_node) { if (from_node && from_node.parent) { return this.renderFromNode(from_node); } else { return this.renderFromRoot(); } }; ElementsRenderer.prototype.renderFromRoot = function() { var $element; $element = this.tree_widget.element; $element.empty(); return this.createDomElements($element[0], this.tree_widget.tree.children, true, true); }; ElementsRenderer.prototype.renderFromNode = function(node) { var $previous_li, li; $previous_li = $(node.element); li = this.createLi(node); this.attachNodeData(node, li); $previous_li.after(li); $previous_li.remove(); if (node.children) { return this.createDomElements(li, node.children, false, false); } }; ElementsRenderer.prototype.createDomElements = function(element, children, is_root_node, is_open) { var child, i, len, li, ul; ul = this.createUl(is_root_node); element.appendChild(ul); for (i = 0, len = children.length; i < len; i++) { child = children[i]; li = this.createLi(child); ul.appendChild(li); this.attachNodeData(child, li); if (child.hasChildren()) { this.createDomElements(li, child.children, false, child.is_open); } } return null; }; ElementsRenderer.prototype.attachNodeData = function(node, li) { node.element = li; return $(li).data('node', node); }; ElementsRenderer.prototype.createUl = function(is_root_node) { var class_string, ul; if (is_root_node) { class_string = 'jqtree-tree'; } else { class_string = ''; } ul = document.createElement('ul'); ul.className = "jqtree_common " + class_string; return ul; }; ElementsRenderer.prototype.createLi = function(node) { var li; if (node.isFolder()) { li = this.createFolderLi(node); } else { li = this.createNodeLi(node); } if (this.tree_widget.options.onCreateLi) { this.tree_widget.options.onCreateLi(node, $(li)); } return li; }; ElementsRenderer.prototype.createFolderLi = function(node) { var button_classes, button_link, div, escaped_name, folder_classes, icon_element, li, title_span; button_classes = this.getButtonClasses(node); folder_classes = this.getFolderClasses(node); escaped_name = this.escapeIfNecessary(node.name); if (node.is_open) { icon_element = this.opened_icon_element; } else { icon_element = this.closed_icon_element; } li = document.createElement('li'); li.className = "jqtree_common " + folder_classes; div = document.createElement('div'); div.className = "jqtree-element jqtree_common"; li.appendChild(div); button_link = document.createElement('a'); button_link.className = "jqtree_common " + button_classes; button_link.appendChild(icon_element.cloneNode(false)); div.appendChild(button_link); title_span = document.createElement('span'); title_span.className = "jqtree_common jqtree-title jqtree-title-folder"; div.appendChild(title_span); title_span.innerHTML = escaped_name; return li; }; ElementsRenderer.prototype.createNodeLi = function(node) { var class_string, div, escaped_name, li, li_classes, title_span; li_classes = ['jqtree_common']; if (this.tree_widget.select_node_handler && this.tree_widget.select_node_handler.isNodeSelected(node)) { li_classes.push('jqtree-selected'); } class_string = li_classes.join(' '); escaped_name = this.escapeIfNecessary(node.name); li = document.createElement('li'); li.className = class_string; div = document.createElement('div'); div.className = "jqtree-element jqtree_common"; li.appendChild(div); title_span = document.createElement('span'); title_span.className = "jqtree-title jqtree_common"; title_span.innerHTML = escaped_name; div.appendChild(title_span); return li; }; ElementsRenderer.prototype.getButtonClasses = function(node) { var classes; classes = ['jqtree-toggler']; if (!node.is_open) { classes.push('jqtree-closed'); } return classes.join(' '); }; ElementsRenderer.prototype.getFolderClasses = function(node) { var classes; classes = ['jqtree-folder']; if (!node.is_open) { classes.push('jqtree-closed'); } if (this.tree_widget.select_node_handler && this.tree_widget.select_node_handler.isNodeSelected(node)) { classes.push('jqtree-selected'); } if (node.is_loading) { classes.push('jqtree-loading'); } return classes.join(' '); }; ElementsRenderer.prototype.escapeIfNecessary = function(value) { if (this.tree_widget.options.autoEscape) { return html_escape(value); } else { return value; } }; ElementsRenderer.prototype.createButtonElement = function(value) { var div; if (typeof value === 'string') { div = document.createElement('div'); div.innerHTML = value; return document.createTextNode(div.innerHTML); } else { return $(value)[0]; } }; return ElementsRenderer; })(); module.exports = ElementsRenderer; },{"./node_element":6,"./util":12}],3:[function(require,module,exports){ var KeyHandler, bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; KeyHandler = (function() { var DOWN, LEFT, RIGHT, UP; LEFT = 37; UP = 38; RIGHT = 39; DOWN = 40; function KeyHandler(tree_widget) { this.selectNode = bind(this.selectNode, this); this.tree_widget = tree_widget; if (tree_widget.options.keyboardSupport) { $(document).bind('keydown.jqtree', $.proxy(this.handleKeyDown, this)); } } KeyHandler.prototype.deinit = function() { return $(document).unbind('keydown.jqtree'); }; KeyHandler.prototype.moveDown = function() { var node; node = this.tree_widget.getSelectedNode(); if (node) { return this.selectNode(node.getNextNode()); } else { return false; } }; KeyHandler.prototype.moveUp = function() { var node; node = this.tree_widget.getSelectedNode(); if (node) { return this.selectNode(node.getPreviousNode()); } else { return false; } }; KeyHandler.prototype.moveRight = function() { var node; node = this.tree_widget.getSelectedNode(); if (node && node.isFolder() && !node.is_open) { this.tree_widget.openNode(node); return false; } else { return true; } }; KeyHandler.prototype.moveLeft = function() { var node; node = this.tree_widget.getSelectedNode(); if (node && node.isFolder() && node.is_open) { this.tree_widget.closeNode(node); return false; } else { return true; } }; KeyHandler.prototype.handleKeyDown = function(e) { var key; if (!this.tree_widget.options.keyboardSupport) { return true; } if ($(document.activeElement).is('textarea,input,select')) { return true; } if (!this.tree_widget.getSelectedNode()) { return true; } key = e.which; switch (key) { case DOWN: return this.moveDown(); case UP: return this.moveUp(); case RIGHT: return this.moveRight(); case LEFT: return this.moveLeft(); } return true; }; KeyHandler.prototype.selectNode = function(node) { if (!node) { return true; } else { this.tree_widget.selectNode(node); if (this.tree_widget.scroll_handler && (!this.tree_widget.scroll_handler.isScrolledIntoView($(node.element).find('.jqtree-element')))) { this.tree_widget.scrollToNode(node); } return false; } }; return KeyHandler; })(); module.exports = KeyHandler; },{}],4:[function(require,module,exports){ /* This widget does the same a the mouse widget in jqueryui. */ var MouseWidget, SimpleWidget, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, hasProp = {}.hasOwnProperty; SimpleWidget = require('./simple.widget'); MouseWidget = (function(superClass) { extend(MouseWidget, superClass); function MouseWidget() { return MouseWidget.__super__.constructor.apply(this, arguments); } MouseWidget.is_mouse_handled = false; MouseWidget.prototype._init = function() { this.$el.bind('mousedown.mousewidget', $.proxy(this._mouseDown, this)); this.$el.bind('touchstart.mousewidget', $.proxy(this._touchStart, this)); this.is_mouse_started = false; this.mouse_delay = 0; this._mouse_delay_timer = null; this._is_mouse_delay_met = true; return this.mouse_down_info = null; }; MouseWidget.prototype._deinit = function() { var $document; this.$el.unbind('mousedown.mousewidget'); this.$el.unbind('touchstart.mousewidget'); $document = $(document); $document.unbind('mousemove.mousewidget'); return $document.unbind('mouseup.mousewidget'); }; MouseWidget.prototype._mouseDown = function(e) { var result; if (e.which !== 1) { return; } result = this._handleMouseDown(e, this._getPositionInfo(e)); if (result) { e.preventDefault(); } return result; }; MouseWidget.prototype._handleMouseDown = function(e, position_info) { if (MouseWidget.is_mouse_handled) { return; } if (this.is_mouse_started) { this._handleMouseUp(position_info); } this.mouse_down_info = position_info; if (!this._mouseCapture(position_info)) { return; } this._handleStartMouse(); this.is_mouse_handled = true; return true; }; MouseWidget.prototype._handleStartMouse = function() { var $document; $document = $(document); $document.bind('mousemove.mousewidget', $.proxy(this._mouseMove, this)); $document.bind('touchmove.mousewidget', $.proxy(this._touchMove, this)); $document.bind('mouseup.mousewidget', $.proxy(this._mouseUp, this)); $document.bind('touchend.mousewidget', $.proxy(this._touchEnd, this)); if (this.mouse_delay) { return this._startMouseDelayTimer(); } }; MouseWidget.prototype._startMouseDelayTimer = function() { if (this._mouse_delay_timer) { clearTimeout(this._mouse_delay_timer); } this._mouse_delay_timer = setTimeout((function(_this) { return function() { return _this._is_mouse_delay_met = true; }; })(this), this.mouse_delay); return this._is_mouse_delay_met = false; }; MouseWidget.prototype._mouseMove = function(e) { return this._handleMouseMove(e, this._getPositionInfo(e)); }; MouseWidget.prototype._handleMouseMove = function(e, position_info) { if (this.is_mouse_started) { this._mouseDrag(position_info); return e.preventDefault(); } if (this.mouse_delay && !this._is_mouse_delay_met) { return true; } this.is_mouse_started = this._mouseStart(this.mouse_down_info) !== false; if (this.is_mouse_started) { this._mouseDrag(position_info); } else { this._handleMouseUp(position_info); } return !this.is_mouse_started; }; MouseWidget.prototype._getPositionInfo = function(e) { return { page_x: e.pageX, page_y: e.pageY, target: e.target, original_event: e }; }; MouseWidget.prototype._mouseUp = function(e) { return this._handleMouseUp(this._getPositionInfo(e)); }; MouseWidget.prototype._handleMouseUp = function(position_info) { var $document; $document = $(document); $document.unbind('mousemove.mousewidget'); $document.unbind('touchmove.mousewidget'); $document.unbind('mouseup.mousewidget'); $document.unbind('touchend.mousewidget'); if (this.is_mouse_started) { this.is_mouse_started = false; this._mouseStop(position_info); } }; MouseWidget.prototype._mouseCapture = function(position_info) { return true; }; MouseWidget.prototype._mouseStart = function(position_info) { return null; }; MouseWidget.prototype._mouseDrag = function(position_info) { return null; }; MouseWidget.prototype._mouseStop = function(position_info) { return null; }; MouseWidget.prototype.setMouseDelay = function(mouse_delay) { return this.mouse_delay = mouse_delay; }; MouseWidget.prototype._touchStart = function(e) { var touch; if (e.originalEvent.touches.length > 1) { return; } touch = e.originalEvent.changedTouches[0]; return this._handleMouseDown(e, this._getPositionInfo(touch)); }; MouseWidget.prototype._touchMove = function(e) { var touch; if (e.originalEvent.touches.length > 1) { return; } touch = e.originalEvent.changedTouches[0]; return this._handleMouseMove(e, this._getPositionInfo(touch)); }; MouseWidget.prototype._touchEnd = function(e) { var touch; if (e.originalEvent.touches.length > 1) { return; } touch = e.originalEvent.changedTouches[0]; return this._handleMouseUp(this._getPositionInfo(touch)); }; return MouseWidget; })(SimpleWidget); module.exports = MouseWidget; },{"./simple.widget":10}],5:[function(require,module,exports){ var Node, Position; Position = { getName: function(position) { return Position.strings[position - 1]; }, nameToIndex: function(name) { var i, j, ref; for (i = j = 1, ref = Position.strings.length; 1 <= ref ? j <= ref : j >= ref; i = 1 <= ref ? ++j : --j) { if (Position.strings[i - 1] === name) { return i; } } return 0; } }; Position.BEFORE = 1; Position.AFTER = 2; Position.INSIDE = 3; Position.NONE = 4; Position.strings = ['before', 'after', 'inside', 'none']; Node = (function() { function Node(o, is_root, node_class) { if (is_root == null) { is_root = false; } if (node_class == null) { node_class = Node; } this.setData(o); this.children = []; this.parent = null; if (is_root) { this.id_mapping = {}; this.tree = this; this.node_class = node_class; } } Node.prototype.setData = function(o) { var key, value; if (typeof o !== 'object') { this.name = o; } else { for (key in o) { value = o[key]; if (key === 'label') { this.name = value; } else { this[key] = value; } } } return null; }; Node.prototype.initFromData = function(data) { var addChildren, addNode; addNode = (function(_this) { return function(node_data) { _this.setData(node_data); if (node_data.children) { return addChildren(node_data.children); } }; })(this); addChildren = (function(_this) { return function(children_data) { var child, j, len, node; for (j = 0, len = children_data.length; j < len; j++) { child = children_data[j]; node = new _this.tree.node_class(''); node.initFromData(child); _this.addChild(node); } return null; }; })(this); addNode(data); return null; }; /* Create tree from data. Structure of data is: [ { label: 'node1', children: [ { label: 'child1' }, { label: 'child2' } ] }, { label: 'node2' } ] */ Node.prototype.loadFromData = function(data) { var j, len, node, o; this.removeChildren(); for (j = 0, len = data.length; j < len; j++) { o = data[j]; node = new this.tree.node_class(o); this.addChild(node); if (typeof o === 'object' && o.children) { node.loadFromData(o.children); } } return null; }; /* Add child. tree.addChild( new Node('child1') ); */ Node.prototype.addChild = function(node) { this.children.push(node); return node._setParent(this); }; /* Add child at position. Index starts at 0. tree.addChildAtPosition( new Node('abc'), 1 ); */ Node.prototype.addChildAtPosition = function(node, index) { this.children.splice(index, 0, node); return node._setParent(this); }; Node.prototype._setParent = function(parent) { this.parent = parent; this.tree = parent.tree; return this.tree.addNodeToIndex(this); }; /* Remove child. This also removes the children of the node. tree.removeChild(tree.children[0]); */ Node.prototype.removeChild = function(node) { node.removeChildren(); return this._removeChild(node); }; Node.prototype._removeChild = function(node) { this.children.splice(this.getChildIndex(node), 1); return this.tree.removeNodeFromIndex(node); }; /* Get child index. var index = getChildIndex(node); */ Node.prototype.getChildIndex = function(node) { return $.inArray(node, this.children); }; /* Does the tree have children? if (tree.hasChildren()) { // } */ Node.prototype.hasChildren = function() { return this.children.length !== 0; }; Node.prototype.isFolder = function() { return this.hasChildren() || this.load_on_demand; }; /* Iterate over all the nodes in the tree. Calls callback with (node, level). The callback must return true to continue the iteration on current node. tree.iterate( function(node, level) { console.log(node.name); // stop iteration after level 2 return (level <= 2); } ); */ Node.prototype.iterate = function(callback) { var _iterate; _iterate = function(node, level) { var child, j, len, ref, result; if (node.children) { ref = node.children; for (j = 0, len = ref.length; j < len; j++) { child = ref[j]; result = callback(child, level); if (result && child.hasChildren()) { _iterate(child, level + 1); } } return null; } }; _iterate(this, 0); return null; }; /* Move node relative to another node. Argument position: Position.BEFORE, Position.AFTER or Position.Inside // move node1 after node2 tree.moveNode(node1, node2, Position.AFTER); */ Node.prototype.moveNode = function(moved_node, target_node, position) { if (moved_node.isParentOf(target_node)) { return; } moved_node.parent._removeChild(moved_node); if (position === Position.AFTER) { return target_node.parent.addChildAtPosition(moved_node, target_node.parent.getChildIndex(target_node) + 1); } else if (position === Position.BEFORE) { return target_node.parent.addChildAtPosition(moved_node, target_node.parent.getChildIndex(target_node)); } else if (position === Position.INSIDE) { return target_node.addChildAtPosition(moved_node, 0); } }; /* Get the tree as data. */ Node.prototype.getData = function() { var getDataFromNodes; getDataFromNodes = (function(_this) { return function(nodes) { var data, j, k, len, node, tmp_node, v; data = []; for (j = 0, len = nodes.length; j < len; j++) { node = nodes[j]; tmp_node = {}; for (k in node) { v = node[k]; if ((k !== 'parent' && k !== 'children' && k !== 'element' && k !== 'tree') && Object.prototype.hasOwnProperty.call(node, k)) { tmp_node[k] = v; } } if (node.hasChildren()) { tmp_node.children = getDataFromNodes(node.children); } data.push(tmp_node); } return data; }; })(this); return getDataFromNodes(this.children); }; Node.prototype.getNodeByName = function(name) { var result; result = null; this.iterate(function(node) { if (node.name === name) { result = node; return false; } else { return true; } }); return result; }; Node.prototype.addAfter = function(node_info) { var child_index, node; if (!this.parent) { return null; } else { node = new this.tree.node_class(node_info); child_index = this.parent.getChildIndex(this); this.parent.addChildAtPosition(node, child_index + 1); return node; } }; Node.prototype.addBefore = function(node_info) { var child_index, node; if (!this.parent) { return null; } else { node = new this.tree.node_class(node_info); child_index = this.parent.getChildIndex(this); this.parent.addChildAtPosition(node, child_index); return node; } }; Node.prototype.addParent = function(node_info) { var child, j, len, new_parent, original_parent, ref; if (!this.parent) { return null; } else { new_parent = new this.tree.node_class(node_info); new_parent._setParent(this.tree); original_parent = this.parent; ref = original_parent.children; for (j = 0, len = ref.length; j < len; j++) { child = ref[j]; new_parent.addChild(child); } original_parent.children = []; original_parent.addChild(new_parent); return new_parent; } }; Node.prototype.remove = function() { if (this.parent) { this.parent.removeChild(this); return this.parent = null; } }; Node.prototype.append = function(node_info) { var node; node = new this.tree.node_class(node_info); this.addChild(node); return node; }; Node.prototype.prepend = function(node_info) { var node; node = new this.tree.node_class(node_info); this.addChildAtPosition(node, 0); return node; }; Node.prototype.isParentOf = function(node) { var parent; parent = node.parent; while (parent) { if (parent === this) { return true; } parent = parent.parent; } return false; }; Node.prototype.getLevel = function() { var level, node; level = 0; node = this; while (node.parent) { level += 1; node = node.parent; } return level; }; Node.prototype.getNodeById = function(node_id) { return this.id_mapping[node_id]; }; Node.prototype.addNodeToIndex = function(node) { if (node.id != null) { return this.id_mapping[node.id] = node; } }; Node.prototype.removeNodeFromIndex = function(node) { if (node.id != null) { return delete this.id_mapping[node.id]; } }; Node.prototype.removeChildren = function() { this.iterate((function(_this) { return function(child) { _this.tree.removeNodeFromIndex(child); return true; }; })(this)); return this.children = []; }; Node.prototype.getPreviousSibling = function() { var previous_index; if (!this.parent) { return null; } else { previous_index = this.parent.getChildIndex(this) - 1; if (previous_index >= 0) { return this.parent.children[previous_index]; } else { return null; } } }; Node.prototype.getNextSibling = function() { var next_index; if (!this.parent) { return null; } else { next_index = this.parent.getChildIndex(this) + 1; if (next_index < this.parent.children.length) { return this.parent.children[next_index]; } else { return null; } } }; Node.prototype.getNodesByProperty = function(key, value) { return this.filter(function(node) { return node[key] === value; }); }; Node.prototype.filter = function(f) { var result; result = []; this.iterate(function(node) { if (f(node)) { result.push(node); } return true; }); return result; }; Node.prototype.getNextNode = function(include_children) { var next_sibling; if (include_children == null) { include_children = true; } if (include_children && this.hasChildren() && this.is_open) { return this.children[0]; } else { if (!this.parent) { return null; } else { next_sibling = this.getNextSibling(); if (next_sibling) { return next_sibling; } else { return this.parent.getNextNode(false); } } } }; Node.prototype.getPreviousNode = function() { var previous_sibling; if (!this.parent) { return null; } else { previous_sibling = this.getPreviousSibling(); if (previous_sibling) { if (!previous_sibling.hasChildren() || !previous_sibling.is_open) { return previous_sibling; } else { return previous_sibling.getLastChild(); } } else { if (this.parent.parent) { return this.parent; } else { return null; } } } }; Node.prototype.getLastChild = function() { var last_child; if (!this.hasChildren()) { return null; } else { last_child = this.children[this.children.length - 1]; if (!last_child.hasChildren() || !last_child.is_open) { return last_child; } else { return last_child.getLastChild(); } } }; return Node; })(); module.exports = { Node: Node, Position: Position }; },{}],6:[function(require,module,exports){ var BorderDropHint, FolderElement, GhostDropHint, NodeElement, Position, node, extend = function(child, parent) { for (var key in parent) { if (hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; }, hasProp = {}.hasOwnProperty; node = require('./node'); Position = node.Position; NodeElement = (function() { function NodeElement(node, tree_widget) { this.init(node, tree_widget); } NodeElement.prototype.init = function(node, tree_widget) { this.node = node; this.tree_widget = tree_widget; if (!node.element) { node.element = this.tree_widget.element; } return this.$element = $(node.element); }; NodeElement.prototype.getUl = function() { return this.$element.children('ul:first'); }; NodeElement.prototype.getSpan = function() { return this.$element.children('.jqtree-element').find('span.jqtree-title'); }; NodeElement.prototype.getLi = function() { return this.$element; }; NodeElement.prototype.addDropHint = function(position) { if (position === Position.INSIDE) { return new BorderDropHint(this.$element); } else { return new GhostDropHint(this.node, this.$element, position); } }; NodeElement.prototype.select = function() { return this.getLi().addClass('jqtree-selected'); }; NodeElement.prototype.deselect = function() { return this.getLi().removeClass('jqtree-selected'); }; return NodeElement; })(); FolderElement = (function(superClass) { extend(FolderElement, superClass); function FolderElement() { return FolderElement.__super__.constructor.apply(this, arguments); } FolderElement.prototype.open = function(on_finished, slide) { var $button, doOpen; if (slide == null) { slide = true; } if (!this.node.is_open) { this.node.is_open = true; $button = this.getButton(); $button.removeClass('jqtree-closed'); $button.html(''); $button.append(this.tree_widget.renderer.opened_icon_element.cloneNode(false)); doOpen = (function(_this) { return function() { _this.getLi().removeClass('jqtree-closed'); if (on_finished) { on_finished(); } return _this.tree_widget._triggerEvent('tree.open', { node: _this.node }); }; })(this); if (slide) { return this.getUl().slideDown('fast', doOpen); } else { this.getUl().show(); return doOpen(); } } }; FolderElement.prototype.close = function(slide) { var $button, doClose; if (slide == null) { slide = true; } if (this.node.is_open) { this.node.is_open = false; $button = this.getButton(); $button.addClass('jqtree-closed'); $button.html(''); $button.append(this.tree_widget.renderer.closed_icon_element.cloneNode(false)); doClose = (function(_this) { return function() { _this.getLi().addClass('jqtree-closed'); return _this.tree_widget._triggerEvent('tree.close', { node: _this.node }); }; })(this); if (slide) { return this.getUl().slideUp('fast', doClose); } else { this.getUl().hide(); return doClose(); } } }; FolderElement.prototype.getButton = function() { return this.$element.children('.jqtree-element').find('a.jqtree-toggler'); }; FolderElement.prototype.addDropHint = function(position) { if (!this.node.is_open && position === Position.INSIDE) { return new BorderDropHint(this.$element); } else { return new GhostDropHint(this.node, this.$element, position); } }; return FolderElement; })(NodeElement); BorderDropHint = (function() { function BorderDropHint($element) { var $div, width; $div = $element.children('.jqtree-element'); width = $element.width() - 4; this.$hint = $('<span class="jqtree-border"></span>'); $div.append(this.$hint); this.$hint.css({ width: width, height: $div.outerHeight() - 4 }); } BorderDropHint.prototype.remove = function() { return this.$hint.remove(); }; return BorderDropHint; })(); GhostDropHint = (function() { function GhostDropHint(node, $element, position) { this.$element = $element; this.node = node; this.$ghost = $('<li class="jqtree_common jqtree-ghost"><span class="jqtree_common jqtree-circle"></span><span class="jqtree_common jqtree-line"></span></li>'); if (position === Position.AFTER) { this.moveAfter(); } else if (position === Position.BEFORE) { this.moveBefore(); } else if (position === Position.INSIDE) { if (node.isFolder() && node.is_open) { this.moveInsideOpenFolder(); } else { this.moveInside(); } } } GhostDropHint.prototype.remove = function() { return this.$ghost.remove(); }; GhostDropHint.prototype.moveAfter = function() { return this.$element.after(this.$ghost); }; GhostDropHint.prototype.moveBefore = function() { return this.$element.before(this.$ghost); }; GhostDropHint.prototype.moveInsideOpenFolder = function() { return $(this.node.children[0].element).before(this.$ghost); }; GhostDropHint.prototype.moveInside = function() { this.$element.after(this.$ghost); return this.$ghost.addClass('jqtree-inside'); }; return GhostDropHint; })(); module.exports = { FolderElement: FolderElement, NodeElement: NodeElement }; },{"./node":5}],7:[function(require,module,exports){ var SaveStateHandler, indexOf, isInt, util; util = require('./util'); indexOf = util.indexOf; isInt = util.isInt; SaveStateHandler = (function() { function SaveStateHandler(tree_widget) { this.tree_widget = tree_widget; } SaveStateHandler.prototype.saveState = function() { var state; state = JSON.stringify(this.getState()); if (this.tree_widget.options.onSetStateFromStorage) { return this.tree_widget.options.onSetStateFromStorage(state); } else if (this.supportsLocalStorage()) { return localStorage.setItem(this.getCookieName(), state); } else if ($.cookie) { $.cookie.raw = true; return $.cookie(this.getCookieName(), state, { path: '/' }); } }; SaveStateHandler.prototype.getStateFromStorage = function() { var json_data; json_data = this._loadFromStorage(); if (json_data) { return this._parseState(json_data); } else { return null; } }; SaveStateHandler.prototype._parseState = function(json_data) { var state; state = $.parseJSON(json_data); if (state && state.selected_node && isInt(state.selected_node)) { state.selected_node = [state.selected_node]; } return state; }; SaveStateHandler.prototype._loadFromStorage = function() { if (this.tree_widget.options.onGetStateFromStorage) { return this.tree_widget.options.onGetStateFromStorage(); } else if (this.supportsLocalStorage()) { return localStorage.getItem(this.getCookieName()); } else if ($.cookie) { $.cookie.raw = true; return $.cookie(this.getCookieName()); } else { return null; } }; SaveStateHandler.prototype.getState = function() { var getOpenNodeIds, getSelectedNodeIds; getOpenNodeIds = (function(_this) { return function() { var open_nodes; open_nodes = []; _this.tree_widget.tree.iterate(function(node) { if (node.is_open && node.id && node.hasChildren()) { open_nodes.push(node.id); } return true; }); return open_nodes; }; })(this); getSelectedNodeIds = (function(_this) { return function() { var n; return (function() { var i, len, ref, results; ref = this.tree_widget.getSelectedNodes(); results = []; for (i = 0, len = ref.length; i < len; i++) { n = ref[i]; results.push(n.id); } return results; }).call(_this); }; })(this); return { open_nodes: getOpenNodeIds(), selected_node: getSelectedNodeIds() }; }; SaveStateHandler.prototype.setInitialState = function(state) { var must_load_on_demand; if (!state) { return false; } else { must_load_on_demand = this._openInitialNodes(state.open_nodes); t