start: function(event, element, siblings, offset) { if (event && event.type.match(/^touch/i)) { event.preventDefault(); } window.G5.tips.hide(element[0]); if (event.which && event.which !== 1) { return true; } // Stops text selection event.preventDefault(); this.element = $(element); this.siblings = { occupied: 0, elements: siblings, next: this.element.nextSibling(), prevs: this.element.previousSiblings(), sizeBefore: 0 }; if (this.siblings.elements.length > 1) { this.siblings.occupied -= this.getSize(this.siblings.next); this.siblings.elements.forEach(function(sibling) { this.siblings.occupied += this.getSize(sibling); }, this); } if (this.siblings.prevs) { this.siblings.prevs.forEach(function(sibling) { this.siblings.sizeBefore += this.getSize(sibling); }, this); } this.origin = { size: this.getSize(this.element), maxSize: this.getSize(this.element) + this.getSize(this.siblings.next), x: event.changedTouches ? event.changedTouches[0].pageX : event.pageX + 6, y: event.changedTouches ? event.changedTouches[0].pageY : event.pageY }; var clientRect = this.element[0].getBoundingClientRect(), parentRect = this.element.parent()[0].getBoundingClientRect(); this.origin.offset = { clientRect: clientRect, parentRect: {left: parentRect.left, right: parentRect.right}, x: this.origin.x - clientRect.right, y: clientRect.top - this.origin.y, down: offset }; this.origin.offset.parentRect.left = this.element.parent().find('> [data-lm-id]:first-child')[0].getBoundingClientRect().left; this.origin.offset.parentRect.right = this.element.parent().find('> [data-lm-id]:last-child')[0].getBoundingClientRect().right; this.DRAG_EVENTS.EVENTS.MOVE.forEach(bind(function(event) { $(document).on(event, this.bound('move')); }, this)); this.DRAG_EVENTS.EVENTS.STOP.forEach(bind(function(event) { $(document).on(event, this.bound('stop')); }, this)); },
open: function() { modal.open({ method: 'post', data: this.data, content: 'Loading', className: 'g5-dialog-theme-default g5-modal-filepicker', remote: getAjaxURL('filepicker') + getAjaxSuffix(), remoteLoaded: bind(this.loaded, this), afterClose: bind(function() { if (this.dropzone) { this.dropzone.destroy(); } }, this) }); },
stop: function(event) { if (event && event.type.match(/^touch/i)) { event.preventDefault(); } this.DRAG_EVENTS.EVENTS.MOVE.forEach(bind(function(event) { $(document).off(event, this.bound('move')); }, this)); this.DRAG_EVENTS.EVENTS.STOP.forEach(bind(function(event) { $(document).off(event, this.bound('stop')); }, this)); if (event.target.matches('[data-lm-back], [data-lm-forward]')) { return; } if (this.origin.size !== this.getSize(this.element)) { this.history.push(this.builder.serialize(), this.history.get().preset); } },
attachLocalVariants: function(container) { container.delegate('mouseover', '.g-font-variants-list', bind(function(event, element) { if (!element.PopoverDefined) { var popover = element.getPopover({ placement: 'auto', width: '200', trigger: 'mouse', style: 'font-categories, above-modal' }); element.on('beforeshow.popover', bind(function(popover) { var content = popover.$target.find('.g5-popover-content'), variants = element.parent('[data-variants]').data('variants').split(','); content.empty(); asyncForEach(variants, bind(function(variant) { variant = variant == '400' ? 'regular' : (variant == '400italic' ? 'italic' : variant + ''); zen('div').text(this.mapVariant(variant)).bottom(content); }, this)); popover.displayContent(); }, this)); } }, this)); },
}).on('success', function(file, response, xhr) { var element = $(file.previewElement), uploader = element.find('[data-file-uploadprogress]'), mtime = element.find('.g-file-mtime'), text = element.find('.g-file-progress-text'), thumb = element.find('.g-thumb'), isList = files.hasClass('g-filemode-list'); uploader.progresser({ fill: { color: colors.success, gradient: false }, value: 1, thickness: isList ? 10 : 25 }); text.html('<i class="fa fa-check"></i>'); setTimeout(bind(function() { uploader.animate({ opacity: 0 }, { duration: 500 }); thumb.animate({ opacity: 1 }, { duration: 500, callback: function() { element.removeClass('g-file-uploading'); uploader.remove(); mtime.text('just now'); } }); }, this), 500); });
attachEvents: function(container) { var header = container.find('.g-particles-header'), list = container.find('.g-fonts-list'), search = header.find('input.font-search'), preview = header.find('input.font-preview'); decouple(list, 'scroll', bind(this.scroll, this, list)); container.delegate('click', '.g-fonts-list li[data-font]', bind(this.toggle, this)); if (search) { search.on('keyup', bind(this.search, this, search)); } if (preview) { preview.on('keyup', bind(this.updatePreview, this, preview)); } this.attachCharsets(container); this.attachLocalVariants(container); this.attachFooter(container); },
close: function(event, element) { if (event && event.type.match(/^touch/i)) { event.preventDefault(); } else { this.dragging = false; } element = element || window; if (!this.opened && !this.opening) { return this; } if (this.panel !== element && this.dragging) { return false; } this.overlay[0].style.opacity = 0; this._setTransition(); this._translateXTo(0); this.opened = false; setTimeout(bind(function() { var panel = this.panel[0]; this.htmlEl.removeClass(this.options.openClass); panel.style.transition = panel.style['-webkit-transition'] = ''; }, this), this.options.duration); return this; },
constructor: function(options) { this.setOptions(options); this.defaults = this.options; var self = this; domready(function() { $(window).on('keydown', function(event) { if (event.keyCode === 27) { return self.closeByEscape(); } }); self.animationEndEvent = animationEndSupport; }); this .on('dialogOpen', function(options) { $('body').addClass(options.baseClassNames.open); $('html').addClass(options.baseClassNames.open); }) .on('dialogAfterClose', bind(function(options) { var all = this.getAll(); if (!all || !all.length) { $('body').removeClass(options.baseClassNames.open); $('html').removeClass(options.baseClassNames.open); } }, this)); },
open: function(event, element) { var data = element.data('g5-fontpicker'); if (!data) { throw new Error('No fontpicker data found'); } data = JSON.parse(data); this.field = $(data.field); modal.open({ content: 'Loading...', className: 'g5-dialog-theme-default g5-modal-fonts', remote: parseAjaxURI(getAjaxURL('fontpicker') + getAjaxSuffix()), remoteLoaded: bind(function(response, content) { var container = content.elements.content; this.attachEvents(container); this.updateCategories(container); this.search(); this.scroll(container.find('ul.g-fonts-list')); this.updateTotal(); this.selectFromValue(); setTimeout(function() { container.find('.particle-search-wrapper input')[0].focus(); }, 5); }, this) }); },
return map(obj, function(value, key){ if (typeof value == 'object') { return recurse(value, scope) } else { return bind(value, scope) } })
constructor: function() { this.history = []; this._resolveDependencies(); this.url = this.getHash() || this.url; this.window.addEventListener("hashchange", bind(this.hashchange, this)); Router.super_.apply(this, arguments); },
removeElement: function(event, element) { this.dragdrop.removeElement = false; var transition = { opacity: 0 }; element.animate(transition, { duration: '150ms' }); if (this.type == 'column') { this.root.search('.g-block > *').style({ 'pointer-events': 'none' }); } this.eraser.hide(); this.dragdrop.DRAG_EVENTS.EVENTS.MOVE.forEach(bind(function(event) { $('body').off(event, this.dragdrop.bound('move')); }, this)); this.dragdrop.DRAG_EVENTS.EVENTS.STOP.forEach(bind(function(event) { $('body').off(event, this.dragdrop.bound('deferStop')); }, this)); var particle = this.block, base = particle.parent('[data-mm-base]').data('mm-base'), col = (particle.parent('[data-mm-id]').data('mm-id').match(/\d+$/) || [0])[0], index = indexOf(particle.parent().children('[data-mm-id]:not(.original-placeholder)'), particle[0]); delete this.items[this.itemID]; this.ordering[base][col].splice(index, 1); this.block.remove(); this.original.remove(); this.root.removeClass('moving'); if (this.root.find('.submenu-items')) { if (!this.root.find('.submenu-items').children()) { this.root.find('.submenu-items').text(''); } } this.emit('dragEnd', this.map, 'reorder'); },
Translations.prototype.fetch = function (opts) { opts.appType = this._appType; // Don't request translations for the livefyre.com network. if (opts.network === 'livefyre.com') { this.emit(EVENTS.RECEIVED, {translated: false}); return; } this._client.getTranslations(opts, bind(this._handleTranslationsReceived, this)); };
FieldLocation.prototype.build = function(){ this.wrap = zen('li.field-location'); var input = zen('input[type=text].map-search'), canvas = zen('div.map-canvas').insert(this.wrap); var ul = zen('ul').insert(this.wrap), li = zen('li').insert(ul); zen('label').text('Address').insert(li); var address = zen('textarea').insert(li); li = zen('li').insert(ul); zen('label').text('Latitude').insert(li); var latitude = zen('input[type=text]').insert(li); li = zen('li').insert(ul); zen('label').text('Longitude').insert(li); var longitude = zen('input[type=text]').insert(li); this.map = new maps.Map(canvas[0], { center: new maps.LatLng(52.3666513, 4.892005899999958), zoom: 14, mapTypeId: maps.MapTypeId.ROADMAP }); this.map.controls[maps.ControlPosition.TOP_LEFT].push(input[0]); this.marker = new maps.Marker({ map: this.map }); this.autocomplete = new maps.places.Autocomplete(input[0], { types: ['geocode'] }); maps.event.addListener(this.autocomplete, 'place_changed', bind(function(){ this.marker.setVisible(false); var place = this.autocomplete.getPlace(); if (!place.geometry) { // TODO: warn the user place is not found // console.warn('place not found'); return; } if (place.geometry.viewport) { this.map.fitBounds(place.geometry.viewport); } else { this.map.setCenter(place.geometry.location); } this.marker.setPosition(place.geometry.location); this.marker.setVisible(true); address.value(place.formatted_address.split(/\s*,\s*/).join('\n')); latitude.value(place.geometry.location.lat()); longitude.value(place.geometry.location.lng()); }, this)); };
touchend: function(event) { var selectors = this.selectors, states = this.states; var target = $(event.target), indicator = target.parent(selectors.item).find(selectors.touchIndicator), menuType = target.parent('.g-standard') ? 'standard' : 'megamenu', isGoingBack = target.parent('.g-go-back'), parent, isSelected; if (indicator) { target = indicator; } parent = target.matches(selectors.item) ? target : target.parent(selectors.item); isSelected = parent.hasClass(states.selected); if (!parent.find(selectors.dropdown) && !indicator) { return true; } event.stopPropagation(); if (!indicator || target.matches(selectors.touchIndicator)) { event.preventDefault(); } if (!isSelected) { var siblings = parent.siblings(); if (siblings) { var currentlyOpen = siblings.search(selectors.touchIndicator + ' !> * !> ' + selectors.item + '.' + states.selected); (currentlyOpen || []).forEach(bind(function(open) { this.closeDropdown(open); }, this)); } } if ((menuType == 'megamenu' || !parent.parent(selectors.mainContainer)) && (parent.find(' > ' + selectors.dropdown + ', > * > ' + selectors.dropdown) || isGoingBack)) { var sublevel = target.parent('.g-sublevel') || target.parent('.g-toplevel'), slideout = parent.find('.g-sublevel'), columns = parent.parent('.g-dropdown-column'), blocks; if (sublevel) { var isNavMenu = target.parent(selectors.mainContainer); if (!isNavMenu || (isNavMenu && !sublevel.matches('.g-toplevel'))) { this._fixHeights(sublevel, slideout, isGoingBack, isNavMenu); } if (!isNavMenu && columns && (blocks = columns.search('> .g-grid > .g-block'))) { if (blocks.length > 1) { sublevel = blocks.search('> .g-sublevel'); } } sublevel[!isSelected ? 'addClass' : 'removeClass']('g-slide-out'); } } this[!isSelected ? 'openDropdown' : 'closeDropdown'](parent); if (event.type !== 'click') { this.toggleOverlay(target.parent(selectors.mainContainer)); } },
element.on('beforeshow.popover', bind(function(popover) { var content = popover.$target.find('.g5-popover-content'), variants = element.parent('[data-variants]').data('variants').split(','); content.empty(); asyncForEach(variants, bind(function(variant) { variant = variant == '400' ? 'regular' : (variant == '400italic' ? 'italic' : variant + ''); zen('div').text(this.mapVariant(variant)).bottom(content); }, this)); popover.displayContent(); }, this));
delayedHide: function(element, override) { var map = this.map.get(element); if (map.options.timeOut > 0 || map.options.extendedTimeout > 0) { map.interval = setTimeout(bind(function() { this.hide(element); }, this), map.options.extendedTimeout); map.progressBar.maxHideTime = parseFloat(map.options.extendedTimeout); map.progressBar.hideETA = new Date().getTime() + map.progressBar.maxHideTime; } this.map.set(element, map); },
scroll: function(container) { clearTimeout(this.throttle); this.throttle = setTimeout(bind(function() { if (!container) { clearTimeout(this.throttle); return; } // 550 = container height, 5 = pages var elements = (container.find('ul.g-fonts-list') || container).inviewport(' > li:not(.g-font-hide)', (550 * (isIE() ? 2 : 7))), list = []; if (!elements) { return; } $(elements).forEach(function(element) { element = $(element); var dataFont = element.data('font'), variant = element.data('variant'); if (!contains(this.loadedFonts, dataFont) && variant) { list.push(dataFont + (variant != 'regular' ? ':' + variant : '')); } else { if (variant) { element.find('[data-variant="' + variant + '"] .preview').style({ fontFamily: dataFont, fontWeight: variant == 'regular' ? 'normal' : variant }); } } }, this); if (!list || !list.length) { return; } this.wf.load({ classes: false, google: { families: list }, fontactive: bind(function(family, fvd) { container.find('li[data-font="' + family + '"]:not(.g-variant-hide) > .preview').style({ fontFamily: family, fontWeight: fvd }); this.loadedFonts.push(family); }, this) }); }, this), 100); },
setAnimatedSize: function(size, store) { size = typeof size === 'undefined' ? this.getSize() : Math.max(0, Math.min(100, parseFloat(size))); if (store) { this.setAttribute('size', size); } $(this.block).animate({ flex: '0 1 ' + size + '%', '-webkit-flex': '0 1 ' + size + '%', '-ms-flex': '0 1 ' + size + '%' }, bind(function() { this.block.attribute('style', null); this.setSize(size); }, this)); this.emit('resized', size, this); },
search: function(input) { input = input || $('.g-particles-header input.font-search'); var list = $('.g-fonts-list'), value = input.value(), name, subsets, category, data; list.search('> [data-font]').forEach(function(font) { font = $(font); name = font.data('font'); subsets = font.data('subsets').split(','); category = font.data('category'); font.removeClass('g-font-hide'); // We dont want to hide selected fonts if (this.selected && this.selected.font == name && this.selected.selected.length) { return; } // Filter by Subset if (!contains(subsets, this.filters.script)) { font.addClass('g-font-hide'); return; } // Filter by Category if (!contains(this.filters.categories, category)) { font.addClass('g-font-hide'); return; } // Filter by Name if (!name.match(new RegExp("^" + value + '|\\s' + value, 'gi'))) { font.addClass('g-font-hide'); } else { font.removeClass('g-font-hide'); } }, this); this.updateTotal(); clearTimeout(input.refreshTimer); input.refreshTimer = setTimeout(bind(function() { this.scroll($('ul.g-fonts-list')); }, this), 400); input.previousValue = value; },
detach: function() { this.attached = false; if (this.options.touch && hasTouchEvents) { this.detachTouchEvents(); } forEach(['toggle', 'open', 'close'], bind(function(mode) { this.bodyEl.undelegate('click', '[data-offcanvas-' + mode + ']', this.bound(mode)); if (hasTouchEvents) { this.bodyEl.undelegate('touchend', '[data-offcanvas-' + mode + ']', this.bound(mode)); } }, this)); this.detachMutationEvent(); this.overlay.remove(); return this; },
attach: function() { this.attached = true; if (this.options.touch && hasTouchEvents) { this.attachTouchEvents(); } forEach(['toggle', 'open', 'close'], bind(function(mode) { this.bodyEl.delegate('click', '[data-offcanvas-' + mode + ']', this.bound(mode)); if (hasTouchEvents) { this.bodyEl.delegate('touchend', '[data-offcanvas-' + mode + ']', this.bound(mode)); } }, this)); this.attachMutationEvent(); this.overlay = zen('div[data-offcanvas-close].' + this.options.overlayClass).top(this.panel); return this; },
init: function() { var self = this; document.querySelector("body").removeChild(document.querySelector("#runGulpFirst")); this.storage.get("todo", "items", function(items) { forEach(items, function(item) { item = JSON.parse(item); var todo = new TodoModel(item); self.doAdd(todo); }); }); document.querySelector("#todo").onkeypress = bind(this.add, this); return this; },
toggleExpansion: function() { if (this.selected.availableVariants.length <= 1) { return; } if (this.selected.local) { this.selected.expanded = true; return; } if (!this.selected.expanded) { var variants = this.selected.element.data('variants'), variant; if (variants.split(',').length > 1) { this.manipulateLink(this.selected.font); this.selected.element.search('[data-font]').removeClass('g-variant-hide'); if (!this.selected.loaded) { this.wf.load({ classes: false, google: { families: [this.selected.font.replace(/\s/g, '+') + ':' + variants] }, fontactive: bind(function(family, fvd) { var style = this.fvdToStyle(family, fvd), search = style.fontWeight; if (search == '400') { search = style.fontStyle == 'normal' ? 'regular' : 'italic'; } else if (style.fontStyle == 'italic') { search += 'italic'; } this.selected.element.find('li[data-variant="' + search + '"] .preview').style(style); this.selected.loaded = true; }, this) }); } } } else { var exclude = ':not([data-variant="' + this.selected.variants.join('"]):not([data-variant="') + '"])'; exclude = this.selected.element.search('[data-font]' + exclude); if (exclude) { exclude.addClass('g-variant-hide'); } } this.selected.expanded = !this.selected.expanded; },
setContentASync: function(content) { request('get', this.options.url, bind(function(error, response) { if (content && isFunct(content)) { this.content = content.apply(this.element[0], [response]); } else { this.content = response.body.html; } this.setContent(this.content); var target = this.getContentElement(); target.attribute('style', null); this.displayContent(); this.bindBodyEvents(); var selects = $('[data-selectize]'); if (selects) { selects.selectize(); } }, this)); },
content.delegate('click', '[data-folder]', bind(function(event, element) { if (event && event.preventDefault) { event.preventDefault(); } var data = JSON.parse(element.data('folder')), selected = $('[data-file].selected'); fieldData.root = data.pathname; fieldData.value = selected ? selected.data('file-url') : false; fieldData.subfolder = true; element.showIndicator('fa fa-li fa-fw fa-spin-fast fa-spinner'); request(parseAjaxURI(getAjaxURL('filepicker') + getAjaxSuffix()), fieldData).send(bind(function(error, response) { element.hideIndicator(); this.addActiveState(element); if (!response.body.success) { modal.open({ content: response.body.html || response.body, afterOpen: function(container) { if (!response.body.html) { container.style({ width: '90%' }); } } }); } else { var dummy, next; if (response.body.subfolder) { dummy = zen('div').html(response.body.subfolder); next = element.nextSibling(); if (next && !next.attribute('data-folder')) { next.remove(); } dummy.children().after(element); } if (response.body.files) { files.empty(); dummy = zen('div').html(response.body.files); dummy.children().bottom(files).style({ opacity: 0 }).animate({ opacity: 1 }, { duration: '250ms' }); } else { files.find('> ul:not(.g-list-labels)').empty(); } this.dropzone.previewsContainer = files.find('ul:not(.g-list-labels)')[0]; } }, this)); }, this));
onDone: function(event) { if (!this.block.search('[data-lm-id]')) { this.grid.insert(this.block, 'bottom'); this.options.builder.add(this.grid); } var plus = this.block.find('.fa-plus'); if (plus) { plus.on('click', bind(function(e) { if (e) { e.preventDefault(); } if (this.block.find('.g-grid:last-child:empty')) { return false; } this.grid = new Grid(); this.grid.insert(this.block.find('[data-lm-blocktype="container"]') ? this.block.find('[data-lm-blocktype="container"]') : this.block, 'bottom'); this.options.builder.add(this.grid); }, this)); } }
hide: function(element, override) { if (element.find(':focus') && !override) { return; } var map = this.map.get(element); clearTimeout(map.progressBar.interval); this.map.set(element, map); return element.animate({ opacity: 0 }, { duration: map.options.hideDuration, equation: map.options.hideEquation, callback: bind(function() { this.remove(element); if (map.options.onHidden && map.response.state !== 'hidden') { map.options.onHidden(); } map.response.state = 'hidden'; map.response.endTime = new Date(); this.map.set(element, map); }, this) }); },
closeByID: function(id) { var content = this.getByID(id); if (!content || !content.length) { return false; } var container, options; container = storage.get(content).dialog.elements.container; options = merge({}, storage.get(content).dialog); var beforeClose = function() { if (options.beforeClose) { return options.beforeClose(content, options); } }, close = bind(function() { if (options.remoteLoaded) { options.remoteLoaded = function(){}; } content.emit('dialogClose', options); container.remove(); this.emit('dialogAfterClose', options); if (options.afterClose) { return options.afterClose(content, options); } }, this); if (animationEndSupport) { beforeClose(); container.off(this.animationEndEvent).on(this.animationEndEvent, function() { return close(); }).addClass(options.baseClassNames.closing); } else { beforeClose(); close(); } return true; },
attachCharsets: function(container) { container.delegate('mouseover', '.font-charsets-selected', bind(function(event, element) { if (!element.PopoverDefined) { var popover = element.getPopover({ placement: 'auto', width: '200', trigger: 'mouse', style: 'font-categories, above-modal' }); element.on('beforeshow.popover', bind(function(popover) { var subsets = element.parent('[data-subsets]').data('subsets').split(','), content = popover.$target.find('.g5-popover-content'), checked; content.empty(); var div, current; subsets.forEach(function(cs) { current = contains(this.selected.charsets, cs) ? (cs == 'latin' ? 'checked disabled' : 'checked') : ''; zen('div').html('<label><input type="checkbox" ' + current + ' value="' + cs + '"/> ' + properCase(unhyphenate(cs.replace('ext', 'extended'))) + '</label>').bottom(content); }, this); content.delegate('click', 'input[type="checkbox"]', bind(function(event, input) { input = $(input); checked = content.search('input[type="checkbox"]:checked'); this.selected.charsets = checked ? checked.map('value') : []; element.html('(<i class="fa fa-fw fa-check-square-o"></i> <span class="font-charsets-details">' + this.selected.charsets.length + ' of ' + subsets.length + '</span> selected)'); }, this)); popover.displayContent(); }, this)); element.getPopover().show(); } }, this)); },