Файловый менеджер - Редактировать - /home/emeraadmin/public_html/4d695/src.zip
Назад
PK +x�\}9S�� � noevent.jsnu �[��� import {event} from "d3-selection"; export function nopropagation() { event.stopImmediatePropagation(); } export default function() { event.preventDefault(); event.stopImmediatePropagation(); } PK +x�\�R4)M M constant.jsnu �[��� export default function(x) { return function() { return x; }; } PK +x�\�C� �? �? brush.jsnu �[��� import {dispatch} from "d3-dispatch"; import {dragDisable, dragEnable} from "d3-drag"; import {interpolate} from "d3-interpolate"; import {customEvent, event, mouse, select} from "d3-selection"; import {interrupt} from "d3-transition"; import constant from "./constant"; import BrushEvent from "./event"; import noevent, {nopropagation} from "./noevent"; var MODE_DRAG = {name: "drag"}, MODE_SPACE = {name: "space"}, MODE_HANDLE = {name: "handle"}, MODE_CENTER = {name: "center"}; var X = { name: "x", handles: ["e", "w"].map(type), input: function(x, e) { return x && [[x[0], e[0][1]], [x[1], e[1][1]]]; }, output: function(xy) { return xy && [xy[0][0], xy[1][0]]; } }; var Y = { name: "y", handles: ["n", "s"].map(type), input: function(y, e) { return y && [[e[0][0], y[0]], [e[1][0], y[1]]]; }, output: function(xy) { return xy && [xy[0][1], xy[1][1]]; } }; var XY = { name: "xy", handles: ["n", "e", "s", "w", "nw", "ne", "se", "sw"].map(type), input: function(xy) { return xy; }, output: function(xy) { return xy; } }; var cursors = { overlay: "crosshair", selection: "move", n: "ns-resize", e: "ew-resize", s: "ns-resize", w: "ew-resize", nw: "nwse-resize", ne: "nesw-resize", se: "nwse-resize", sw: "nesw-resize" }; var flipX = { e: "w", w: "e", nw: "ne", ne: "nw", se: "sw", sw: "se" }; var flipY = { n: "s", s: "n", nw: "sw", ne: "se", se: "ne", sw: "nw" }; var signsX = { overlay: +1, selection: +1, n: null, e: +1, s: null, w: -1, nw: -1, ne: +1, se: +1, sw: -1 }; var signsY = { overlay: +1, selection: +1, n: -1, e: null, s: +1, w: null, nw: -1, ne: -1, se: +1, sw: +1 }; function type(t) { return {type: t}; } // Ignore right-click, since that should open the context menu. function defaultFilter() { return !event.button; } function defaultExtent() { var svg = this.ownerSVGElement || this; return [[0, 0], [svg.width.baseVal.value, svg.height.baseVal.value]]; } // Like d3.local, but with the name “__brush” rather than auto-generated. function local(node) { while (!node.__brush) if (!(node = node.parentNode)) return; return node.__brush; } function empty(extent) { return extent[0][0] === extent[1][0] || extent[0][1] === extent[1][1]; } export function brushSelection(node) { var state = node.__brush; return state ? state.dim.output(state.selection) : null; } export function brushX() { return brush(X); } export function brushY() { return brush(Y); } export default function() { return brush(XY); } function brush(dim) { var extent = defaultExtent, filter = defaultFilter, listeners = dispatch(brush, "start", "brush", "end"), handleSize = 6, touchending; function brush(group) { var overlay = group .property("__brush", initialize) .selectAll(".overlay") .data([type("overlay")]); overlay.enter().append("rect") .attr("class", "overlay") .attr("pointer-events", "all") .attr("cursor", cursors.overlay) .merge(overlay) .each(function() { var extent = local(this).extent; select(this) .attr("x", extent[0][0]) .attr("y", extent[0][1]) .attr("width", extent[1][0] - extent[0][0]) .attr("height", extent[1][1] - extent[0][1]); }); group.selectAll(".selection") .data([type("selection")]) .enter().append("rect") .attr("class", "selection") .attr("cursor", cursors.selection) .attr("fill", "#777") .attr("fill-opacity", 0.3) .attr("stroke", "#fff") .attr("shape-rendering", "crispEdges"); var handle = group.selectAll(".handle") .data(dim.handles, function(d) { return d.type; }); handle.exit().remove(); handle.enter().append("rect") .attr("class", function(d) { return "handle handle--" + d.type; }) .attr("cursor", function(d) { return cursors[d.type]; }); group .each(redraw) .attr("fill", "none") .attr("pointer-events", "all") .style("-webkit-tap-highlight-color", "rgba(0,0,0,0)") .on("mousedown.brush touchstart.brush", started); } brush.move = function(group, selection) { if (group.selection) { group .on("start.brush", function() { emitter(this, arguments).beforestart().start(); }) .on("interrupt.brush end.brush", function() { emitter(this, arguments).end(); }) .tween("brush", function() { var that = this, state = that.__brush, emit = emitter(that, arguments), selection0 = state.selection, selection1 = dim.input(typeof selection === "function" ? selection.apply(this, arguments) : selection, state.extent), i = interpolate(selection0, selection1); function tween(t) { state.selection = t === 1 && empty(selection1) ? null : i(t); redraw.call(that); emit.brush(); } return selection0 && selection1 ? tween : tween(1); }); } else { group .each(function() { var that = this, args = arguments, state = that.__brush, selection1 = dim.input(typeof selection === "function" ? selection.apply(that, args) : selection, state.extent), emit = emitter(that, args).beforestart(); interrupt(that); state.selection = selection1 == null || empty(selection1) ? null : selection1; redraw.call(that); emit.start().brush().end(); }); } }; function redraw() { var group = select(this), selection = local(this).selection; if (selection) { group.selectAll(".selection") .style("display", null) .attr("x", selection[0][0]) .attr("y", selection[0][1]) .attr("width", selection[1][0] - selection[0][0]) .attr("height", selection[1][1] - selection[0][1]); group.selectAll(".handle") .style("display", null) .attr("x", function(d) { return d.type[d.type.length - 1] === "e" ? selection[1][0] - handleSize / 2 : selection[0][0] - handleSize / 2; }) .attr("y", function(d) { return d.type[0] === "s" ? selection[1][1] - handleSize / 2 : selection[0][1] - handleSize / 2; }) .attr("width", function(d) { return d.type === "n" || d.type === "s" ? selection[1][0] - selection[0][0] + handleSize : handleSize; }) .attr("height", function(d) { return d.type === "e" || d.type === "w" ? selection[1][1] - selection[0][1] + handleSize : handleSize; }); } else { group.selectAll(".selection,.handle") .style("display", "none") .attr("x", null) .attr("y", null) .attr("width", null) .attr("height", null); } } function emitter(that, args) { return that.__brush.emitter || new Emitter(that, args); } function Emitter(that, args) { this.that = that; this.args = args; this.state = that.__brush; this.active = 0; } Emitter.prototype = { beforestart: function() { if (++this.active === 1) this.state.emitter = this, this.starting = true; return this; }, start: function() { if (this.starting) this.starting = false, this.emit("start"); return this; }, brush: function() { this.emit("brush"); return this; }, end: function() { if (--this.active === 0) delete this.state.emitter, this.emit("end"); return this; }, emit: function(type) { customEvent(new BrushEvent(brush, type, dim.output(this.state.selection)), listeners.apply, listeners, [type, this.that, this.args]); } }; function started() { if (event.touches) { if (event.changedTouches.length < event.touches.length) return noevent(); } else if (touchending) return; if (!filter.apply(this, arguments)) return; var that = this, type = event.target.__data__.type, mode = (event.metaKey ? type = "overlay" : type) === "selection" ? MODE_DRAG : (event.altKey ? MODE_CENTER : MODE_HANDLE), signX = dim === Y ? null : signsX[type], signY = dim === X ? null : signsY[type], state = local(that), extent = state.extent, selection = state.selection, W = extent[0][0], w0, w1, N = extent[0][1], n0, n1, E = extent[1][0], e0, e1, S = extent[1][1], s0, s1, dx, dy, moving, shifting = signX && signY && event.shiftKey, lockX, lockY, point0 = mouse(that), point = point0, emit = emitter(that, arguments).beforestart(); if (type === "overlay") { state.selection = selection = [ [w0 = dim === Y ? W : point0[0], n0 = dim === X ? N : point0[1]], [e0 = dim === Y ? E : w0, s0 = dim === X ? S : n0] ]; } else { w0 = selection[0][0]; n0 = selection[0][1]; e0 = selection[1][0]; s0 = selection[1][1]; } w1 = w0; n1 = n0; e1 = e0; s1 = s0; var group = select(that) .attr("pointer-events", "none"); var overlay = group.selectAll(".overlay") .attr("cursor", cursors[type]); if (event.touches) { group .on("touchmove.brush", moved, true) .on("touchend.brush touchcancel.brush", ended, true); } else { var view = select(event.view) .on("keydown.brush", keydowned, true) .on("keyup.brush", keyupped, true) .on("mousemove.brush", moved, true) .on("mouseup.brush", ended, true); dragDisable(event.view); } nopropagation(); interrupt(that); redraw.call(that); emit.start(); function moved() { var point1 = mouse(that); if (shifting && !lockX && !lockY) { if (Math.abs(point1[0] - point[0]) > Math.abs(point1[1] - point[1])) lockY = true; else lockX = true; } point = point1; moving = true; noevent(); move(); } function move() { var t; dx = point[0] - point0[0]; dy = point[1] - point0[1]; switch (mode) { case MODE_SPACE: case MODE_DRAG: { if (signX) dx = Math.max(W - w0, Math.min(E - e0, dx)), w1 = w0 + dx, e1 = e0 + dx; if (signY) dy = Math.max(N - n0, Math.min(S - s0, dy)), n1 = n0 + dy, s1 = s0 + dy; break; } case MODE_HANDLE: { if (signX < 0) dx = Math.max(W - w0, Math.min(E - w0, dx)), w1 = w0 + dx, e1 = e0; else if (signX > 0) dx = Math.max(W - e0, Math.min(E - e0, dx)), w1 = w0, e1 = e0 + dx; if (signY < 0) dy = Math.max(N - n0, Math.min(S - n0, dy)), n1 = n0 + dy, s1 = s0; else if (signY > 0) dy = Math.max(N - s0, Math.min(S - s0, dy)), n1 = n0, s1 = s0 + dy; break; } case MODE_CENTER: { if (signX) w1 = Math.max(W, Math.min(E, w0 - dx * signX)), e1 = Math.max(W, Math.min(E, e0 + dx * signX)); if (signY) n1 = Math.max(N, Math.min(S, n0 - dy * signY)), s1 = Math.max(N, Math.min(S, s0 + dy * signY)); break; } } if (e1 < w1) { signX *= -1; t = w0, w0 = e0, e0 = t; t = w1, w1 = e1, e1 = t; if (type in flipX) overlay.attr("cursor", cursors[type = flipX[type]]); } if (s1 < n1) { signY *= -1; t = n0, n0 = s0, s0 = t; t = n1, n1 = s1, s1 = t; if (type in flipY) overlay.attr("cursor", cursors[type = flipY[type]]); } if (state.selection) selection = state.selection; // May be set by brush.move! if (lockX) w1 = selection[0][0], e1 = selection[1][0]; if (lockY) n1 = selection[0][1], s1 = selection[1][1]; if (selection[0][0] !== w1 || selection[0][1] !== n1 || selection[1][0] !== e1 || selection[1][1] !== s1) { state.selection = [[w1, n1], [e1, s1]]; redraw.call(that); emit.brush(); } } function ended() { nopropagation(); if (event.touches) { if (event.touches.length) return; if (touchending) clearTimeout(touchending); touchending = setTimeout(function() { touchending = null; }, 500); // Ghost clicks are delayed! group.on("touchmove.brush touchend.brush touchcancel.brush", null); } else { dragEnable(event.view, moving); view.on("keydown.brush keyup.brush mousemove.brush mouseup.brush", null); } group.attr("pointer-events", "all"); overlay.attr("cursor", cursors.overlay); if (state.selection) selection = state.selection; // May be set by brush.move (on start)! if (empty(selection)) state.selection = null, redraw.call(that); emit.end(); } function keydowned() { switch (event.keyCode) { case 16: { // SHIFT shifting = signX && signY; break; } case 18: { // ALT if (mode === MODE_HANDLE) { if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX; if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY; mode = MODE_CENTER; move(); } break; } case 32: { // SPACE; takes priority over ALT if (mode === MODE_HANDLE || mode === MODE_CENTER) { if (signX < 0) e0 = e1 - dx; else if (signX > 0) w0 = w1 - dx; if (signY < 0) s0 = s1 - dy; else if (signY > 0) n0 = n1 - dy; mode = MODE_SPACE; overlay.attr("cursor", cursors.selection); move(); } break; } default: return; } noevent(); } function keyupped() { switch (event.keyCode) { case 16: { // SHIFT if (shifting) { lockX = lockY = shifting = false; move(); } break; } case 18: { // ALT if (mode === MODE_CENTER) { if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1; if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1; mode = MODE_HANDLE; move(); } break; } case 32: { // SPACE if (mode === MODE_SPACE) { if (event.altKey) { if (signX) e0 = e1 - dx * signX, w0 = w1 + dx * signX; if (signY) s0 = s1 - dy * signY, n0 = n1 + dy * signY; mode = MODE_CENTER; } else { if (signX < 0) e0 = e1; else if (signX > 0) w0 = w1; if (signY < 0) s0 = s1; else if (signY > 0) n0 = n1; mode = MODE_HANDLE; } overlay.attr("cursor", cursors[type]); move(); } break; } default: return; } noevent(); } } function initialize() { var state = this.__brush || {selection: null}; state.extent = extent.apply(this, arguments); state.dim = dim; return state; } brush.extent = function(_) { return arguments.length ? (extent = typeof _ === "function" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), brush) : extent; }; brush.filter = function(_) { return arguments.length ? (filter = typeof _ === "function" ? _ : constant(!!_), brush) : filter; }; brush.handleSize = function(_) { return arguments.length ? (handleSize = +_, brush) : handleSize; }; brush.on = function() { var value = listeners.on.apply(listeners, arguments); return value === listeners ? brush : value; }; return brush; } PK +x�\i�k'� � index.jsnu �[��� import { createStore, legacy_createStore } from './createStore' import combineReducers from './combineReducers' import bindActionCreators from './bindActionCreators' import applyMiddleware from './applyMiddleware' import compose from './compose' import __DO_NOT_USE__ActionTypes from './utils/actionTypes' export { createStore, legacy_createStore, combineReducers, bindActionCreators, applyMiddleware, compose, __DO_NOT_USE__ActionTypes, } PK +x�\���F�N �N event.jsnu �[��� define( [ "./core", "./var/document", "./var/documentElement", "./var/isFunction", "./var/rnothtmlwhite", "./var/slice", "./data/var/dataPriv", "./core/nodeName", "./core/init", "./selector" ], function( jQuery, document, documentElement, isFunction, rnothtmlwhite, slice, dataPriv, nodeName ) { "use strict"; var rkeyEvent = /^key/, rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/, rtypenamespace = /^([^.]*)(?:\.(.+)|)/; function returnTrue() { return true; } function returnFalse() { return false; } // Support: IE <=9 only // See #13393 for more info function safeActiveElement() { try { return document.activeElement; } catch ( err ) { } } function on( elem, types, selector, data, fn, one ) { var origFn, type; // Types can be a map of types/handlers if ( typeof types === "object" ) { // ( types-Object, selector, data ) if ( typeof selector !== "string" ) { // ( types-Object, data ) data = data || selector; selector = undefined; } for ( type in types ) { on( elem, type, selector, data, types[ type ], one ); } return elem; } if ( data == null && fn == null ) { // ( types, fn ) fn = selector; data = selector = undefined; } else if ( fn == null ) { if ( typeof selector === "string" ) { // ( types, selector, fn ) fn = data; data = undefined; } else { // ( types, data, fn ) fn = data; data = selector; selector = undefined; } } if ( fn === false ) { fn = returnFalse; } else if ( !fn ) { return elem; } if ( one === 1 ) { origFn = fn; fn = function( event ) { // Can use an empty set, since event contains the info jQuery().off( event ); return origFn.apply( this, arguments ); }; // Use same guid so caller can remove using origFn fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); } return elem.each( function() { jQuery.event.add( this, types, fn, data, selector ); } ); } /* * Helper functions for managing events -- not part of the public interface. * Props to Dean Edwards' addEvent library for many of the ideas. */ jQuery.event = { global: {}, add: function( elem, types, handler, data, selector ) { var handleObjIn, eventHandle, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.get( elem ); // Don't attach events to noData or text/comment nodes (but allow plain objects) if ( !elemData ) { return; } // Caller can pass in an object of custom data in lieu of the handler if ( handler.handler ) { handleObjIn = handler; handler = handleObjIn.handler; selector = handleObjIn.selector; } // Ensure that invalid selectors throw exceptions at attach time // Evaluate against documentElement in case elem is a non-element node (e.g., document) if ( selector ) { jQuery.find.matchesSelector( documentElement, selector ); } // Make sure that the handler has a unique ID, used to find/remove it later if ( !handler.guid ) { handler.guid = jQuery.guid++; } // Init the element's event structure and main handler, if this is the first if ( !( events = elemData.events ) ) { events = elemData.events = {}; } if ( !( eventHandle = elemData.handle ) ) { eventHandle = elemData.handle = function( e ) { // Discard the second event of a jQuery.event.trigger() and // when an event is called after a page has unloaded return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? jQuery.event.dispatch.apply( elem, arguments ) : undefined; }; } // Handle multiple events separated by a space types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; t = types.length; while ( t-- ) { tmp = rtypenamespace.exec( types[ t ] ) || []; type = origType = tmp[ 1 ]; namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); // There *must* be a type, no attaching namespace-only handlers if ( !type ) { continue; } // If event changes its type, use the special event handlers for the changed type special = jQuery.event.special[ type ] || {}; // If selector defined, determine special event api type, otherwise given type type = ( selector ? special.delegateType : special.bindType ) || type; // Update special based on newly reset type special = jQuery.event.special[ type ] || {}; // handleObj is passed to all event handlers handleObj = jQuery.extend( { type: type, origType: origType, data: data, handler: handler, guid: handler.guid, selector: selector, needsContext: selector && jQuery.expr.match.needsContext.test( selector ), namespace: namespaces.join( "." ) }, handleObjIn ); // Init the event handler queue if we're the first if ( !( handlers = events[ type ] ) ) { handlers = events[ type ] = []; handlers.delegateCount = 0; // Only use addEventListener if the special events handler returns false if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) { if ( elem.addEventListener ) { elem.addEventListener( type, eventHandle ); } } } if ( special.add ) { special.add.call( elem, handleObj ); if ( !handleObj.handler.guid ) { handleObj.handler.guid = handler.guid; } } // Add to the element's handler list, delegates in front if ( selector ) { handlers.splice( handlers.delegateCount++, 0, handleObj ); } else { handlers.push( handleObj ); } // Keep track of which events have ever been used, for event optimization jQuery.event.global[ type ] = true; } }, // Detach an event or set of events from an element remove: function( elem, types, handler, selector, mappedTypes ) { var j, origCount, tmp, events, t, handleObj, special, handlers, type, namespaces, origType, elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); if ( !elemData || !( events = elemData.events ) ) { return; } // Once for each type.namespace in types; type may be omitted types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; t = types.length; while ( t-- ) { tmp = rtypenamespace.exec( types[ t ] ) || []; type = origType = tmp[ 1 ]; namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); // Unbind all events (on this namespace, if provided) for the element if ( !type ) { for ( type in events ) { jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); } continue; } special = jQuery.event.special[ type ] || {}; type = ( selector ? special.delegateType : special.bindType ) || type; handlers = events[ type ] || []; tmp = tmp[ 2 ] && new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); // Remove matching events origCount = j = handlers.length; while ( j-- ) { handleObj = handlers[ j ]; if ( ( mappedTypes || origType === handleObj.origType ) && ( !handler || handler.guid === handleObj.guid ) && ( !tmp || tmp.test( handleObj.namespace ) ) && ( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) { handlers.splice( j, 1 ); if ( handleObj.selector ) { handlers.delegateCount--; } if ( special.remove ) { special.remove.call( elem, handleObj ); } } } // Remove generic event handler if we removed something and no more handlers exist // (avoids potential for endless recursion during removal of special event handlers) if ( origCount && !handlers.length ) { if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) { jQuery.removeEvent( elem, type, elemData.handle ); } delete events[ type ]; } } // Remove data and the expando if it's no longer used if ( jQuery.isEmptyObject( events ) ) { dataPriv.remove( elem, "handle events" ); } }, dispatch: function( nativeEvent ) { // Make a writable jQuery.Event from the native event object var event = jQuery.event.fix( nativeEvent ); var i, j, ret, matched, handleObj, handlerQueue, args = new Array( arguments.length ), handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [], special = jQuery.event.special[ event.type ] || {}; // Use the fix-ed jQuery.Event rather than the (read-only) native event args[ 0 ] = event; for ( i = 1; i < arguments.length; i++ ) { args[ i ] = arguments[ i ]; } event.delegateTarget = this; // Call the preDispatch hook for the mapped type, and let it bail if desired if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { return; } // Determine handlers handlerQueue = jQuery.event.handlers.call( this, event, handlers ); // Run delegates first; they may want to stop propagation beneath us i = 0; while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { event.currentTarget = matched.elem; j = 0; while ( ( handleObj = matched.handlers[ j++ ] ) && !event.isImmediatePropagationStopped() ) { // Triggered event must either 1) have no namespace, or 2) have namespace(s) // a subset or equal to those in the bound event (both can have no namespace). if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) { event.handleObj = handleObj; event.data = handleObj.data; ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || handleObj.handler ).apply( matched.elem, args ); if ( ret !== undefined ) { if ( ( event.result = ret ) === false ) { event.preventDefault(); event.stopPropagation(); } } } } } // Call the postDispatch hook for the mapped type if ( special.postDispatch ) { special.postDispatch.call( this, event ); } return event.result; }, handlers: function( event, handlers ) { var i, handleObj, sel, matchedHandlers, matchedSelectors, handlerQueue = [], delegateCount = handlers.delegateCount, cur = event.target; // Find delegate handlers if ( delegateCount && // Support: IE <=9 // Black-hole SVG <use> instance trees (trac-13180) cur.nodeType && // Support: Firefox <=42 // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click // Support: IE 11 only // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) !( event.type === "click" && event.button >= 1 ) ) { for ( ; cur !== this; cur = cur.parentNode || this ) { // Don't check non-elements (#13208) // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { matchedHandlers = []; matchedSelectors = {}; for ( i = 0; i < delegateCount; i++ ) { handleObj = handlers[ i ]; // Don't conflict with Object.prototype properties (#13203) sel = handleObj.selector + " "; if ( matchedSelectors[ sel ] === undefined ) { matchedSelectors[ sel ] = handleObj.needsContext ? jQuery( sel, this ).index( cur ) > -1 : jQuery.find( sel, this, null, [ cur ] ).length; } if ( matchedSelectors[ sel ] ) { matchedHandlers.push( handleObj ); } } if ( matchedHandlers.length ) { handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); } } } } // Add the remaining (directly-bound) handlers cur = this; if ( delegateCount < handlers.length ) { handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); } return handlerQueue; }, addProp: function( name, hook ) { Object.defineProperty( jQuery.Event.prototype, name, { enumerable: true, configurable: true, get: isFunction( hook ) ? function() { if ( this.originalEvent ) { return hook( this.originalEvent ); } } : function() { if ( this.originalEvent ) { return this.originalEvent[ name ]; } }, set: function( value ) { Object.defineProperty( this, name, { enumerable: true, configurable: true, writable: true, value: value } ); } } ); }, fix: function( originalEvent ) { return originalEvent[ jQuery.expando ] ? originalEvent : new jQuery.Event( originalEvent ); }, special: { load: { // Prevent triggered image.load events from bubbling to window.load noBubble: true }, focus: { // Fire native event if possible so blur/focus sequence is correct trigger: function() { if ( this !== safeActiveElement() && this.focus ) { this.focus(); return false; } }, delegateType: "focusin" }, blur: { trigger: function() { if ( this === safeActiveElement() && this.blur ) { this.blur(); return false; } }, delegateType: "focusout" }, click: { // For checkbox, fire native event so checked state will be right trigger: function() { if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) { this.click(); return false; } }, // For cross-browser consistency, don't fire native .click() on links _default: function( event ) { return nodeName( event.target, "a" ); } }, beforeunload: { postDispatch: function( event ) { // Support: Firefox 20+ // Firefox doesn't alert if the returnValue field is not set. if ( event.result !== undefined && event.originalEvent ) { event.originalEvent.returnValue = event.result; } } } } }; jQuery.removeEvent = function( elem, type, handle ) { // This "if" is needed for plain objects if ( elem.removeEventListener ) { elem.removeEventListener( type, handle ); } }; jQuery.Event = function( src, props ) { // Allow instantiation without the 'new' keyword if ( !( this instanceof jQuery.Event ) ) { return new jQuery.Event( src, props ); } // Event object if ( src && src.type ) { this.originalEvent = src; this.type = src.type; // Events bubbling up the document may have been marked as prevented // by a handler lower down the tree; reflect the correct value. this.isDefaultPrevented = src.defaultPrevented || src.defaultPrevented === undefined && // Support: Android <=2.3 only src.returnValue === false ? returnTrue : returnFalse; // Create target properties // Support: Safari <=6 - 7 only // Target should not be a text node (#504, #13143) this.target = ( src.target && src.target.nodeType === 3 ) ? src.target.parentNode : src.target; this.currentTarget = src.currentTarget; this.relatedTarget = src.relatedTarget; // Event type } else { this.type = src; } // Put explicitly provided properties onto the event object if ( props ) { jQuery.extend( this, props ); } // Create a timestamp if incoming event doesn't have one this.timeStamp = src && src.timeStamp || Date.now(); // Mark it as fixed this[ jQuery.expando ] = true; }; // jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding // https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html jQuery.Event.prototype = { constructor: jQuery.Event, isDefaultPrevented: returnFalse, isPropagationStopped: returnFalse, isImmediatePropagationStopped: returnFalse, isSimulated: false, preventDefault: function() { var e = this.originalEvent; this.isDefaultPrevented = returnTrue; if ( e && !this.isSimulated ) { e.preventDefault(); } }, stopPropagation: function() { var e = this.originalEvent; this.isPropagationStopped = returnTrue; if ( e && !this.isSimulated ) { e.stopPropagation(); } }, stopImmediatePropagation: function() { var e = this.originalEvent; this.isImmediatePropagationStopped = returnTrue; if ( e && !this.isSimulated ) { e.stopImmediatePropagation(); } this.stopPropagation(); } }; // Includes all common event props including KeyEvent and MouseEvent specific props jQuery.each( { altKey: true, bubbles: true, cancelable: true, changedTouches: true, ctrlKey: true, detail: true, eventPhase: true, metaKey: true, pageX: true, pageY: true, shiftKey: true, view: true, "char": true, charCode: true, key: true, keyCode: true, button: true, buttons: true, clientX: true, clientY: true, offsetX: true, offsetY: true, pointerId: true, pointerType: true, screenX: true, screenY: true, targetTouches: true, toElement: true, touches: true, which: function( event ) { var button = event.button; // Add which for key events if ( event.which == null && rkeyEvent.test( event.type ) ) { return event.charCode != null ? event.charCode : event.keyCode; } // Add which for click: 1 === left; 2 === middle; 3 === right if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) { if ( button & 1 ) { return 1; } if ( button & 2 ) { return 3; } if ( button & 4 ) { return 2; } return 0; } return event.which; } }, jQuery.event.addProp ); // Create mouseenter/leave events using mouseover/out and event-time checks // so that event delegation works in jQuery. // Do the same for pointerenter/pointerleave and pointerover/pointerout // // Support: Safari 7 only // Safari sends mouseenter too often; see: // https://bugs.chromium.org/p/chromium/issues/detail?id=470258 // for the description of the bug (it existed in older Chrome versions as well). jQuery.each( { mouseenter: "mouseover", mouseleave: "mouseout", pointerenter: "pointerover", pointerleave: "pointerout" }, function( orig, fix ) { jQuery.event.special[ orig ] = { delegateType: fix, bindType: fix, handle: function( event ) { var ret, target = this, related = event.relatedTarget, handleObj = event.handleObj; // For mouseenter/leave call the handler if related is outside the target. // NB: No relatedTarget if the mouse left/entered the browser window if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { event.type = handleObj.origType; ret = handleObj.handler.apply( this, arguments ); event.type = fix; } return ret; } }; } ); jQuery.fn.extend( { on: function( types, selector, data, fn ) { return on( this, types, selector, data, fn ); }, one: function( types, selector, data, fn ) { return on( this, types, selector, data, fn, 1 ); }, off: function( types, selector, fn ) { var handleObj, type; if ( types && types.preventDefault && types.handleObj ) { // ( event ) dispatched jQuery.Event handleObj = types.handleObj; jQuery( types.delegateTarget ).off( handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType, handleObj.selector, handleObj.handler ); return this; } if ( typeof types === "object" ) { // ( types-object [, selector] ) for ( type in types ) { this.off( type, selector, types[ type ] ); } return this; } if ( selector === false || typeof selector === "function" ) { // ( types [, fn] ) fn = selector; selector = undefined; } if ( fn === false ) { fn = returnFalse; } return this.each( function() { jQuery.event.remove( this, types, fn, selector ); } ); } } ); return jQuery; } ); PK =x�\4��� � common.jsnu �[��� /** * This is the common logic for both the Node.js and web browser * implementations of `debug()`. */ function setup(env) { createDebug.debug = createDebug; createDebug.default = createDebug; createDebug.coerce = coerce; createDebug.disable = disable; createDebug.enable = enable; createDebug.enabled = enabled; createDebug.humanize = require('ms'); createDebug.destroy = destroy; Object.keys(env).forEach(key => { createDebug[key] = env[key]; }); /** * The currently active debug mode names, and names to skip. */ createDebug.names = []; createDebug.skips = []; /** * Map of special "%n" handling functions, for the debug "format" argument. * * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N". */ createDebug.formatters = {}; /** * Selects a color for a debug namespace * @param {String} namespace The namespace string for the debug instance to be colored * @return {Number|String} An ANSI color code for the given namespace * @api private */ function selectColor(namespace) { let hash = 0; for (let i = 0; i < namespace.length; i++) { hash = ((hash << 5) - hash) + namespace.charCodeAt(i); hash |= 0; // Convert to 32bit integer } return createDebug.colors[Math.abs(hash) % createDebug.colors.length]; } createDebug.selectColor = selectColor; /** * Create a debugger with the given `namespace`. * * @param {String} namespace * @return {Function} * @api public */ function createDebug(namespace) { let prevTime; let enableOverride = null; let namespacesCache; let enabledCache; function debug(...args) { // Disabled? if (!debug.enabled) { return; } const self = debug; // Set `diff` timestamp const curr = Number(new Date()); const ms = curr - (prevTime || curr); self.diff = ms; self.prev = prevTime; self.curr = curr; prevTime = curr; args[0] = createDebug.coerce(args[0]); if (typeof args[0] !== 'string') { // Anything else let's inspect with %O args.unshift('%O'); } // Apply any `formatters` transformations let index = 0; args[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => { // If we encounter an escaped % then don't increase the array index if (match === '%%') { return '%'; } index++; const formatter = createDebug.formatters[format]; if (typeof formatter === 'function') { const val = args[index]; match = formatter.call(self, val); // Now we need to remove `args[index]` since it's inlined in the `format` args.splice(index, 1); index--; } return match; }); // Apply env-specific formatting (colors, etc.) createDebug.formatArgs.call(self, args); const logFn = self.log || createDebug.log; logFn.apply(self, args); } debug.namespace = namespace; debug.useColors = createDebug.useColors(); debug.color = createDebug.selectColor(namespace); debug.extend = extend; debug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release. Object.defineProperty(debug, 'enabled', { enumerable: true, configurable: false, get: () => { if (enableOverride !== null) { return enableOverride; } if (namespacesCache !== createDebug.namespaces) { namespacesCache = createDebug.namespaces; enabledCache = createDebug.enabled(namespace); } return enabledCache; }, set: v => { enableOverride = v; } }); // Env-specific initialization logic for debug instances if (typeof createDebug.init === 'function') { createDebug.init(debug); } return debug; } function extend(namespace, delimiter) { const newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace); newDebug.log = this.log; return newDebug; } /** * Enables a debug mode by namespaces. This can include modes * separated by a colon and wildcards. * * @param {String} namespaces * @api public */ function enable(namespaces) { createDebug.save(namespaces); createDebug.namespaces = namespaces; createDebug.names = []; createDebug.skips = []; let i; const split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/); const len = split.length; for (i = 0; i < len; i++) { if (!split[i]) { // ignore empty strings continue; } namespaces = split[i].replace(/\*/g, '.*?'); if (namespaces[0] === '-') { createDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$')); } else { createDebug.names.push(new RegExp('^' + namespaces + '$')); } } } /** * Disable debug output. * * @return {String} namespaces * @api public */ function disable() { const namespaces = [ ...createDebug.names.map(toNamespace), ...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace) ].join(','); createDebug.enable(''); return namespaces; } /** * Returns true if the given mode name is enabled, false otherwise. * * @param {String} name * @return {Boolean} * @api public */ function enabled(name) { if (name[name.length - 1] === '*') { return true; } let i; let len; for (i = 0, len = createDebug.skips.length; i < len; i++) { if (createDebug.skips[i].test(name)) { return false; } } for (i = 0, len = createDebug.names.length; i < len; i++) { if (createDebug.names[i].test(name)) { return true; } } return false; } /** * Convert regexp to namespace * * @param {RegExp} regxep * @return {String} namespace * @api private */ function toNamespace(regexp) { return regexp.toString() .substring(2, regexp.toString().length - 2) .replace(/\.\*\?$/, '*'); } /** * Coerce `val`. * * @param {Mixed} val * @return {Mixed} * @api private */ function coerce(val) { if (val instanceof Error) { return val.stack || val.message; } return val; } /** * XXX DO NOT USE. This is a temporary stub function. * XXX It WILL be removed in the next major release. */ function destroy() { console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); } createDebug.enable(createDebug.load()); return createDebug; } module.exports = setup; PK =x�\4Jtx x node.jsnu �[��� /** * Module dependencies. */ const tty = require('tty'); const util = require('util'); /** * This is the Node.js implementation of `debug()`. */ exports.init = init; exports.log = log; exports.formatArgs = formatArgs; exports.save = save; exports.load = load; exports.useColors = useColors; exports.destroy = util.deprecate( () => {}, 'Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.' ); /** * Colors. */ exports.colors = [6, 2, 3, 4, 5, 1]; try { // Optional dependency (as in, doesn't need to be installed, NOT like optionalDependencies in package.json) // eslint-disable-next-line import/no-extraneous-dependencies const supportsColor = require('supports-color'); if (supportsColor && (supportsColor.stderr || supportsColor).level >= 2) { exports.colors = [ 20, 21, 26, 27, 32, 33, 38, 39, 40, 41, 42, 43, 44, 45, 56, 57, 62, 63, 68, 69, 74, 75, 76, 77, 78, 79, 80, 81, 92, 93, 98, 99, 112, 113, 128, 129, 134, 135, 148, 149, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 178, 179, 184, 185, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 214, 215, 220, 221 ]; } } catch (error) { // Swallow - we only care if `supports-color` is available; it doesn't have to be. } /** * Build up the default `inspectOpts` object from the environment variables. * * $ DEBUG_COLORS=no DEBUG_DEPTH=10 DEBUG_SHOW_HIDDEN=enabled node script.js */ exports.inspectOpts = Object.keys(process.env).filter(key => { return /^debug_/i.test(key); }).reduce((obj, key) => { // Camel-case const prop = key .substring(6) .toLowerCase() .replace(/_([a-z])/g, (_, k) => { return k.toUpperCase(); }); // Coerce string value into JS value let val = process.env[key]; if (/^(yes|on|true|enabled)$/i.test(val)) { val = true; } else if (/^(no|off|false|disabled)$/i.test(val)) { val = false; } else if (val === 'null') { val = null; } else { val = Number(val); } obj[prop] = val; return obj; }, {}); /** * Is stdout a TTY? Colored output is enabled when `true`. */ function useColors() { return 'colors' in exports.inspectOpts ? Boolean(exports.inspectOpts.colors) : tty.isatty(process.stderr.fd); } /** * Adds ANSI color escape codes if enabled. * * @api public */ function formatArgs(args) { const {namespace: name, useColors} = this; if (useColors) { const c = this.color; const colorCode = '\u001B[3' + (c < 8 ? c : '8;5;' + c); const prefix = ` ${colorCode};1m${name} \u001B[0m`; args[0] = prefix + args[0].split('\n').join('\n' + prefix); args.push(colorCode + 'm+' + module.exports.humanize(this.diff) + '\u001B[0m'); } else { args[0] = getDate() + name + ' ' + args[0]; } } function getDate() { if (exports.inspectOpts.hideDate) { return ''; } return new Date().toISOString() + ' '; } /** * Invokes `util.formatWithOptions()` with the specified arguments and writes to stderr. */ function log(...args) { return process.stderr.write(util.formatWithOptions(exports.inspectOpts, ...args) + '\n'); } /** * Save `namespaces`. * * @param {String} namespaces * @api private */ function save(namespaces) { if (namespaces) { process.env.DEBUG = namespaces; } else { // If you set a process.env field to null or undefined, it gets cast to the // string 'null' or 'undefined'. Just delete instead. delete process.env.DEBUG; } } /** * Load `namespaces`. * * @return {String} returns the previously persisted debug modes * @api private */ function load() { return process.env.DEBUG; } /** * Init logic for `debug` instances. * * Create a new `inspectOpts` object in case `useColors` is set * differently for a particular `debug` instance. */ function init(debug) { debug.inspectOpts = {}; const keys = Object.keys(exports.inspectOpts); for (let i = 0; i < keys.length; i++) { debug.inspectOpts[keys[i]] = exports.inspectOpts[keys[i]]; } } module.exports = require('./common')(exports); const {formatters} = module.exports; /** * Map %o to `util.inspect()`, all on a single line. */ formatters.o = function (v) { this.inspectOpts.colors = this.useColors; return util.inspect(v, this.inspectOpts) .split('\n') .map(str => str.trim()) .join(' '); }; /** * Map %O to `util.inspect()`, allowing multiple lines if needed. */ formatters.O = function (v) { this.inspectOpts.colors = this.useColors; return util.inspect(v, this.inspectOpts); }; PK =x�\�>"�z z browser.jsnu �[��� /* eslint-env browser */ /** * This is the web browser implementation of `debug()`. */ exports.formatArgs = formatArgs; exports.save = save; exports.load = load; exports.useColors = useColors; exports.storage = localstorage(); exports.destroy = (() => { let warned = false; return () => { if (!warned) { warned = true; console.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.'); } }; })(); /** * Colors. */ exports.colors = [ '#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33' ]; /** * Currently only WebKit-based Web Inspectors, Firefox >= v31, * and the Firebug extension (any Firefox version) are known * to support "%c" CSS customizations. * * TODO: add a `localStorage` variable to explicitly enable/disable colors */ // eslint-disable-next-line complexity function useColors() { // NB: In an Electron preload script, document will be defined but not fully // initialized. Since we know we're in Chrome, we'll just detect this case // explicitly if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) { return true; } // Internet Explorer and Edge do not support colors. if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/)) { return false; } // Is webkit? http://stackoverflow.com/a/16459606/376773 // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632 return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) || // Is firebug? http://stackoverflow.com/a/398120/376773 (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) || // Is firefox >= v31? // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) || // Double check webkit in userAgent just in case we are in a worker (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)); } /** * Colorize log arguments if enabled. * * @api public */ function formatArgs(args) { args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff); if (!this.useColors) { return; } const c = 'color: ' + this.color; args.splice(1, 0, c, 'color: inherit'); // The final "%c" is somewhat tricky, because there could be other // arguments passed either before or after the %c, so we need to // figure out the correct index to insert the CSS into let index = 0; let lastC = 0; args[0].replace(/%[a-zA-Z%]/g, match => { if (match === '%%') { return; } index++; if (match === '%c') { // We only are interested in the *last* %c // (the user may have provided their own) lastC = index; } }); args.splice(lastC, 0, c); } /** * Invokes `console.debug()` when available. * No-op when `console.debug` is not a "function". * If `console.debug` is not available, falls back * to `console.log`. * * @api public */ exports.log = console.debug || console.log || (() => {}); /** * Save `namespaces`. * * @param {String} namespaces * @api private */ function save(namespaces) { try { if (namespaces) { exports.storage.setItem('debug', namespaces); } else { exports.storage.removeItem('debug'); } } catch (error) { // Swallow // XXX (@Qix-) should we be logging these? } } /** * Load `namespaces`. * * @return {String} returns the previously persisted debug modes * @api private */ function load() { let r; try { r = exports.storage.getItem('debug'); } catch (error) { // Swallow // XXX (@Qix-) should we be logging these? } // If debug isn't set in LS, and we're in Electron, try to load $DEBUG if (!r && typeof process !== 'undefined' && 'env' in process) { r = process.env.DEBUG; } return r; } /** * Localstorage attempts to return the localstorage. * * This is necessary because safari throws * when a user disables cookies/localstorage * and you attempt to access it. * * @return {LocalStorage} * @api private */ function localstorage() { try { // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context // The Browser also has localStorage in the global context. return localStorage; } catch (error) { // Swallow // XXX (@Qix-) should we be logging these? } } module.exports = require('./common')(exports); const {formatters} = module.exports; /** * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default. */ formatters.j = function (v) { try { return JSON.stringify(v); } catch (error) { return '[UnexpectedJSONParseError]: ' + error.message; } }; PK Oz�\z� �W �W bootstrap-tagsinput.jsnu �[��� (function ($) { "use strict"; var defaultOptions = { tagClass: function(item) { return 'label label-info'; }, itemValue: function(item) { return item ? item.toString() : item; }, itemText: function(item) { return this.itemValue(item); }, itemTitle: function(item) { return null; }, freeInput: true, addOnBlur: true, maxTags: undefined, maxChars: undefined, confirmKeys: [13, 44], delimiter: ',', delimiterRegex: null, cancelConfirmKeysOnEmpty: false, onTagExists: function(item, $tag) { $tag.hide().fadeIn(); }, trimValue: false, allowDuplicates: false }; /** * Constructor function */ function TagsInput(element, options) { this.isInit = true; this.itemsArray = []; this.$element = $(element); this.$element.hide(); this.isSelect = (element.tagName === 'SELECT'); this.multiple = (this.isSelect && element.hasAttribute('multiple')); this.objectItems = options && options.itemValue; this.placeholderText = element.hasAttribute('placeholder') ? this.$element.attr('placeholder') : ''; this.inputSize = Math.max(1, this.placeholderText.length); this.$container = $('<div class="bootstrap-tagsinput"></div>'); this.$input = $('<input type="text" placeholder="' + this.placeholderText + '"/>').appendTo(this.$container); this.$element.before(this.$container); this.build(options); this.isInit = false; } TagsInput.prototype = { constructor: TagsInput, /** * Adds the given item as a new tag. Pass true to dontPushVal to prevent * updating the elements val() */ add: function(item, dontPushVal, options) { var self = this; if (self.options.maxTags && self.itemsArray.length >= self.options.maxTags) return; // Ignore falsey values, except false if (item !== false && !item) return; // Trim value if (typeof item === "string" && self.options.trimValue) { item = $.trim(item); } // Throw an error when trying to add an object while the itemValue option was not set if (typeof item === "object" && !self.objectItems) throw("Can't add objects when itemValue option is not set"); // Ignore strings only containg whitespace if (item.toString().match(/^\s*$/)) return; // If SELECT but not multiple, remove current tag if (self.isSelect && !self.multiple && self.itemsArray.length > 0) self.remove(self.itemsArray[0]); if (typeof item === "string" && this.$element[0].tagName === 'INPUT') { var delimiter = (self.options.delimiterRegex) ? self.options.delimiterRegex : self.options.delimiter; var items = item.split(delimiter); if (items.length > 1) { for (var i = 0; i < items.length; i++) { this.add(items[i], true); } if (!dontPushVal) self.pushVal(); return; } } var itemValue = self.options.itemValue(item), itemText = self.options.itemText(item), tagClass = self.options.tagClass(item), itemTitle = self.options.itemTitle(item); // Ignore items allready added var existing = $.grep(self.itemsArray, function(item) { return self.options.itemValue(item) === itemValue; } )[0]; if (existing && !self.options.allowDuplicates) { // Invoke onTagExists if (self.options.onTagExists) { var $existingTag = $(".tag", self.$container).filter(function() { return $(this).data("item") === existing; }); self.options.onTagExists(item, $existingTag); } return; } // if length greater than limit if (self.items().toString().length + item.length + 1 > self.options.maxInputLength) return; // raise beforeItemAdd arg var beforeItemAddEvent = $.Event('beforeItemAdd', { item: item, cancel: false, options: options}); self.$element.trigger(beforeItemAddEvent); if (beforeItemAddEvent.cancel) return; // register item in internal array and map self.itemsArray.push(item); // add a tag element var $tag = $('<span class="tag ' + htmlEncode(tagClass) + (itemTitle !== null ? ('" title="' + itemTitle) : '') + '">' + htmlEncode(itemText) + '<span data-role="remove"></span></span>'); $tag.data('item', item); self.findInputWrapper().before($tag); $tag.after(' '); // Check to see if the tag exists in its raw or uri-encoded form var optionExists = ( $('option[value="' + encodeURIComponent(itemValue) + '"]', self.$element).length || $('option[value="' + htmlEncode(itemValue) + '"]', self.$element).length ); // add <option /> if item represents a value not present in one of the <select />'s options if (self.isSelect && !optionExists) { var $option = $('<option selected>' + htmlEncode(itemText) + '</option>'); $option.data('item', item); $option.attr('value', itemValue); self.$element.append($option); } if (!dontPushVal) self.pushVal(); // Add class when reached maxTags if (self.options.maxTags === self.itemsArray.length || self.items().toString().length === self.options.maxInputLength) self.$container.addClass('bootstrap-tagsinput-max'); // If using typeahead, once the tag has been added, clear the typeahead value so it does not stick around in the input. if ($('.typeahead, .twitter-typeahead', self.$container).length) { self.$input.typeahead('val', ''); } if (this.isInit) { self.$element.trigger($.Event('itemAddedOnInit', { item: item, options: options })); } else { self.$element.trigger($.Event('itemAdded', { item: item, options: options })); } }, /** * Removes the given item. Pass true to dontPushVal to prevent updating the * elements val() */ remove: function(item, dontPushVal, options) { var self = this; if (self.objectItems) { if (typeof item === "object") item = $.grep(self.itemsArray, function(other) { return self.options.itemValue(other) == self.options.itemValue(item); } ); else item = $.grep(self.itemsArray, function(other) { return self.options.itemValue(other) == item; } ); item = item[item.length-1]; } if (item) { var beforeItemRemoveEvent = $.Event('beforeItemRemove', { item: item, cancel: false, options: options }); self.$element.trigger(beforeItemRemoveEvent); if (beforeItemRemoveEvent.cancel) return; $('.tag', self.$container).filter(function() { return $(this).data('item') === item; }).remove(); $('option', self.$element).filter(function() { return $(this).data('item') === item; }).remove(); if($.inArray(item, self.itemsArray) !== -1) self.itemsArray.splice($.inArray(item, self.itemsArray), 1); } if (!dontPushVal) self.pushVal(); // Remove class when reached maxTags if (self.options.maxTags > self.itemsArray.length) self.$container.removeClass('bootstrap-tagsinput-max'); self.$element.trigger($.Event('itemRemoved', { item: item, options: options })); }, /** * Removes all items */ removeAll: function() { var self = this; $('.tag', self.$container).remove(); $('option', self.$element).remove(); while(self.itemsArray.length > 0) self.itemsArray.pop(); self.pushVal(); }, /** * Refreshes the tags so they match the text/value of their corresponding * item. */ refresh: function() { var self = this; $('.tag', self.$container).each(function() { var $tag = $(this), item = $tag.data('item'), itemValue = self.options.itemValue(item), itemText = self.options.itemText(item), tagClass = self.options.tagClass(item); // Update tag's class and inner text $tag.attr('class', null); $tag.addClass('tag ' + htmlEncode(tagClass)); $tag.contents().filter(function() { return this.nodeType == 3; })[0].nodeValue = htmlEncode(itemText); if (self.isSelect) { var option = $('option', self.$element).filter(function() { return $(this).data('item') === item; }); option.attr('value', itemValue); } }); }, /** * Returns the items added as tags */ items: function() { return this.itemsArray; }, /** * Assembly value by retrieving the value of each item, and set it on the * element. */ pushVal: function() { var self = this, val = $.map(self.items(), function(item) { return self.options.itemValue(item).toString(); }); self.$element.val(val, true).trigger('change'); }, /** * Initializes the tags input behaviour on the element */ build: function(options) { var self = this; self.options = $.extend({}, defaultOptions, options); // When itemValue is set, freeInput should always be false if (self.objectItems) self.options.freeInput = false; makeOptionItemFunction(self.options, 'itemValue'); makeOptionItemFunction(self.options, 'itemText'); makeOptionFunction(self.options, 'tagClass'); // Typeahead Bootstrap version 2.3.2 if (self.options.typeahead) { var typeahead = self.options.typeahead || {}; makeOptionFunction(typeahead, 'source'); self.$input.typeahead($.extend({}, typeahead, { source: function (query, process) { function processItems(items) { var texts = []; for (var i = 0; i < items.length; i++) { var text = self.options.itemText(items[i]); map[text] = items[i]; texts.push(text); } process(texts); } this.map = {}; var map = this.map, data = typeahead.source(query); if ($.isFunction(data.success)) { // support for Angular callbacks data.success(processItems); } else if ($.isFunction(data.then)) { // support for Angular promises data.then(processItems); } else { // support for functions and jquery promises $.when(data) .then(processItems); } }, updater: function (text) { self.add(this.map[text]); return this.map[text]; }, matcher: function (text) { return (text.toLowerCase().indexOf(this.query.trim().toLowerCase()) !== -1); }, sorter: function (texts) { return texts.sort(); }, highlighter: function (text) { var regex = new RegExp( '(' + this.query + ')', 'gi' ); return text.replace( regex, "<strong>$1</strong>" ); } })); } // typeahead.js if (self.options.typeaheadjs) { var typeaheadConfig = null; var typeaheadDatasets = {}; // Determine if main configurations were passed or simply a dataset var typeaheadjs = self.options.typeaheadjs; if ($.isArray(typeaheadjs)) { typeaheadConfig = typeaheadjs[0]; typeaheadDatasets = typeaheadjs[1]; } else { typeaheadDatasets = typeaheadjs; } self.$input.typeahead(typeaheadConfig, typeaheadDatasets).on('typeahead:selected', $.proxy(function (obj, datum) { if (typeaheadDatasets.valueKey) self.add(datum[typeaheadDatasets.valueKey]); else self.add(datum); self.$input.typeahead('val', ''); }, self)); } self.$container.on('click', $.proxy(function(event) { if (! self.$element.attr('disabled')) { self.$input.removeAttr('disabled'); } self.$input.focus(); }, self)); if (self.options.addOnBlur && self.options.freeInput) { self.$input.on('focusout', $.proxy(function(event) { // HACK: only process on focusout when no typeahead opened, to // avoid adding the typeahead text as tag if ($('.typeahead, .twitter-typeahead', self.$container).length === 0) { self.add(self.$input.val()); self.$input.val(''); } }, self)); } self.$container.on('keydown', 'input', $.proxy(function(event) { var $input = $(event.target), $inputWrapper = self.findInputWrapper(); if (self.$element.attr('disabled')) { self.$input.attr('disabled', 'disabled'); return; } switch (event.which) { // BACKSPACE case 8: if (doGetCaretPosition($input[0]) === 0) { var prev = $inputWrapper.prev(); if (prev.length) { self.remove(prev.data('item')); } } break; // DELETE case 46: if (doGetCaretPosition($input[0]) === 0) { var next = $inputWrapper.next(); if (next.length) { self.remove(next.data('item')); } } break; // LEFT ARROW case 37: // Try to move the input before the previous tag var $prevTag = $inputWrapper.prev(); if ($input.val().length === 0 && $prevTag[0]) { $prevTag.before($inputWrapper); $input.focus(); } break; // RIGHT ARROW case 39: // Try to move the input after the next tag var $nextTag = $inputWrapper.next(); if ($input.val().length === 0 && $nextTag[0]) { $nextTag.after($inputWrapper); $input.focus(); } break; default: // ignore } // Reset internal input's size var textLength = $input.val().length, wordSpace = Math.ceil(textLength / 5), size = textLength + wordSpace + 1; $input.attr('size', Math.max(this.inputSize, $input.val().length)); }, self)); self.$container.on('keypress', 'input', $.proxy(function(event) { var $input = $(event.target); if (self.$element.attr('disabled')) { self.$input.attr('disabled', 'disabled'); return; } var text = $input.val(), maxLengthReached = self.options.maxChars && text.length >= self.options.maxChars; if (self.options.freeInput && (keyCombinationInList(event, self.options.confirmKeys) || maxLengthReached)) { // Only attempt to add a tag if there is data in the field if (text.length !== 0) { self.add(maxLengthReached ? text.substr(0, self.options.maxChars) : text); $input.val(''); } // If the field is empty, let the event triggered fire as usual if (self.options.cancelConfirmKeysOnEmpty === false) { event.preventDefault(); } } // Reset internal input's size var textLength = $input.val().length, wordSpace = Math.ceil(textLength / 5), size = textLength + wordSpace + 1; $input.attr('size', Math.max(this.inputSize, $input.val().length)); }, self)); // Remove icon clicked self.$container.on('click', '[data-role=remove]', $.proxy(function(event) { if (self.$element.attr('disabled')) { return; } self.remove($(event.target).closest('.tag').data('item')); }, self)); // Only add existing value as tags when using strings as tags if (self.options.itemValue === defaultOptions.itemValue) { if (self.$element[0].tagName === 'INPUT') { self.add(self.$element.val()); } else { $('option', self.$element).each(function() { self.add($(this).attr('value'), true); }); } } }, /** * Removes all tagsinput behaviour and unregsiter all event handlers */ destroy: function() { var self = this; // Unbind events self.$container.off('keypress', 'input'); self.$container.off('click', '[role=remove]'); self.$container.remove(); self.$element.removeData('tagsinput'); self.$element.show(); }, /** * Sets focus on the tagsinput */ focus: function() { this.$input.focus(); }, /** * Returns the internal input element */ input: function() { return this.$input; }, /** * Returns the element which is wrapped around the internal input. This * is normally the $container, but typeahead.js moves the $input element. */ findInputWrapper: function() { var elt = this.$input[0], container = this.$container[0]; while(elt && elt.parentNode !== container) elt = elt.parentNode; return $(elt); } }; /** * Register JQuery plugin */ $.fn.tagsinput = function(arg1, arg2, arg3) { var results = []; this.each(function() { var tagsinput = $(this).data('tagsinput'); // Initialize a new tags input if (!tagsinput) { tagsinput = new TagsInput(this, arg1); $(this).data('tagsinput', tagsinput); results.push(tagsinput); if (this.tagName === 'SELECT') { $('option', $(this)).attr('selected', 'selected'); } // Init tags from $(this).val() $(this).val($(this).val()); } else if (!arg1 && !arg2) { // tagsinput already exists // no function, trying to init results.push(tagsinput); } else if(tagsinput[arg1] !== undefined) { // Invoke function on existing tags input if(tagsinput[arg1].length === 3 && arg3 !== undefined){ var retVal = tagsinput[arg1](arg2, null, arg3); }else{ var retVal = tagsinput[arg1](arg2); } if (retVal !== undefined) results.push(retVal); } }); if ( typeof arg1 == 'string') { // Return the results from the invoked function calls return results.length > 1 ? results : results[0]; } else { return results; } }; $.fn.tagsinput.Constructor = TagsInput; /** * Most options support both a string or number as well as a function as * option value. This function makes sure that the option with the given * key in the given options is wrapped in a function */ function makeOptionItemFunction(options, key) { if (typeof options[key] !== 'function') { var propertyName = options[key]; options[key] = function(item) { return item[propertyName]; }; } } function makeOptionFunction(options, key) { if (typeof options[key] !== 'function') { var value = options[key]; options[key] = function() { return value; }; } } /** * HtmlEncodes the given value */ var htmlEncodeContainer = $('<div />'); function htmlEncode(value) { if (value) { return htmlEncodeContainer.text(value).html(); } else { return ''; } } /** * Returns the position of the caret in the given input field * http://flightschool.acylt.com/devnotes/caret-position-woes/ */ function doGetCaretPosition(oField) { var iCaretPos = 0; if (document.selection) { oField.focus (); var oSel = document.selection.createRange(); oSel.moveStart ('character', -oField.value.length); iCaretPos = oSel.text.length; } else if (oField.selectionStart || oField.selectionStart == '0') { iCaretPos = oField.selectionStart; } return (iCaretPos); } /** * Returns boolean indicates whether user has pressed an expected key combination. * @param object keyPressEvent: JavaScript event object, refer * http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html * @param object lookupList: expected key combinations, as in: * [13, {which: 188, shiftKey: true}] */ function keyCombinationInList(keyPressEvent, lookupList) { var found = false; $.each(lookupList, function (index, keyCombination) { if (typeof (keyCombination) === 'number' && keyPressEvent.which === keyCombination) { found = true; return false; } if (keyPressEvent.which === keyCombination.which) { var alt = !keyCombination.hasOwnProperty('altKey') || keyPressEvent.altKey === keyCombination.altKey, shift = !keyCombination.hasOwnProperty('shiftKey') || keyPressEvent.shiftKey === keyCombination.shiftKey, ctrl = !keyCombination.hasOwnProperty('ctrlKey') || keyPressEvent.ctrlKey === keyCombination.ctrlKey; if (alt && shift && ctrl) { found = true; return false; } } }); return found; } /** * Initialize tagsinput behaviour on inputs and selects which have * data-role=tagsinput */ $(function() { $("input[data-role=tagsinput], select[multiple][data-role=tagsinput]").tagsinput(); }); })(window.jQuery); PK Oz�\~��� � bootstrap-tagsinput-angular.jsnu �[��� angular.module('bootstrap-tagsinput', []) .directive('bootstrapTagsinput', [function() { function getItemProperty(scope, property) { if (!property) return undefined; if (angular.isFunction(scope.$parent[property])) return scope.$parent[property]; return function(item) { return item[property]; }; } return { restrict: 'EA', scope: { model: '=ngModel' }, template: '<select multiple></select>', replace: false, link: function(scope, element, attrs) { $(function() { if (!angular.isArray(scope.model)) scope.model = []; var select = $('select', element); var typeaheadSourceArray = attrs.typeaheadSource ? attrs.typeaheadSource.split('.') : null; var typeaheadSource = typeaheadSourceArray ? (typeaheadSourceArray.length > 1 ? scope.$parent[typeaheadSourceArray[0]][typeaheadSourceArray[1]] : scope.$parent[typeaheadSourceArray[0]]) : null; select.tagsinput(scope.$parent[attrs.options || ''] || { typeahead : { source : angular.isFunction(typeaheadSource) ? typeaheadSource : null }, itemValue: getItemProperty(scope, attrs.itemvalue), itemText : getItemProperty(scope, attrs.itemtext), confirmKeys : getItemProperty(scope, attrs.confirmkeys) ? JSON.parse(attrs.confirmkeys) : [13], tagClass : angular.isFunction(scope.$parent[attrs.tagclass]) ? scope.$parent[attrs.tagclass] : function(item) { return attrs.tagclass; } }); for (var i = 0; i < scope.model.length; i++) { select.tagsinput('add', scope.model[i]); } select.on('itemAdded', function(event) { if (scope.model.indexOf(event.item) === -1) scope.model.push(event.item); }); select.on('itemRemoved', function(event) { var idx = scope.model.indexOf(event.item); if (idx !== -1) scope.model.splice(idx, 1); }); // create a shallow copy of model's current state, needed to determine // diff when model changes var prev = scope.model.slice(); scope.$watch("model", function() { var added = scope.model.filter(function(i) {return prev.indexOf(i) === -1;}), removed = prev.filter(function(i) {return scope.model.indexOf(i) === -1;}), i; prev = scope.model.slice(); // Remove tags no longer in binded model for (i = 0; i < removed.length; i++) { select.tagsinput('remove', removed[i]); } // Refresh remaining tags select.tagsinput('refresh'); // Add new items in model as tags for (i = 0; i < added.length; i++) { select.tagsinput('add', added[i]); } }, true); }); } }; }]); PK Oz�\�ȧE ! bootstrap-tagsinput-typeahead.cssnu �[��� .twitter-typeahead .tt-query, .twitter-typeahead .tt-hint { margin-bottom: 0; } .twitter-typeahead .tt-hint { display: none; } .tt-menu { position: absolute; top: 100%; left: 0; z-index: 1000; display: none; float: left; min-width: 160px; padding: 5px 0; margin: 2px 0 0; list-style: none; font-size: 14px; background-color: #ffffff; border: 1px solid #cccccc; border: 1px solid rgba(0, 0, 0, 0.15); border-radius: 4px; -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175); background-clip: padding-box; cursor: pointer; } .tt-suggestion { display: block; padding: 3px 20px; clear: both; font-weight: normal; line-height: 1.428571429; color: #333333; white-space: nowrap; } .tt-suggestion:hover, .tt-suggestion:focus { color: #ffffff; text-decoration: none; outline: 0; background-color: #428bca; } PK Oz�\7�4�\ \ bootstrap-tagsinput.cssnu �[��� .bootstrap-tagsinput { background-color: #fff; border: 1px solid #ccc; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); display: inline-block; padding: 4px 6px; color: #555; vertical-align: middle; border-radius: 4px; max-width: 100%; line-height: 22px; cursor: text; } .bootstrap-tagsinput input { border: none; box-shadow: none; outline: none; background-color: transparent; padding: 0 6px; margin: 0; width: auto; max-width: inherit; } .bootstrap-tagsinput.form-control input::-moz-placeholder { color: #777; opacity: 1; } .bootstrap-tagsinput.form-control input:-ms-input-placeholder { color: #777; } .bootstrap-tagsinput.form-control input::-webkit-input-placeholder { color: #777; } .bootstrap-tagsinput input:focus { border: none; box-shadow: none; } .bootstrap-tagsinput .tag { margin-right: 2px; color: white; } .bootstrap-tagsinput .tag [data-role="remove"] { margin-left: 8px; cursor: pointer; } .bootstrap-tagsinput .tag [data-role="remove"]:after { content: "x"; padding: 0px 2px; } .bootstrap-tagsinput .tag [data-role="remove"]:hover { box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05); } .bootstrap-tagsinput .tag [data-role="remove"]:hover:active { box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125); } PK �z�\bD6Q� � size.jsnu �[��� import CLASS from './class'; import { ChartInternal } from './core'; import { isValue, ceil10 } from './util'; ChartInternal.prototype.getCurrentWidth = function () { var $$ = this, config = $$.config; return config.size_width ? config.size_width : $$.getParentWidth(); }; ChartInternal.prototype.getCurrentHeight = function () { var $$ = this, config = $$.config, h = config.size_height ? config.size_height : $$.getParentHeight(); return h > 0 ? h : 320 / ($$.hasType('gauge') && !config.gauge_fullCircle ? 2 : 1); }; ChartInternal.prototype.getCurrentPaddingTop = function () { var $$ = this, config = $$.config, padding = isValue(config.padding_top) ? config.padding_top : 0; if ($$.title && $$.title.node()) { padding += $$.getTitlePadding(); } return padding; }; ChartInternal.prototype.getCurrentPaddingBottom = function () { var config = this.config; return isValue(config.padding_bottom) ? config.padding_bottom : 0; }; ChartInternal.prototype.getCurrentPaddingLeft = function (withoutRecompute) { var $$ = this, config = $$.config; if (isValue(config.padding_left)) { return config.padding_left; } else if (config.axis_rotated) { return (!config.axis_x_show || config.axis_x_inner) ? 1 : Math.max(ceil10($$.getAxisWidthByAxisId('x', withoutRecompute)), 40); } else if (!config.axis_y_show || config.axis_y_inner) { // && !config.axis_rotated return $$.axis.getYAxisLabelPosition().isOuter ? 30 : 1; } else { return ceil10($$.getAxisWidthByAxisId('y', withoutRecompute)); } }; ChartInternal.prototype.getCurrentPaddingRight = function () { var $$ = this, config = $$.config, defaultPadding = 10, legendWidthOnRight = $$.isLegendRight ? $$.getLegendWidth() + 20 : 0; if (isValue(config.padding_right)) { return config.padding_right + 1; // 1 is needed not to hide tick line } else if (config.axis_rotated) { return defaultPadding + legendWidthOnRight; } else if (!config.axis_y2_show || config.axis_y2_inner) { // && !config.axis_rotated return 2 + legendWidthOnRight + ($$.axis.getY2AxisLabelPosition().isOuter ? 20 : 0); } else { return ceil10($$.getAxisWidthByAxisId('y2')) + legendWidthOnRight; } }; ChartInternal.prototype.getParentRectValue = function (key) { var parent = this.selectChart.node(), v; while (parent && parent.tagName !== 'BODY') { try { v = parent.getBoundingClientRect()[key]; } catch(e) { if (key === 'width') { // In IE in certain cases getBoundingClientRect // will cause an "unspecified error" v = parent.offsetWidth; } } if (v) { break; } parent = parent.parentNode; } return v; }; ChartInternal.prototype.getParentWidth = function () { return this.getParentRectValue('width'); }; ChartInternal.prototype.getParentHeight = function () { var h = this.selectChart.style('height'); return h.indexOf('px') > 0 ? +h.replace('px', '') : 0; }; ChartInternal.prototype.getSvgLeft = function (withoutRecompute) { var $$ = this, config = $$.config, hasLeftAxisRect = config.axis_rotated || (!config.axis_rotated && !config.axis_y_inner), leftAxisClass = config.axis_rotated ? CLASS.axisX : CLASS.axisY, leftAxis = $$.main.select('.' + leftAxisClass).node(), svgRect = leftAxis && hasLeftAxisRect ? leftAxis.getBoundingClientRect() : {right: 0}, chartRect = $$.selectChart.node().getBoundingClientRect(), hasArc = $$.hasArcType(), svgLeft = svgRect.right - chartRect.left - (hasArc ? 0 : $$.getCurrentPaddingLeft(withoutRecompute)); return svgLeft > 0 ? svgLeft : 0; }; ChartInternal.prototype.getAxisWidthByAxisId = function (id, withoutRecompute) { var $$ = this, position = $$.axis.getLabelPositionById(id); return $$.axis.getMaxTickWidth(id, withoutRecompute) + (position.isInner ? 20 : 40); }; ChartInternal.prototype.getHorizontalAxisHeight = function (axisId) { var $$ = this, config = $$.config, h = 30; if (axisId === 'x' && !config.axis_x_show) { return 8; } if (axisId === 'x' && config.axis_x_height) { return config.axis_x_height; } if (axisId === 'y' && !config.axis_y_show) { return config.legend_show && !$$.isLegendRight && !$$.isLegendInset ? 10 : 1; } if (axisId === 'y2' && !config.axis_y2_show) { return $$.rotated_padding_top; } // Calculate x axis height when tick rotated if (axisId === 'x' && !config.axis_rotated && config.axis_x_tick_rotate) { h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_x_tick_rotate)) / 180); } // Calculate y axis height when tick rotated if (axisId === 'y' && config.axis_rotated && config.axis_y_tick_rotate) { h = 30 + $$.axis.getMaxTickWidth(axisId) * Math.cos(Math.PI * (90 - Math.abs(config.axis_y_tick_rotate)) / 180); } return h + ($$.axis.getLabelPositionById(axisId).isInner ? 0 : 10) + (axisId === 'y2' ? -10 : 0); }; PK �z�\F/[� � y.jsnu �[��� export function defaultY(d) { return d[1]; } export default function(_) { return arguments.length ? (this._y = _, this) : this._y; } PK �z�\�Ҧ� � add.jsnu �[��� export default function(d) { var x = +this._x.call(null, d), y = +this._y.call(null, d); return add(this.cover(x, y), x, y, d); } function add(tree, x, y, d) { if (isNaN(x) || isNaN(y)) return tree; // ignore invalid points var parent, node = tree._root, leaf = {data: d}, x0 = tree._x0, y0 = tree._y0, x1 = tree._x1, y1 = tree._y1, xm, ym, xp, yp, right, bottom, i, j; // If the tree is empty, initialize the root as a leaf. if (!node) return tree._root = leaf, tree; // Find the existing leaf for the new point, or add it. while (node.length) { if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; if (parent = node, !(node = node[i = bottom << 1 | right])) return parent[i] = leaf, tree; } // Is the new point is exactly coincident with the existing point? xp = +tree._x.call(null, node.data); yp = +tree._y.call(null, node.data); if (x === xp && y === yp) return leaf.next = node, parent ? parent[i] = leaf : tree._root = leaf, tree; // Otherwise, split the leaf node until the old and new point are separated. do { parent = parent ? parent[i] = new Array(4) : tree._root = new Array(4); if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; } while ((i = bottom << 1 | right) === (j = (yp >= ym) << 1 | (xp >= xm))); return parent[j] = node, parent[i] = leaf, tree; } export function addAll(data) { var d, i, n = data.length, x, y, xz = new Array(n), yz = new Array(n), x0 = Infinity, y0 = Infinity, x1 = -Infinity, y1 = -Infinity; // Compute the points and their extent. for (i = 0; i < n; ++i) { if (isNaN(x = +this._x.call(null, d = data[i])) || isNaN(y = +this._y.call(null, d))) continue; xz[i] = x; yz[i] = y; if (x < x0) x0 = x; if (x > x1) x1 = x; if (y < y0) y0 = y; if (y > y1) y1 = y; } // If there were no (valid) points, inherit the existing extent. if (x1 < x0) x0 = this._x0, x1 = this._x1; if (y1 < y0) y0 = this._y0, y1 = this._y1; // Expand the tree to cover the new points. this.cover(x0, y0).cover(x1, y1); // Add the new points. for (i = 0; i < n; ++i) { add(this, xz[i], yz[i], data[i]); } return this; } PK �z�\�wcf f quadtree.jsnu �[��� import tree_add, {addAll as tree_addAll} from "./add"; import tree_cover from "./cover"; import tree_data from "./data"; import tree_extent from "./extent"; import tree_find from "./find"; import tree_remove, {removeAll as tree_removeAll} from "./remove"; import tree_root from "./root"; import tree_size from "./size"; import tree_visit from "./visit"; import tree_visitAfter from "./visitAfter"; import tree_x, {defaultX} from "./x"; import tree_y, {defaultY} from "./y"; export default function quadtree(nodes, x, y) { var tree = new Quadtree(x == null ? defaultX : x, y == null ? defaultY : y, NaN, NaN, NaN, NaN); return nodes == null ? tree : tree.addAll(nodes); } function Quadtree(x, y, x0, y0, x1, y1) { this._x = x; this._y = y; this._x0 = x0; this._y0 = y0; this._x1 = x1; this._y1 = y1; this._root = undefined; } function leaf_copy(leaf) { var copy = {data: leaf.data}, next = copy; while (leaf = leaf.next) next = next.next = {data: leaf.data}; return copy; } var treeProto = quadtree.prototype = Quadtree.prototype; treeProto.copy = function() { var copy = new Quadtree(this._x, this._y, this._x0, this._y0, this._x1, this._y1), node = this._root, nodes, child; if (!node) return copy; if (!node.length) return copy._root = leaf_copy(node), copy; nodes = [{source: node, target: copy._root = new Array(4)}]; while (node = nodes.pop()) { for (var i = 0; i < 4; ++i) { if (child = node.source[i]) { if (child.length) nodes.push({source: child, target: node.target[i] = new Array(4)}); else node.target[i] = leaf_copy(child); } } } return copy; }; treeProto.add = tree_add; treeProto.addAll = tree_addAll; treeProto.cover = tree_cover; treeProto.data = tree_data; treeProto.extent = tree_extent; treeProto.find = tree_find; treeProto.remove = tree_remove; treeProto.removeAll = tree_removeAll; treeProto.root = tree_root; treeProto.size = tree_size; treeProto.visit = tree_visit; treeProto.visitAfter = tree_visitAfter; treeProto.x = tree_x; treeProto.y = tree_y; PK �z�\K��� visitAfter.jsnu �[��� import Quad from "./quad"; export default function(callback) { var quads = [], next = [], q; if (this._root) quads.push(new Quad(this._root, this._x0, this._y0, this._x1, this._y1)); while (q = quads.pop()) { var node = q.node; if (node.length) { var child, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1, xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); } next.push(q); } while (q = next.pop()) { callback(q.node, q.x0, q.y0, q.x1, q.y1); } return this; } PK �z�\�'۰� � quad.jsnu �[��� export default function(node, x0, y0, x1, y1) { this.node = node; this.x0 = x0; this.y0 = y0; this.x1 = x1; this.y1 = y1; } PK �z�\ 5[� � remove.jsnu �[��� export default function(d) { if (isNaN(x = +this._x.call(null, d)) || isNaN(y = +this._y.call(null, d))) return this; // ignore invalid points var parent, node = this._root, retainer, previous, next, x0 = this._x0, y0 = this._y0, x1 = this._x1, y1 = this._y1, x, y, xm, ym, right, bottom, i, j; // If the tree is empty, initialize the root as a leaf. if (!node) return this; // Find the leaf node for the point. // While descending, also retain the deepest parent with a non-removed sibling. if (node.length) while (true) { if (right = x >= (xm = (x0 + x1) / 2)) x0 = xm; else x1 = xm; if (bottom = y >= (ym = (y0 + y1) / 2)) y0 = ym; else y1 = ym; if (!(parent = node, node = node[i = bottom << 1 | right])) return this; if (!node.length) break; if (parent[(i + 1) & 3] || parent[(i + 2) & 3] || parent[(i + 3) & 3]) retainer = parent, j = i; } // Find the point to remove. while (node.data !== d) if (!(previous = node, node = node.next)) return this; if (next = node.next) delete node.next; // If there are multiple coincident points, remove just the point. if (previous) return (next ? previous.next = next : delete previous.next), this; // If this is the root point, remove it. if (!parent) return this._root = next, this; // Remove this leaf. next ? parent[i] = next : delete parent[i]; // If the parent now contains exactly one leaf, collapse superfluous parents. if ((node = parent[0] || parent[1] || parent[2] || parent[3]) && node === (parent[3] || parent[2] || parent[1] || parent[0]) && !node.length) { if (retainer) retainer[j] = node; else this._root = node; } return this; } export function removeAll(data) { for (var i = 0, n = data.length; i < n; ++i) this.remove(data[i]); return this; } PK �z�\ �$"� � extent.jsnu �[��� export default function(values, valueof) { var n = values.length, i = -1, value, min, max; if (valueof == null) { while (++i < n) { // Find the first comparable value. if ((value = values[i]) != null && value >= value) { min = max = value; while (++i < n) { // Compare the remaining values. if ((value = values[i]) != null) { if (min > value) min = value; if (max < value) max = value; } } } } } else { while (++i < n) { // Find the first comparable value. if ((value = valueof(values[i], i, values)) != null && value >= value) { min = max = value; while (++i < n) { // Compare the remaining values. if ((value = valueof(values[i], i, values)) != null) { if (min > value) min = value; if (max < value) max = value; } } } } } return [min, max]; } PK �z�\Y�� 6 6 root.jsnu �[��� export default function() { return this._root; } PK �z�\Z�ё � x.jsnu �[��� export function defaultX(d) { return d[0]; } export default function(_) { return arguments.length ? (this._x = _, this) : this._x; } PK �z�\s7��� � cover.jsnu �[��� export default function(x, y) { if (isNaN(x = +x) || isNaN(y = +y)) return this; // ignore invalid points var x0 = this._x0, y0 = this._y0, x1 = this._x1, y1 = this._y1; // If the quadtree has no extent, initialize them. // Integer extent are necessary so that if we later double the extent, // the existing quadrant boundaries don’t change due to floating point error! if (isNaN(x0)) { x1 = (x0 = Math.floor(x)) + 1; y1 = (y0 = Math.floor(y)) + 1; } // Otherwise, double repeatedly to cover. else if (x0 > x || x > x1 || y0 > y || y > y1) { var z = x1 - x0, node = this._root, parent, i; switch (i = (y < (y0 + y1) / 2) << 1 | (x < (x0 + x1) / 2)) { case 0: { do parent = new Array(4), parent[i] = node, node = parent; while (z *= 2, x1 = x0 + z, y1 = y0 + z, x > x1 || y > y1); break; } case 1: { do parent = new Array(4), parent[i] = node, node = parent; while (z *= 2, x0 = x1 - z, y1 = y0 + z, x0 > x || y > y1); break; } case 2: { do parent = new Array(4), parent[i] = node, node = parent; while (z *= 2, x1 = x0 + z, y0 = y1 - z, x > x1 || y0 > y); break; } case 3: { do parent = new Array(4), parent[i] = node, node = parent; while (z *= 2, x0 = x1 - z, y0 = y1 - z, x0 > x || y0 > y); break; } } if (this._root && this._root.length) this._root = node; } // If the quadtree covers the point already, just return. else return this; this._x0 = x0; this._y0 = y0; this._x1 = x1; this._y1 = y1; return this; } PK �z�\V�=� � find.jsnu �[��� import Quad from "./quad"; export default function(x, y, radius) { var data, x0 = this._x0, y0 = this._y0, x1, y1, x2, y2, x3 = this._x1, y3 = this._y1, quads = [], node = this._root, q, i; if (node) quads.push(new Quad(node, x0, y0, x3, y3)); if (radius == null) radius = Infinity; else { x0 = x - radius, y0 = y - radius; x3 = x + radius, y3 = y + radius; radius *= radius; } while (q = quads.pop()) { // Stop searching if this quadrant can’t contain a closer node. if (!(node = q.node) || (x1 = q.x0) > x3 || (y1 = q.y0) > y3 || (x2 = q.x1) < x0 || (y2 = q.y1) < y0) continue; // Bisect the current quadrant. if (node.length) { var xm = (x1 + x2) / 2, ym = (y1 + y2) / 2; quads.push( new Quad(node[3], xm, ym, x2, y2), new Quad(node[2], x1, ym, xm, y2), new Quad(node[1], xm, y1, x2, ym), new Quad(node[0], x1, y1, xm, ym) ); // Visit the closest quadrant first. if (i = (y >= ym) << 1 | (x >= xm)) { q = quads[quads.length - 1]; quads[quads.length - 1] = quads[quads.length - 1 - i]; quads[quads.length - 1 - i] = q; } } // Visit this point. (Visiting coincident points isn’t necessary!) else { var dx = x - +this._x.call(null, node.data), dy = y - +this._y.call(null, node.data), d2 = dx * dx + dy * dy; if (d2 < radius) { var d = Math.sqrt(radius = d2); x0 = x - d, y0 = y - d; x3 = x + d, y3 = y + d; data = node.data; } } } return data; } PK �z�\ `~� � data.jsnu �[��� define( [ "./core", "./core/access", "./core/camelCase", "./data/var/dataPriv", "./data/var/dataUser" ], function( jQuery, access, camelCase, dataPriv, dataUser ) { "use strict"; // Implementation Summary // // 1. Enforce API surface and semantic compatibility with 1.9.x branch // 2. Improve the module's maintainability by reducing the storage // paths to a single mechanism. // 3. Use the same single mechanism to support "private" and "user" data. // 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) // 5. Avoid exposing implementation details on user objects (eg. expando properties) // 6. Provide a clear path for implementation upgrade to WeakMap in 2014 var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, rmultiDash = /[A-Z]/g; function getData( data ) { if ( data === "true" ) { return true; } if ( data === "false" ) { return false; } if ( data === "null" ) { return null; } // Only convert to a number if it doesn't change the string if ( data === +data + "" ) { return +data; } if ( rbrace.test( data ) ) { return JSON.parse( data ); } return data; } function dataAttr( elem, key, data ) { var name; // If nothing was found internally, try to fetch any // data from the HTML5 data-* attribute if ( data === undefined && elem.nodeType === 1 ) { name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); data = elem.getAttribute( name ); if ( typeof data === "string" ) { try { data = getData( data ); } catch ( e ) {} // Make sure we set the data so it isn't changed later dataUser.set( elem, key, data ); } else { data = undefined; } } return data; } jQuery.extend( { hasData: function( elem ) { return dataUser.hasData( elem ) || dataPriv.hasData( elem ); }, data: function( elem, name, data ) { return dataUser.access( elem, name, data ); }, removeData: function( elem, name ) { dataUser.remove( elem, name ); }, // TODO: Now that all calls to _data and _removeData have been replaced // with direct calls to dataPriv methods, these can be deprecated. _data: function( elem, name, data ) { return dataPriv.access( elem, name, data ); }, _removeData: function( elem, name ) { dataPriv.remove( elem, name ); } } ); jQuery.fn.extend( { data: function( key, value ) { var i, name, data, elem = this[ 0 ], attrs = elem && elem.attributes; // Gets all values if ( key === undefined ) { if ( this.length ) { data = dataUser.get( elem ); if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { i = attrs.length; while ( i-- ) { // Support: IE 11 only // The attrs elements can be null (#14894) if ( attrs[ i ] ) { name = attrs[ i ].name; if ( name.indexOf( "data-" ) === 0 ) { name = camelCase( name.slice( 5 ) ); dataAttr( elem, name, data[ name ] ); } } } dataPriv.set( elem, "hasDataAttrs", true ); } } return data; } // Sets multiple values if ( typeof key === "object" ) { return this.each( function() { dataUser.set( this, key ); } ); } return access( this, function( value ) { var data; // The calling jQuery object (element matches) is not empty // (and therefore has an element appears at this[ 0 ]) and the // `value` parameter was not undefined. An empty jQuery object // will result in `undefined` for elem = this[ 0 ] which will // throw an exception if an attempt to read a data cache is made. if ( elem && value === undefined ) { // Attempt to get data from the cache // The key will always be camelCased in Data data = dataUser.get( elem, key ); if ( data !== undefined ) { return data; } // Attempt to "discover" the data in // HTML5 custom data-* attrs data = dataAttr( elem, key ); if ( data !== undefined ) { return data; } // We tried really hard, but the data doesn't exist. return; } // Set the data... this.each( function() { // We always store the camelCased key dataUser.set( this, key, value ); } ); }, null, value, arguments.length > 1, null, true ); }, removeData: function( key ) { return this.each( function() { dataUser.remove( this, key ); } ); } } ); return jQuery; } ); PK �z�\���� � visit.jsnu �[��� import Quad from "./quad"; export default function(callback) { var quads = [], q, node = this._root, child, x0, y0, x1, y1; if (node) quads.push(new Quad(node, this._x0, this._y0, this._x1, this._y1)); while (q = quads.pop()) { if (!callback(node = q.node, x0 = q.x0, y0 = q.y0, x1 = q.x1, y1 = q.y1) && node.length) { var xm = (x0 + x1) / 2, ym = (y0 + y1) / 2; if (child = node[3]) quads.push(new Quad(child, xm, ym, x1, y1)); if (child = node[2]) quads.push(new Quad(child, x0, ym, xm, y1)); if (child = node[1]) quads.push(new Quad(child, xm, y0, x1, ym)); if (child = node[0]) quads.push(new Quad(child, x0, y0, xm, ym)); } } return this; } PK �z�\����� � path.jsnu �[��� var pi = Math.PI, tau = 2 * pi, epsilon = 1e-6, tauEpsilon = tau - epsilon; function Path() { this._x0 = this._y0 = // start of current subpath this._x1 = this._y1 = null; // end of current subpath this._ = ""; } function path() { return new Path; } Path.prototype = path.prototype = { constructor: Path, moveTo: function(x, y) { this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y); }, closePath: function() { if (this._x1 !== null) { this._x1 = this._x0, this._y1 = this._y0; this._ += "Z"; } }, lineTo: function(x, y) { this._ += "L" + (this._x1 = +x) + "," + (this._y1 = +y); }, quadraticCurveTo: function(x1, y1, x, y) { this._ += "Q" + (+x1) + "," + (+y1) + "," + (this._x1 = +x) + "," + (this._y1 = +y); }, bezierCurveTo: function(x1, y1, x2, y2, x, y) { this._ += "C" + (+x1) + "," + (+y1) + "," + (+x2) + "," + (+y2) + "," + (this._x1 = +x) + "," + (this._y1 = +y); }, arcTo: function(x1, y1, x2, y2, r) { x1 = +x1, y1 = +y1, x2 = +x2, y2 = +y2, r = +r; var x0 = this._x1, y0 = this._y1, x21 = x2 - x1, y21 = y2 - y1, x01 = x0 - x1, y01 = y0 - y1, l01_2 = x01 * x01 + y01 * y01; // Is the radius negative? Error. if (r < 0) throw new Error("negative radius: " + r); // Is this path empty? Move to (x1,y1). if (this._x1 === null) { this._ += "M" + (this._x1 = x1) + "," + (this._y1 = y1); } // Or, is (x1,y1) coincident with (x0,y0)? Do nothing. else if (!(l01_2 > epsilon)); // Or, are (x0,y0), (x1,y1) and (x2,y2) collinear? // Equivalently, is (x1,y1) coincident with (x2,y2)? // Or, is the radius zero? Line to (x1,y1). else if (!(Math.abs(y01 * x21 - y21 * x01) > epsilon) || !r) { this._ += "L" + (this._x1 = x1) + "," + (this._y1 = y1); } // Otherwise, draw an arc! else { var x20 = x2 - x0, y20 = y2 - y0, l21_2 = x21 * x21 + y21 * y21, l20_2 = x20 * x20 + y20 * y20, l21 = Math.sqrt(l21_2), l01 = Math.sqrt(l01_2), l = r * Math.tan((pi - Math.acos((l21_2 + l01_2 - l20_2) / (2 * l21 * l01))) / 2), t01 = l / l01, t21 = l / l21; // If the start tangent is not coincident with (x0,y0), line to. if (Math.abs(t01 - 1) > epsilon) { this._ += "L" + (x1 + t01 * x01) + "," + (y1 + t01 * y01); } this._ += "A" + r + "," + r + ",0,0," + (+(y01 * x20 > x01 * y20)) + "," + (this._x1 = x1 + t21 * x21) + "," + (this._y1 = y1 + t21 * y21); } }, arc: function(x, y, r, a0, a1, ccw) { x = +x, y = +y, r = +r; var dx = r * Math.cos(a0), dy = r * Math.sin(a0), x0 = x + dx, y0 = y + dy, cw = 1 ^ ccw, da = ccw ? a0 - a1 : a1 - a0; // Is the radius negative? Error. if (r < 0) throw new Error("negative radius: " + r); // Is this path empty? Move to (x0,y0). if (this._x1 === null) { this._ += "M" + x0 + "," + y0; } // Or, is (x0,y0) not coincident with the previous point? Line to (x0,y0). else if (Math.abs(this._x1 - x0) > epsilon || Math.abs(this._y1 - y0) > epsilon) { this._ += "L" + x0 + "," + y0; } // Is this arc empty? We’re done. if (!r) return; // Does the angle go the wrong way? Flip the direction. if (da < 0) da = da % tau + tau; // Is this a complete circle? Draw two arcs to complete the circle. if (da > tauEpsilon) { this._ += "A" + r + "," + r + ",0,1," + cw + "," + (x - dx) + "," + (y - dy) + "A" + r + "," + r + ",0,1," + cw + "," + (this._x1 = x0) + "," + (this._y1 = y0); } // Is this arc non-empty? Draw an arc! else if (da > epsilon) { this._ += "A" + r + "," + r + ",0," + (+(da >= pi)) + "," + cw + "," + (this._x1 = x + r * Math.cos(a1)) + "," + (this._y1 = y + r * Math.sin(a1)); } }, rect: function(x, y, w, h) { this._ += "M" + (this._x0 = this._x1 = +x) + "," + (this._y0 = this._y1 = +y) + "h" + (+w) + "v" + (+h) + "h" + (-w) + "Z"; }, toString: function() { return this._; } }; export default path; PK �z�\�]�� �� js/tempusdominus-bootstrap-4.jsnu �[��� //noinspection JSUnusedGlobalSymbols /* global DateTimePicker */ const TempusDominusBootstrap4 = ($ => { // eslint-disable-line no-unused-vars // ReSharper disable once InconsistentNaming const JQUERY_NO_CONFLICT = $.fn[DateTimePicker.NAME], verticalModes = ['top', 'bottom', 'auto'], horizontalModes = ['left', 'right', 'auto'], toolbarPlacements = ['default', 'top', 'bottom'], getSelectorFromElement = function ($element) { let selector = $element.data('target'), $selector; if (!selector) { selector = $element.attr('href') || ''; selector = /^#[a-z]/i.test(selector) ? selector : null; } $selector = $(selector); if ($selector.length === 0) { return $selector; } if (!$selector.data(DateTimePicker.DATA_KEY)) { $.extend({}, $selector.data(), $(this).data()); } return $selector; }; // ReSharper disable once InconsistentNaming class TempusDominusBootstrap4 extends DateTimePicker { constructor(element, options) { super(element, options); this._init(); } _init() { if (this._element.hasClass('input-group')) { const datepickerButton = this._element.find('.datepickerbutton'); if (datepickerButton.length === 0) { this.component = this._element.find('[data-toggle="datetimepicker"]'); } else { this.component = datepickerButton; } } } _getDatePickerTemplate() { const headTemplate = $('<thead>').append($('<tr>').append($('<th>').addClass('prev').attr('data-action', 'previous').append($('<span>').addClass(this._options.icons.previous))).append($('<th>').addClass('picker-switch').attr('data-action', 'pickerSwitch').attr('colspan', `${this._options.calendarWeeks ? '6' : '5'}`)).append($('<th>').addClass('next').attr('data-action', 'next').append($('<span>').addClass(this._options.icons.next)))), contTemplate = $('<tbody>').append($('<tr>').append($('<td>').attr('colspan', `${this._options.calendarWeeks ? '8' : '7'}`))); return [$('<div>').addClass('datepicker-days').append($('<table>').addClass('table table-sm').append(headTemplate).append($('<tbody>'))), $('<div>').addClass('datepicker-months').append($('<table>').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone())), $('<div>').addClass('datepicker-years').append($('<table>').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone())), $('<div>').addClass('datepicker-decades').append($('<table>').addClass('table-condensed').append(headTemplate.clone()).append(contTemplate.clone()))]; } _getTimePickerMainTemplate() { const topRow = $('<tr>'), middleRow = $('<tr>'), bottomRow = $('<tr>'); if (this._isEnabled('h')) { topRow.append($('<td>').append($('<a>').attr({ href: '#', tabindex: '-1', 'title': this._options.tooltips.incrementHour }).addClass('btn').attr('data-action', 'incrementHours').append($('<span>').addClass(this._options.icons.up)))); middleRow.append($('<td>').append($('<span>').addClass('timepicker-hour').attr({ 'data-time-component': 'hours', 'title': this._options.tooltips.pickHour }).attr('data-action', 'showHours'))); bottomRow.append($('<td>').append($('<a>').attr({ href: '#', tabindex: '-1', 'title': this._options.tooltips.decrementHour }).addClass('btn').attr('data-action', 'decrementHours').append($('<span>').addClass(this._options.icons.down)))); } if (this._isEnabled('m')) { if (this._isEnabled('h')) { topRow.append($('<td>').addClass('separator')); middleRow.append($('<td>').addClass('separator').html(':')); bottomRow.append($('<td>').addClass('separator')); } topRow.append($('<td>').append($('<a>').attr({ href: '#', tabindex: '-1', 'title': this._options.tooltips.incrementMinute }).addClass('btn').attr('data-action', 'incrementMinutes').append($('<span>').addClass(this._options.icons.up)))); middleRow.append($('<td>').append($('<span>').addClass('timepicker-minute').attr({ 'data-time-component': 'minutes', 'title': this._options.tooltips.pickMinute }).attr('data-action', 'showMinutes'))); bottomRow.append($('<td>').append($('<a>').attr({ href: '#', tabindex: '-1', 'title': this._options.tooltips.decrementMinute }).addClass('btn').attr('data-action', 'decrementMinutes').append($('<span>').addClass(this._options.icons.down)))); } if (this._isEnabled('s')) { if (this._isEnabled('m')) { topRow.append($('<td>').addClass('separator')); middleRow.append($('<td>').addClass('separator').html(':')); bottomRow.append($('<td>').addClass('separator')); } topRow.append($('<td>').append($('<a>').attr({ href: '#', tabindex: '-1', 'title': this._options.tooltips.incrementSecond }).addClass('btn').attr('data-action', 'incrementSeconds').append($('<span>').addClass(this._options.icons.up)))); middleRow.append($('<td>').append($('<span>').addClass('timepicker-second').attr({ 'data-time-component': 'seconds', 'title': this._options.tooltips.pickSecond }).attr('data-action', 'showSeconds'))); bottomRow.append($('<td>').append($('<a>').attr({ href: '#', tabindex: '-1', 'title': this._options.tooltips.decrementSecond }).addClass('btn').attr('data-action', 'decrementSeconds').append($('<span>').addClass(this._options.icons.down)))); } if (!this.use24Hours) { topRow.append($('<td>').addClass('separator')); middleRow.append($('<td>').append($('<button>').addClass('btn btn-primary').attr({ 'data-action': 'togglePeriod', tabindex: '-1', 'title': this._options.tooltips.togglePeriod }))); bottomRow.append($('<td>').addClass('separator')); } return $('<div>').addClass('timepicker-picker').append($('<table>').addClass('table-condensed').append([topRow, middleRow, bottomRow])); } _getTimePickerTemplate() { const hoursView = $('<div>').addClass('timepicker-hours').append($('<table>').addClass('table-condensed')), minutesView = $('<div>').addClass('timepicker-minutes').append($('<table>').addClass('table-condensed')), secondsView = $('<div>').addClass('timepicker-seconds').append($('<table>').addClass('table-condensed')), ret = [this._getTimePickerMainTemplate()]; if (this._isEnabled('h')) { ret.push(hoursView); } if (this._isEnabled('m')) { ret.push(minutesView); } if (this._isEnabled('s')) { ret.push(secondsView); } return ret; } _getToolbar() { const row = []; if (this._options.buttons.showToday) { row.push($('<td>').append($('<a>').attr({ href: '#', tabindex: '-1', 'data-action': 'today', 'title': this._options.tooltips.today }).append($('<span>').addClass(this._options.icons.today)))); } if (!this._options.sideBySide && this._hasDate() && this._hasTime()) { let title, icon; if (this._options.viewMode === 'times') { title = this._options.tooltips.selectDate; icon = this._options.icons.date; } else { title = this._options.tooltips.selectTime; icon = this._options.icons.time; } row.push($('<td>').append($('<a>').attr({ href: '#', tabindex: '-1', 'data-action': 'togglePicker', 'title': title }).append($('<span>').addClass(icon)))); } if (this._options.buttons.showClear) { row.push($('<td>').append($('<a>').attr({ href: '#', tabindex: '-1', 'data-action': 'clear', 'title': this._options.tooltips.clear }).append($('<span>').addClass(this._options.icons.clear)))); } if (this._options.buttons.showClose) { row.push($('<td>').append($('<a>').attr({ href: '#', tabindex: '-1', 'data-action': 'close', 'title': this._options.tooltips.close }).append($('<span>').addClass(this._options.icons.close)))); } return row.length === 0 ? '' : $('<table>').addClass('table-condensed').append($('<tbody>').append($('<tr>').append(row))); } _getTemplate() { const template = $('<div>').addClass('bootstrap-datetimepicker-widget dropdown-menu'), dateView = $('<div>').addClass('datepicker').append(this._getDatePickerTemplate()), timeView = $('<div>').addClass('timepicker').append(this._getTimePickerTemplate()), content = $('<ul>').addClass('list-unstyled'), toolbar = $('<li>').addClass(`picker-switch${this._options.collapse ? ' accordion-toggle' : ''}`).append(this._getToolbar()); if (this._options.inline) { template.removeClass('dropdown-menu'); } if (this.use24Hours) { template.addClass('usetwentyfour'); } if (this._isEnabled('s') && !this.use24Hours) { template.addClass('wider'); } if (this._options.sideBySide && this._hasDate() && this._hasTime()) { template.addClass('timepicker-sbs'); if (this._options.toolbarPlacement === 'top') { template.append(toolbar); } template.append($('<div>').addClass('row').append(dateView.addClass('col-md-6')).append(timeView.addClass('col-md-6'))); if (this._options.toolbarPlacement === 'bottom' || this._options.toolbarPlacement === 'default') { template.append(toolbar); } return template; } if (this._options.toolbarPlacement === 'top') { content.append(toolbar); } if (this._hasDate()) { content.append($('<li>').addClass(this._options.collapse && this._hasTime() ? 'collapse' : '') .addClass((this._options.collapse && this._hasTime() && this._options.viewMode === 'times' ? '' : 'show')) .append(dateView)); } if (this._options.toolbarPlacement === 'default') { content.append(toolbar); } if (this._hasTime()) { content.append($('<li>').addClass(this._options.collapse && this._hasDate() ? 'collapse' : '') .addClass((this._options.collapse && this._hasDate() && this._options.viewMode === 'times' ? 'show' : '')) .append(timeView)); } if (this._options.toolbarPlacement === 'bottom') { content.append(toolbar); } return template.append(content); } _place(e) { let self = (e && e.data && e.data.picker) || this, vertical = self._options.widgetPositioning.vertical, horizontal = self._options.widgetPositioning.horizontal, parent; const position = (self.component && self.component.length ? self.component : self._element).position(), offset = (self.component && self.component.length ? self.component : self._element).offset(); if (self._options.widgetParent) { parent = self._options.widgetParent.append(self.widget); } else if (self._element.is('input')) { parent = self._element.after(self.widget).parent(); } else if (self._options.inline) { parent = self._element.append(self.widget); return; } else { parent = self._element; self._element.children().first().after(self.widget); } // Top and bottom logic if (vertical === 'auto') { //noinspection JSValidateTypes if (offset.top + self.widget.height() * 1.5 >= $(window).height() + $(window).scrollTop() && self.widget.height() + self._element.outerHeight() < offset.top) { vertical = 'top'; } else { vertical = 'bottom'; } } // Left and right logic if (horizontal === 'auto') { if (parent.width() < offset.left + self.widget.outerWidth() / 2 && offset.left + self.widget.outerWidth() > $(window).width()) { horizontal = 'right'; } else { horizontal = 'left'; } } if (vertical === 'top') { self.widget.addClass('top').removeClass('bottom'); } else { self.widget.addClass('bottom').removeClass('top'); } if (horizontal === 'right') { self.widget.addClass('float-right'); } else { self.widget.removeClass('float-right'); } // find the first parent element that has a relative css positioning if (parent.css('position') !== 'relative') { parent = parent.parents().filter(function () { return $(this).css('position') === 'relative'; }).first(); } if (parent.length === 0) { throw new Error('datetimepicker component should be placed within a relative positioned container'); } self.widget.css({ top: vertical === 'top' ? 'auto' : position.top + self._element.outerHeight() + 'px', bottom: vertical === 'top' ? parent.outerHeight() - (parent === self._element ? 0 : position.top) + 'px' : 'auto', left: horizontal === 'left' ? (parent === self._element ? 0 : position.left) + 'px' : 'auto', right: horizontal === 'left' ? 'auto' : parent.outerWidth() - self._element.outerWidth() - (parent === self._element ? 0 : position.left) + 'px' }); } _fillDow() { const row = $('<tr>'), currentDate = this._viewDate.clone().startOf('w').startOf('d'); if (this._options.calendarWeeks === true) { row.append($('<th>').addClass('cw').text('#')); } while (currentDate.isBefore(this._viewDate.clone().endOf('w'))) { row.append($('<th>').addClass('dow').text(currentDate.format('dd'))); currentDate.add(1, 'd'); } this.widget.find('.datepicker-days thead').append(row); } _fillMonths() { const spans = [], monthsShort = this._viewDate.clone().startOf('y').startOf('d'); while (monthsShort.isSame(this._viewDate, 'y')) { spans.push($('<span>').attr('data-action', 'selectMonth').addClass('month').text(monthsShort.format('MMM'))); monthsShort.add(1, 'M'); } this.widget.find('.datepicker-months td').empty().append(spans); } _updateMonths() { const monthsView = this.widget.find('.datepicker-months'), monthsViewHeader = monthsView.find('th'), months = monthsView.find('tbody').find('span'), self = this; monthsViewHeader.eq(0).find('span').attr('title', this._options.tooltips.prevYear); monthsViewHeader.eq(1).attr('title', this._options.tooltips.selectYear); monthsViewHeader.eq(2).find('span').attr('title', this._options.tooltips.nextYear); monthsView.find('.disabled').removeClass('disabled'); if (!this._isValid(this._viewDate.clone().subtract(1, 'y'), 'y')) { monthsViewHeader.eq(0).addClass('disabled'); } monthsViewHeader.eq(1).text(this._viewDate.year()); if (!this._isValid(this._viewDate.clone().add(1, 'y'), 'y')) { monthsViewHeader.eq(2).addClass('disabled'); } months.removeClass('active'); if (this._getLastPickedDate().isSame(this._viewDate, 'y') && !this.unset) { months.eq(this._getLastPickedDate().month()).addClass('active'); } months.each(function (index) { if (!self._isValid(self._viewDate.clone().month(index), 'M')) { $(this).addClass('disabled'); } }); } _getStartEndYear(factor, year) { const step = factor / 10, startYear = Math.floor(year / factor) * factor, endYear = startYear + step * 9, focusValue = Math.floor(year / step) * step; return [startYear, endYear, focusValue]; } _updateYears() { const yearsView = this.widget.find('.datepicker-years'), yearsViewHeader = yearsView.find('th'), yearCaps = this._getStartEndYear(10, this._viewDate.year()), startYear = this._viewDate.clone().year(yearCaps[0]), endYear = this._viewDate.clone().year(yearCaps[1]); let html = ''; yearsViewHeader.eq(0).find('span').attr('title', this._options.tooltips.prevDecade); yearsViewHeader.eq(1).attr('title', this._options.tooltips.selectDecade); yearsViewHeader.eq(2).find('span').attr('title', this._options.tooltips.nextDecade); yearsView.find('.disabled').removeClass('disabled'); if (this._options.minDate && this._options.minDate.isAfter(startYear, 'y')) { yearsViewHeader.eq(0).addClass('disabled'); } yearsViewHeader.eq(1).text(`${startYear.year()}-${endYear.year()}`); if (this._options.maxDate && this._options.maxDate.isBefore(endYear, 'y')) { yearsViewHeader.eq(2).addClass('disabled'); } html += `<span data-action="selectYear" class="year old${!this._isValid(startYear, 'y') ? ' disabled' : ''}">${startYear.year() - 1}</span>`; while (!startYear.isAfter(endYear, 'y')) { html += `<span data-action="selectYear" class="year${startYear.isSame(this._getLastPickedDate(), 'y') && !this.unset ? ' active' : ''}${!this._isValid(startYear, 'y') ? ' disabled' : ''}">${startYear.year()}</span>`; startYear.add(1, 'y'); } html += `<span data-action="selectYear" class="year old${!this._isValid(startYear, 'y') ? ' disabled' : ''}">${startYear.year()}</span>`; yearsView.find('td').html(html); } _updateDecades() { const decadesView = this.widget.find('.datepicker-decades'), decadesViewHeader = decadesView.find('th'), yearCaps = this._getStartEndYear(100, this._viewDate.year()), startDecade = this._viewDate.clone().year(yearCaps[0]), endDecade = this._viewDate.clone().year(yearCaps[1]); let minDateDecade = false, maxDateDecade = false, endDecadeYear, html = ''; decadesViewHeader.eq(0).find('span').attr('title', this._options.tooltips.prevCentury); decadesViewHeader.eq(2).find('span').attr('title', this._options.tooltips.nextCentury); decadesView.find('.disabled').removeClass('disabled'); if (startDecade.year() === 0 || this._options.minDate && this._options.minDate.isAfter(startDecade, 'y')) { decadesViewHeader.eq(0).addClass('disabled'); } decadesViewHeader.eq(1).text(`${startDecade.year()}-${endDecade.year()}`); if (this._options.maxDate && this._options.maxDate.isBefore(endDecade, 'y')) { decadesViewHeader.eq(2).addClass('disabled'); } if (startDecade.year() - 10 < 0) { html += '<span> </span>'; } else { html += `<span data-action="selectDecade" class="decade old" data-selection="${startDecade.year() + 6}">${startDecade.year() - 10}</span>`; } while (!startDecade.isAfter(endDecade, 'y')) { endDecadeYear = startDecade.year() + 11; minDateDecade = this._options.minDate && this._options.minDate.isAfter(startDecade, 'y') && this._options.minDate.year() <= endDecadeYear; maxDateDecade = this._options.maxDate && this._options.maxDate.isAfter(startDecade, 'y') && this._options.maxDate.year() <= endDecadeYear; html += `<span data-action="selectDecade" class="decade${this._getLastPickedDate().isAfter(startDecade) && this._getLastPickedDate().year() <= endDecadeYear ? ' active' : ''}${!this._isValid(startDecade, 'y') && !minDateDecade && !maxDateDecade ? ' disabled' : ''}" data-selection="${startDecade.year() + 6}">${startDecade.year()}</span>`; startDecade.add(10, 'y'); } html += `<span data-action="selectDecade" class="decade old" data-selection="${startDecade.year() + 6}">${startDecade.year()}</span>`; decadesView.find('td').html(html); } _fillDate() { const daysView = this.widget.find('.datepicker-days'), daysViewHeader = daysView.find('th'), html = []; let currentDate, row, clsName, i; if (!this._hasDate()) { return; } daysViewHeader.eq(0).find('span').attr('title', this._options.tooltips.prevMonth); daysViewHeader.eq(1).attr('title', this._options.tooltips.selectMonth); daysViewHeader.eq(2).find('span').attr('title', this._options.tooltips.nextMonth); daysView.find('.disabled').removeClass('disabled'); daysViewHeader.eq(1).text(this._viewDate.format(this._options.dayViewHeaderFormat)); if (!this._isValid(this._viewDate.clone().subtract(1, 'M'), 'M')) { daysViewHeader.eq(0).addClass('disabled'); } if (!this._isValid(this._viewDate.clone().add(1, 'M'), 'M')) { daysViewHeader.eq(2).addClass('disabled'); } currentDate = this._viewDate.clone().startOf('M').startOf('w').startOf('d'); for (i = 0; i < 42; i++) { //always display 42 days (should show 6 weeks) if (currentDate.weekday() === 0) { row = $('<tr>'); if (this._options.calendarWeeks) { row.append(`<td class="cw">${currentDate.week()}</td>`); } html.push(row); } clsName = ''; if (currentDate.isBefore(this._viewDate, 'M')) { clsName += ' old'; } if (currentDate.isAfter(this._viewDate, 'M')) { clsName += ' new'; } if (this._options.allowMultidate) { var index = this._datesFormatted.indexOf(currentDate.format('YYYY-MM-DD')); if (index !== -1) { if (currentDate.isSame(this._datesFormatted[index], 'd') && !this.unset) { clsName += ' active'; } } } else { if (currentDate.isSame(this._getLastPickedDate(), 'd') && !this.unset) { clsName += ' active'; } } if (!this._isValid(currentDate, 'd')) { clsName += ' disabled'; } if (currentDate.isSame(this.getMoment(), 'd')) { clsName += ' today'; } if (currentDate.day() === 0 || currentDate.day() === 6) { clsName += ' weekend'; } row.append(`<td data-action="selectDay" data-day="${currentDate.format('L')}" class="day${clsName}">${currentDate.date()}</td>`); currentDate.add(1, 'd'); } daysView.find('tbody').empty().append(html); this._updateMonths(); this._updateYears(); this._updateDecades(); } _fillHours() { const table = this.widget.find('.timepicker-hours table'), currentHour = this._viewDate.clone().startOf('d'), html = []; let row = $('<tr>'); if (this._viewDate.hour() > 11 && !this.use24Hours) { currentHour.hour(12); } while (currentHour.isSame(this._viewDate, 'd') && (this.use24Hours || this._viewDate.hour() < 12 && currentHour.hour() < 12 || this._viewDate.hour() > 11)) { if (currentHour.hour() % 4 === 0) { row = $('<tr>'); html.push(row); } row.append(`<td data-action="selectHour" class="hour${!this._isValid(currentHour, 'h') ? ' disabled' : ''}">${currentHour.format(this.use24Hours ? 'HH' : 'hh')}</td>`); currentHour.add(1, 'h'); } table.empty().append(html); } _fillMinutes() { const table = this.widget.find('.timepicker-minutes table'), currentMinute = this._viewDate.clone().startOf('h'), html = [], step = this._options.stepping === 1 ? 5 : this._options.stepping; let row = $('<tr>'); while (this._viewDate.isSame(currentMinute, 'h')) { if (currentMinute.minute() % (step * 4) === 0) { row = $('<tr>'); html.push(row); } row.append(`<td data-action="selectMinute" class="minute${!this._isValid(currentMinute, 'm') ? ' disabled' : ''}">${currentMinute.format('mm')}</td>`); currentMinute.add(step, 'm'); } table.empty().append(html); } _fillSeconds() { const table = this.widget.find('.timepicker-seconds table'), currentSecond = this._viewDate.clone().startOf('m'), html = []; let row = $('<tr>'); while (this._viewDate.isSame(currentSecond, 'm')) { if (currentSecond.second() % 20 === 0) { row = $('<tr>'); html.push(row); } row.append(`<td data-action="selectSecond" class="second${!this._isValid(currentSecond, 's') ? ' disabled' : ''}">${currentSecond.format('ss')}</td>`); currentSecond.add(5, 's'); } table.empty().append(html); } _fillTime() { let toggle, newDate; const timeComponents = this.widget.find('.timepicker span[data-time-component]'); if (!this.use24Hours) { toggle = this.widget.find('.timepicker [data-action=togglePeriod]'); newDate = this._getLastPickedDate().clone().add(this._getLastPickedDate().hours() >= 12 ? -12 : 12, 'h'); toggle.text(this._getLastPickedDate().format('A')); if (this._isValid(newDate, 'h')) { toggle.removeClass('disabled'); } else { toggle.addClass('disabled'); } } timeComponents.filter('[data-time-component=hours]').text(this._getLastPickedDate().format(`${this.use24Hours ? 'HH' : 'hh'}`)); timeComponents.filter('[data-time-component=minutes]').text(this._getLastPickedDate().format('mm')); timeComponents.filter('[data-time-component=seconds]').text(this._getLastPickedDate().format('ss')); this._fillHours(); this._fillMinutes(); this._fillSeconds(); } _doAction(e, action) { let lastPicked = this._getLastPickedDate(); if ($(e.currentTarget).is('.disabled')) { return false; } action = action || $(e.currentTarget).data('action'); switch (action) { case 'next': { const navFnc = DateTimePicker.DatePickerModes[this.currentViewMode].NAV_FUNCTION; this._viewDate.add(DateTimePicker.DatePickerModes[this.currentViewMode].NAV_STEP, navFnc); this._fillDate(); this._viewUpdate(navFnc); break; } case 'previous': { const navFnc = DateTimePicker.DatePickerModes[this.currentViewMode].NAV_FUNCTION; this._viewDate.subtract(DateTimePicker.DatePickerModes[this.currentViewMode].NAV_STEP, navFnc); this._fillDate(); this._viewUpdate(navFnc); break; } case 'pickerSwitch': this._showMode(1); break; case 'selectMonth': { const month = $(e.target).closest('tbody').find('span').index($(e.target)); this._viewDate.month(month); if (this.currentViewMode === this.MinViewModeNumber) { this._setValue(lastPicked.clone().year(this._viewDate.year()).month(this._viewDate.month()), this._getLastPickedDateIndex()); if (!this._options.inline) { this.hide(); } } else { this._showMode(-1); this._fillDate(); } this._viewUpdate('M'); break; } case 'selectYear': { const year = parseInt($(e.target).text(), 10) || 0; this._viewDate.year(year); if (this.currentViewMode === this.MinViewModeNumber) { this._setValue(lastPicked.clone().year(this._viewDate.year()), this._getLastPickedDateIndex()); if (!this._options.inline) { this.hide(); } } else { this._showMode(-1); this._fillDate(); } this._viewUpdate('YYYY'); break; } case 'selectDecade': { const year = parseInt($(e.target).data('selection'), 10) || 0; this._viewDate.year(year); if (this.currentViewMode === this.MinViewModeNumber) { this._setValue(lastPicked.clone().year(this._viewDate.year()), this._getLastPickedDateIndex()); if (!this._options.inline) { this.hide(); } } else { this._showMode(-1); this._fillDate(); } this._viewUpdate('YYYY'); break; } case 'selectDay': { const day = this._viewDate.clone(); if ($(e.target).is('.old')) { day.subtract(1, 'M'); } if ($(e.target).is('.new')) { day.add(1, 'M'); } var selectDate = day.date(parseInt($(e.target).text(), 10)), index = 0; if (this._options.allowMultidate) { index = this._datesFormatted.indexOf(selectDate.format('YYYY-MM-DD')); if (index !== -1) { this._setValue(null, index); //deselect multidate } else { this._setValue(selectDate, this._getLastPickedDateIndex() + 1); } } else { this._setValue(selectDate, this._getLastPickedDateIndex()); } if (!this._hasTime() && !this._options.keepOpen && !this._options.inline && !this._options.allowMultidate) { this.hide(); } break; } case 'incrementHours': { const newDate = lastPicked.clone().add(1, 'h'); if (this._isValid(newDate, 'h')) { this._setValue(newDate, this._getLastPickedDateIndex()); } break; } case 'incrementMinutes': { const newDate = lastPicked.clone().add(this._options.stepping, 'm'); if (this._isValid(newDate, 'm')) { this._setValue(newDate, this._getLastPickedDateIndex()); } break; } case 'incrementSeconds': { const newDate = lastPicked.clone().add(1, 's'); if (this._isValid(newDate, 's')) { this._setValue(newDate, this._getLastPickedDateIndex()); } break; } case 'decrementHours': { const newDate = lastPicked.clone().subtract(1, 'h'); if (this._isValid(newDate, 'h')) { this._setValue(newDate, this._getLastPickedDateIndex()); } break; } case 'decrementMinutes': { const newDate = lastPicked.clone().subtract(this._options.stepping, 'm'); if (this._isValid(newDate, 'm')) { this._setValue(newDate, this._getLastPickedDateIndex()); } break; } case 'decrementSeconds': { const newDate = lastPicked.clone().subtract(1, 's'); if (this._isValid(newDate, 's')) { this._setValue(newDate, this._getLastPickedDateIndex()); } break; } case 'togglePeriod': { this._setValue(lastPicked.clone().add(lastPicked.hours() >= 12 ? -12 : 12, 'h'), this._getLastPickedDateIndex()); break; } case 'togglePicker': { const $this = $(e.target), $link = $this.closest('a'), $parent = $this.closest('ul'), expanded = $parent.find('.show'), closed = $parent.find('.collapse:not(.show)'), $span = $this.is('span') ? $this : $this.find('span'); let collapseData; if (expanded && expanded.length) { collapseData = expanded.data('collapse'); if (collapseData && collapseData.transitioning) { return true; } if (expanded.collapse) { // if collapse plugin is available through bootstrap.js then use it expanded.collapse('hide'); closed.collapse('show'); } else { // otherwise just toggle in class on the two views expanded.removeClass('show'); closed.addClass('show'); } $span.toggleClass(this._options.icons.time + ' ' + this._options.icons.date); if ($span.hasClass(this._options.icons.date)) { $link.attr('title', this._options.tooltips.selectDate); } else { $link.attr('title', this._options.tooltips.selectTime); } } } break; case 'showPicker': this.widget.find('.timepicker > div:not(.timepicker-picker)').hide(); this.widget.find('.timepicker .timepicker-picker').show(); break; case 'showHours': this.widget.find('.timepicker .timepicker-picker').hide(); this.widget.find('.timepicker .timepicker-hours').show(); break; case 'showMinutes': this.widget.find('.timepicker .timepicker-picker').hide(); this.widget.find('.timepicker .timepicker-minutes').show(); break; case 'showSeconds': this.widget.find('.timepicker .timepicker-picker').hide(); this.widget.find('.timepicker .timepicker-seconds').show(); break; case 'selectHour': { let hour = parseInt($(e.target).text(), 10); if (!this.use24Hours) { if (lastPicked.hours() >= 12) { if (hour !== 12) { hour += 12; } } else { if (hour === 12) { hour = 0; } } } this._setValue(lastPicked.clone().hours(hour), this._getLastPickedDateIndex()); if (!this._isEnabled('a') && !this._isEnabled('m') && !this._options.keepOpen && !this._options.inline) { this.hide(); } else { this._doAction(e, 'showPicker'); } break; } case 'selectMinute': this._setValue(lastPicked.clone().minutes(parseInt($(e.target).text(), 10)), this._getLastPickedDateIndex()); if (!this._isEnabled('a') && !this._isEnabled('s') && !this._options.keepOpen && !this._options.inline) { this.hide(); } else { this._doAction(e, 'showPicker'); } break; case 'selectSecond': this._setValue(lastPicked.clone().seconds(parseInt($(e.target).text(), 10)), this._getLastPickedDateIndex()); if (!this._isEnabled('a') && !this._options.keepOpen && !this._options.inline) { this.hide(); } else { this._doAction(e, 'showPicker'); } break; case 'clear': this.clear(); break; case 'close': this.hide(); break; case 'today': { const todaysDate = this.getMoment(); if (this._isValid(todaysDate, 'd')) { this._setValue(todaysDate, this._getLastPickedDateIndex()); } break; } } return false; } //public hide() { let transitioning = false; if (!this.widget) { return; } // Ignore event if in the middle of a picker transition this.widget.find('.collapse').each(function () { const collapseData = $(this).data('collapse'); if (collapseData && collapseData.transitioning) { transitioning = true; return false; } return true; }); if (transitioning) { return; } if (this.component && this.component.hasClass('btn')) { this.component.toggleClass('active'); } this.widget.hide(); $(window).off('resize', this._place()); this.widget.off('click', '[data-action]'); this.widget.off('mousedown', false); this.widget.remove(); this.widget = false; this._notifyEvent({ type: DateTimePicker.Event.HIDE, date: this._getLastPickedDate().clone() }); if (this.input !== undefined) { this.input.blur(); } this._viewDate = this._getLastPickedDate().clone(); } show() { let currentMoment; const useCurrentGranularity = { 'year': function (m) { return m.month(0).date(1).hours(0).seconds(0).minutes(0); }, 'month': function (m) { return m.date(1).hours(0).seconds(0).minutes(0); }, 'day': function (m) { return m.hours(0).seconds(0).minutes(0); }, 'hour': function (m) { return m.seconds(0).minutes(0); }, 'minute': function (m) { return m.seconds(0); } }; if (this.input !== undefined) { if (this.input.prop('disabled') || !this._options.ignoreReadonly && this.input.prop('readonly') || this.widget) { return; } if (this.input.val() !== undefined && this.input.val().trim().length !== 0) { this._setValue(this._parseInputDate(this.input.val().trim()), 0); } else if (this.unset && this._options.useCurrent) { currentMoment = this.getMoment(); if (typeof this._options.useCurrent === 'string') { currentMoment = useCurrentGranularity[this._options.useCurrent](currentMoment); } this._setValue(currentMoment, 0); } } else if (this.unset && this._options.useCurrent) { currentMoment = this.getMoment(); if (typeof this._options.useCurrent === 'string') { currentMoment = useCurrentGranularity[this._options.useCurrent](currentMoment); } this._setValue(currentMoment, 0); } this.widget = this._getTemplate(); this._fillDow(); this._fillMonths(); this.widget.find('.timepicker-hours').hide(); this.widget.find('.timepicker-minutes').hide(); this.widget.find('.timepicker-seconds').hide(); this._update(); this._showMode(); $(window).on('resize', { picker: this }, this._place); this.widget.on('click', '[data-action]', $.proxy(this._doAction, this)); // this handles clicks on the widget this.widget.on('mousedown', false); if (this.component && this.component.hasClass('btn')) { this.component.toggleClass('active'); } this._place(); this.widget.show(); if (this.input !== undefined && this._options.focusOnShow && !this.input.is(':focus')) { this.input.focus(); } this._notifyEvent({ type: DateTimePicker.Event.SHOW }); } destroy() { this.hide(); //todo doc off? this._element.removeData(DateTimePicker.DATA_KEY); this._element.removeData('date'); } disable() { this.hide(); if (this.component && this.component.hasClass('btn')) { this.component.addClass('disabled'); } if (this.input !== undefined) { this.input.prop('disabled', true); //todo disable this/comp if input is null } } enable() { if (this.component && this.component.hasClass('btn')) { this.component.removeClass('disabled'); } if (this.input !== undefined) { this.input.prop('disabled', false); //todo enable comp/this if input is null } } toolbarPlacement(toolbarPlacement) { if (arguments.length === 0) { return this._options.toolbarPlacement; } if (typeof toolbarPlacement !== 'string') { throw new TypeError('toolbarPlacement() expects a string parameter'); } if (toolbarPlacements.indexOf(toolbarPlacement) === -1) { throw new TypeError(`toolbarPlacement() parameter must be one of (${toolbarPlacements.join(', ')}) value`); } this._options.toolbarPlacement = toolbarPlacement; if (this.widget) { this.hide(); this.show(); } } widgetPositioning(widgetPositioning) { if (arguments.length === 0) { return $.extend({}, this._options.widgetPositioning); } if ({}.toString.call(widgetPositioning) !== '[object Object]') { throw new TypeError('widgetPositioning() expects an object variable'); } if (widgetPositioning.horizontal) { if (typeof widgetPositioning.horizontal !== 'string') { throw new TypeError('widgetPositioning() horizontal variable must be a string'); } widgetPositioning.horizontal = widgetPositioning.horizontal.toLowerCase(); if (horizontalModes.indexOf(widgetPositioning.horizontal) === -1) { throw new TypeError(`widgetPositioning() expects horizontal parameter to be one of (${horizontalModes.join(', ')})`); } this._options.widgetPositioning.horizontal = widgetPositioning.horizontal; } if (widgetPositioning.vertical) { if (typeof widgetPositioning.vertical !== 'string') { throw new TypeError('widgetPositioning() vertical variable must be a string'); } widgetPositioning.vertical = widgetPositioning.vertical.toLowerCase(); if (verticalModes.indexOf(widgetPositioning.vertical) === -1) { throw new TypeError(`widgetPositioning() expects vertical parameter to be one of (${verticalModes.join(', ')})`); } this._options.widgetPositioning.vertical = widgetPositioning.vertical; } this._update(); } widgetParent(widgetParent) { if (arguments.length === 0) { return this._options.widgetParent; } if (typeof widgetParent === 'string') { widgetParent = $(widgetParent); } if (widgetParent !== null && typeof widgetParent !== 'string' && !(widgetParent instanceof $)) { throw new TypeError('widgetParent() expects a string or a jQuery object parameter'); } this._options.widgetParent = widgetParent; if (this.widget) { this.hide(); this.show(); } } //static static _jQueryHandleThis(me, option, argument) { let data = $(me).data(DateTimePicker.DATA_KEY); if (typeof option === 'object') { $.extend({}, DateTimePicker.Default, option); } if (!data) { data = new TempusDominusBootstrap4($(me), option); $(me).data(DateTimePicker.DATA_KEY, data); } if (typeof option === 'string') { if (data[option] === undefined) { throw new Error(`No method named "${option}"`); } if (argument === undefined) { return data[option](); } else { return data[option](argument); } } } static _jQueryInterface(option, argument) { if (this.length === 1) { return TempusDominusBootstrap4._jQueryHandleThis(this[0], option, argument); } return this.each(function () { TempusDominusBootstrap4._jQueryHandleThis(this, option, argument); }); } } /** * ------------------------------------------------------------------------ * jQuery * ------------------------------------------------------------------------ */ $(document).on(DateTimePicker.Event.CLICK_DATA_API, DateTimePicker.Selector.DATA_TOGGLE, function () { const $target = getSelectorFromElement($(this)); if ($target.length === 0) { return; } TempusDominusBootstrap4._jQueryInterface.call($target, 'toggle'); }).on(DateTimePicker.Event.CHANGE, `.${DateTimePicker.ClassName.INPUT}`, function (event) { const $target = getSelectorFromElement($(this)); if ($target.length === 0) { return; } TempusDominusBootstrap4._jQueryInterface.call($target, '_change', event); }).on(DateTimePicker.Event.BLUR, `.${DateTimePicker.ClassName.INPUT}`, function (event) { const $target = getSelectorFromElement($(this)), config = $target.data(DateTimePicker.DATA_KEY); if ($target.length === 0) { return; } if (config._options.debug || window.debug) { return; } TempusDominusBootstrap4._jQueryInterface.call($target, 'hide', event); }).on(DateTimePicker.Event.KEYDOWN, `.${DateTimePicker.ClassName.INPUT}`, function (event) { const $target = getSelectorFromElement($(this)); if ($target.length === 0) { return; } TempusDominusBootstrap4._jQueryInterface.call($target, '_keydown', event); }).on(DateTimePicker.Event.KEYUP, `.${DateTimePicker.ClassName.INPUT}`, function (event) { const $target = getSelectorFromElement($(this)); if ($target.length === 0) { return; } TempusDominusBootstrap4._jQueryInterface.call($target, '_keyup', event); }).on(DateTimePicker.Event.FOCUS, `.${DateTimePicker.ClassName.INPUT}`, function (event) { const $target = getSelectorFromElement($(this)), config = $target.data(DateTimePicker.DATA_KEY); if ($target.length === 0) { return; } if (!config._options.allowInputToggle) { return; } TempusDominusBootstrap4._jQueryInterface.call($target, 'show', event); }); $.fn[DateTimePicker.NAME] = TempusDominusBootstrap4._jQueryInterface; $.fn[DateTimePicker.NAME].Constructor = TempusDominusBootstrap4; $.fn[DateTimePicker.NAME].noConflict = function () { $.fn[DateTimePicker.NAME] = JQUERY_NO_CONFLICT; return TempusDominusBootstrap4._jQueryInterface; }; return TempusDominusBootstrap4; })(jQuery); PK �z�\�� ��# �# $ sass/_tempusdominus-bootstrap-4.scssnu �[��� $bs-datetimepicker-timepicker-font-size: 1.2em !default; $bs-datetimepicker-active-bg: $blue !default; $bs-datetimepicker-active-color: $white !default; $bs-datetimepicker-border-radius: $border-radius !default; $bs-datetimepicker-btn-hover-bg: $gray-200 !default; $bs-datetimepicker-disabled-color: $gray-600 !default; $bs-datetimepicker-alternate-color: $gray-600 !default; $bs-datetimepicker-secondary-border-color: #ccc !default; $bs-datetimepicker-secondary-border-color-rgba: rgba(0, 0, 0, 0.2) !default; $bs-datetimepicker-primary-border-color: white !default; $bs-datetimepicker-text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25) !default; .bootstrap-datetimepicker-widget { list-style: none; &.dropdown-menu { display: block; margin: 2px 0; padding: 4px; width: 14rem; &.timepicker-sbs { @media (min-width: map-get($grid-breakpoints, 'sm')) { width: 38em; } @media (min-width: map-get($grid-breakpoints, 'md')) { width: 38em; } @media (min-width: map-get($grid-breakpoints, 'lg')) { width: 38em; } } &:before, &:after { content: ''; display: inline-block; position: absolute; } &.bottom { &:before { border-left: 7px solid transparent; border-right: 7px solid transparent; border-bottom: 7px solid $bs-datetimepicker-secondary-border-color; border-bottom-color: $bs-datetimepicker-secondary-border-color-rgba; top: -7px; left: 7px; } &:after { border-left: 6px solid transparent; border-right: 6px solid transparent; border-bottom: 6px solid $bs-datetimepicker-primary-border-color; top: -6px; left: 8px; } } &.top { &:before { border-left: 7px solid transparent; border-right: 7px solid transparent; border-top: 7px solid $bs-datetimepicker-secondary-border-color; border-top-color: $bs-datetimepicker-secondary-border-color-rgba; bottom: -7px; left: 6px; } &:after { border-left: 6px solid transparent; border-right: 6px solid transparent; border-top: 6px solid $bs-datetimepicker-primary-border-color; bottom: -6px; left: 7px; } } &.float-right { &:before { left: auto; right: 6px; } &:after { left: auto; right: 7px; } } &.wider { width: 16rem; } } .list-unstyled { margin: 0; } a[data-action] { padding: 6px 0; } a[data-action]:active { box-shadow: none; } .timepicker-hour, .timepicker-minute, .timepicker-second { width: 54px; font-weight: bold; font-size: $bs-datetimepicker-timepicker-font-size; margin: 0; } button[data-action] { padding: 6px; } .btn[data-action="incrementHours"]::after { @extend .sr-only; content: "Increment Hours"; } .btn[data-action="incrementMinutes"]::after { @extend .sr-only; content: "Increment Minutes"; } .btn[data-action="decrementHours"]::after { @extend .sr-only; content: "Decrement Hours"; } .btn[data-action="decrementMinutes"]::after { @extend .sr-only; content: "Decrement Minutes"; } .btn[data-action="showHours"]::after { @extend .sr-only; content: "Show Hours"; } .btn[data-action="showMinutes"]::after { @extend .sr-only; content: "Show Minutes"; } .btn[data-action="togglePeriod"]::after { @extend .sr-only; content: "Toggle AM/PM"; } .btn[data-action="clear"]::after { @extend .sr-only; content: "Clear the picker"; } .btn[data-action="today"]::after { @extend .sr-only; content: "Set the date to today"; } .picker-switch { text-align: center; &::after { @extend .sr-only; content: "Toggle Date and Time Screens"; } td { padding: 0; margin: 0; height: auto; width: auto; line-height: inherit; span { line-height: 2.5; height: 2.5em; width: 100%; } } } table { width: 100%; margin: 0; & td, & th { text-align: center; border-radius: $bs-datetimepicker-border-radius; } & th { height: 20px; line-height: 20px; width: 20px; &.picker-switch { width: 145px; } &.disabled, &.disabled:hover { background: none; color: $bs-datetimepicker-disabled-color; cursor: not-allowed; } &.prev::after { @extend .sr-only; content: "Previous Month"; } &.next::after { @extend .sr-only; content: "Next Month"; } } & thead tr:first-child th { cursor: pointer; &:hover { background: $bs-datetimepicker-btn-hover-bg; } } & td { height: 54px; line-height: 54px; width: 54px; &.cw { font-size: .8em; height: 20px; line-height: 20px; color: $bs-datetimepicker-alternate-color; } &.day { height: 20px; line-height: 20px; width: 20px; } &.day:hover, &.hour:hover, &.minute:hover, &.second:hover { background: $bs-datetimepicker-btn-hover-bg; cursor: pointer; } &.old, &.new { color: $bs-datetimepicker-alternate-color; } &.today { position: relative; &:before { content: ''; display: inline-block; border: solid transparent; border-width: 0 0 7px 7px; border-bottom-color: $bs-datetimepicker-active-bg; border-top-color: $bs-datetimepicker-secondary-border-color-rgba; position: absolute; bottom: 4px; right: 4px; } } &.active, &.active:hover { background-color: $bs-datetimepicker-active-bg; color: $bs-datetimepicker-active-color; text-shadow: $bs-datetimepicker-text-shadow; } &.active.today:before { border-bottom-color: #fff; } &.disabled, &.disabled:hover { background: none; color: $bs-datetimepicker-disabled-color; cursor: not-allowed; } span { display: inline-block; width: 54px; height: 54px; line-height: 54px; margin: 2px 1.5px; cursor: pointer; border-radius: $bs-datetimepicker-border-radius; &:hover { background: $bs-datetimepicker-btn-hover-bg; } &.active { background-color: $bs-datetimepicker-active-bg; color: $bs-datetimepicker-active-color; text-shadow: $bs-datetimepicker-text-shadow; } &.old { color: $bs-datetimepicker-alternate-color; } &.disabled, &.disabled:hover { background: none; color: $bs-datetimepicker-disabled-color; cursor: not-allowed; } } } } &.usetwentyfour { td.hour { height: 27px; line-height: 27px; } } } .input-group [data-toggle="datetimepicker"] { cursor: pointer; }PK �z�\�N��� � ) sass/tempusdominus-bootstrap-4-build.scssnu �[��� // Import bootstrap variables including default color palette and fonts @import "~bootstrap/scss/_functions.scss"; @import "~bootstrap/scss/_variables.scss"; .sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0,0,0,0); border: 0; } // Import datepicker component @import "_tempusdominus-bootstrap-4"; PK �{�\�J�� icons/subscript.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill: #000; fill-rule: evenodd; } </style> </defs> <path d="M1224.354,1117.078 L1006.601,1117.078 L1006.601,1067.562 C1091.466,990.519 1138.701,951.568 1139.220,911.578 C1139.220,887.702 1124.350,874.518 1097.335,874.518 C1072.236,874.518 1052.062,887.167 1032.530,901.592 L1009.016,842.278 C1039.234,818.882 1075.104,808.372 1110.771,808.372 C1176.237,808.372 1218.537,846.614 1218.537,905.801 C1218.537,965.501 1168.603,1011.339 1122.925,1049.581 L1224.354,1049.581 L1224.354,1117.078 ZM486.761,678.568 L296.843,975.803 L46.215,975.803 L46.215,879.988 L100.910,879.988 C134.010,879.988 164.672,863.823 181.618,837.434 L377.259,532.875 L188.346,256.449 C171.116,231.230 141.182,215.947 109.001,215.947 L57.840,215.947 L57.840,120.132 L291.295,120.132 L486.761,404.237 L682.228,120.132 L915.687,120.132 L915.687,215.947 L864.527,215.947 C832.355,215.947 802.411,231.230 785.177,256.449 L596.263,532.875 L791.904,837.434 C808.860,863.823 839.522,879.988 872.622,879.988 L927.312,879.988 L927.312,975.803 L676.684,975.803 L486.761,678.568 Z" class="cls-1"/> </svg> PK �{�\D�?�S S icons/minus.svgnu �[��� <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1024px" height="1024px" viewBox="0 0 1024 1024" enable-background="new 0 0 1024 1024" xml:space="preserve"> <g> <g> <rect x="108.93" y="432.341" fill="#010202" width="806.141" height="159.071"/> </g> </g> </svg> PK �{�\ȴ�s icons/circle.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill-rule: evenodd; } </style> </defs> <path class="cls-1" d="M501.845-55.324c318.546,0,576.775,255.772,576.775,571.282S820.391,1087.24,501.845,1087.24-74.935,831.469-74.935,515.958,183.3-55.324,501.845-55.324Zm0,90.262c268.216,0,485.649,215.36,485.649,481.02s-217.433,481.02-485.649,481.02S16.2,781.618,16.2,515.958,233.629,34.938,501.845,34.938Z"/> </svg> PK �{�\a�q�� � icons/italic.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill: #000; fill-rule: evenodd; } </style> </defs> <path d="M421.903,47.502 L401.526,111.534 C422.134,113.396 440.987,118.386 458.094,126.498 C475.187,134.622 483.740,152.142 483.740,179.046 C483.740,190.652 479.527,211.066 471.091,240.297 L291.199,805.870 C280.890,839.748 268.713,865.849 254.659,884.172 C240.604,902.508 216.713,911.663 182.985,911.663 L162.604,975.699 L558.929,975.699 L577.201,911.663 C550.960,911.663 528.121,906.446 508.688,896.006 C489.241,885.562 479.527,868.511 479.527,844.848 C479.527,830.470 483.740,816.731 492.176,790.283 L670.662,217.327 C679.093,190.423 687.175,169.890 694.903,155.733 C702.635,141.584 712.826,130.794 725.475,123.367 C738.123,115.952 754.041,112.002 773.257,111.534 L793.634,47.502 L421.903,47.502 Z" class="cls-1"/> </svg> PK �{�\��AŶ � icons/code.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill: #000; fill-rule: evenodd; } </style> </defs> <path d="M799.573,828.389 L799.573,719.346 L1122.342,549.372 L799.573,379.397 L799.573,270.358 L1237.987,510.886 L1237.987,587.857 L799.573,828.389 ZM291.448,927.098 L601.210,127.469 L718.855,127.469 L409.093,927.098 L291.448,927.098 ZM-215.002,510.886 L223.407,270.358 L223.407,379.397 L-99.357,549.372 L223.407,719.346 L223.407,828.389 L-215.002,587.857 L-215.002,510.886 Z" class="cls-1"/> </svg> PK �{�\����� � icons/text-height.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill: #000; fill-rule: evenodd; } </style> </defs> <path d="M1073.727,843.931 L1211.024,843.931 L1039.529,975.262 L868.030,843.931 L1005.602,843.931 L1005.602,251.428 L876.962,251.428 L1039.529,120.159 L1202.092,251.428 L1073.727,251.428 L1073.727,843.931 ZM649.994,233.729 C624.218,210.392 565.126,198.716 508.696,198.716 L430.715,198.716 L430.715,797.755 C430.715,837.588 437.714,865.323 451.712,880.954 C465.705,896.596 495.137,904.404 540.026,904.404 L563.354,904.404 L563.354,975.720 L76.224,975.720 L76.224,904.404 L97.552,904.404 C142.875,904.404 178.706,896.374 192.265,880.311 C205.816,864.251 212.595,836.734 212.595,797.755 L212.595,198.716 L130.211,198.716 C84.888,198.716 29.423,203.434 8.095,212.849 C-13.237,222.275 -31.128,241.017 -45.565,269.065 C-60.005,297.124 -68.785,330.421 -71.891,368.971 L-145.075,368.971 L-145.075,120.977 L789.565,120.977 L789.565,368.971 L709.981,368.971 C695.755,302.152 675.761,257.081 649.994,233.729 Z" class="cls-1"/> </svg> PK �{�\�g�`� � icons/arrows-alt.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill: #241f20; fill-rule: evenodd; } </style> </defs> <path d="M837.145,253.759 L960.985,376.234 L960.962,68.043 L649.512,68.025 L773.407,190.643 L512.001,449.497 L250.597,190.644 L374.284,68.005 L63.042,68.007 L63.043,376.234 L186.856,253.762 L448.259,512.615 L193.137,765.250 L63.009,636.616 L63.047,956.987 L386.773,957.000 L256.875,828.366 L512.000,575.732 L767.129,828.366 L637.230,957.000 L960.948,956.987 L960.926,636.616 L830.863,765.250 L575.742,512.615 L837.145,253.759 Z" class="cls-1"/> </svg> PK �{�\`�c� icons/align-outdent.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill: #000; fill-rule: evenodd; } </style> </defs> <path d="M10.989,129.999 L10.989,283.817 L1013.000,283.817 L1013.000,129.999 L10.989,129.999 ZM473.108,588.303 L1012.999,588.303 L1012.999,436.108 L473.108,436.108 L473.108,588.303 L473.108,588.303 ZM473.108,892.792 L1012.999,892.792 L1012.999,740.550 L473.108,740.550 L473.108,892.792 L473.108,892.792 ZM282.568,439.002 C261.604,451.493 41.464,631.478 23.747,642.701 C7.862,652.780 7.579,676.772 23.747,686.830 C48.380,702.143 267.392,881.205 281.839,890.074 C299.843,901.157 318.071,887.064 318.071,868.123 L318.071,460.818 C318.068,439.954 297.923,429.831 282.568,439.002 Z" class="cls-1"/> </svg> PK �{�\J#A�c c icons/close.svgnu �[��� <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1024px" height="1024px" viewBox="0 0 1024 1024" enable-background="new 0 0 1024 1024" xml:space="preserve"> <g> <g> <path fill="#010202" d="M562.27,511.274l305.892-305.888c1.935-1.937,1.935-5.809,0-9.68l-44.532-42.592 c-1.936-1.937-3.868-1.937-3.868-1.937c-1.94,0-1.94,0-3.872,1.937L510,459.002l-305.887-306.13 c-1.939-1.936-3.873-1.936-3.873-1.936c-1.939,0-1.939,0-3.872,1.936l-44.528,44.77c-1.939,1.935-1.939,5.808,0,9.68 L457.728,513.21L151.84,816.92c-1.939,1.936-1.939,5.808,0,9.68l42.592,44.527c1.936,1.939,3.869,1.939,3.869,1.939 s1.939,0,3.873-1.939L510,563.545l305.889,305.89c1.936,1.936,3.872,1.936,3.872,1.936s1.935,0,3.868-1.936l42.592-44.532 c1.94-1.935,1.94-5.807,0-9.68L562.27,511.274z"/> </g> </g> </svg> PK �{�\��S� � icons/menu-check.svgnu �[��� <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1024px" height="1024px" viewBox="0 0 1024 1024" enable-background="new 0 0 1024 1024" xml:space="preserve"> <path fill="#010202" d="M402.399,830.4L128.8,556.8V550.4L237.6,448L404,614.4l382.399-420.8l108.8,102.4v6.4L402.399,830.4 L402.399,830.4L402.399,830.4z"/> </svg> PK �{�\ \Y�H H icons/trash.svgnu �[��� <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1024px" height="1024px" viewBox="0 0 1024 1024" enable-background="new 0 0 1024 1024" xml:space="preserve"> <g> <g> <path fill="#040507" d="M684.868,95.723c-38.258,0-69.273-30.712-69.273-68.606H389.834c0,37.891-31.018,68.606-69.276,68.606 H15.731v69.894h978.333V95.723H684.868z M224.755,996.884h560.281L924.92,234.799H84.871L224.755,996.884z M688.173,355.88 c0-22.491,18.415-40.721,41.121-40.721c22.71,0,41.12,18.23,41.12,40.721l-60.545,515.828c0,22.491-18.415,40.719-41.118,40.719 c-22.707,0-41.116-18.229-41.116-40.719L688.173,355.88z M464.44,355.88c0-22.491,18.413-40.721,41.123-40.721 c22.708,0,41.115,18.23,41.115,40.721v515.828c0,22.491-18.407,40.719-41.115,40.719c-22.712,0-41.123-18.229-41.123-40.719 V355.88z M269.712,315.159c22.711,0,41.118,18.23,41.118,40.721l70.229,515.828c0,22.491-18.405,40.719-41.113,40.719 c-22.712,0-41.123-18.229-41.123-40.719L228.593,355.88C228.594,333.39,247.004,315.159,269.712,315.159z"/> </g> </g> </svg> PK �{�\�#1, icons/question.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill-rule: evenodd; } </style> </defs> <path id="Rounded_Rectangle_6" data-name="Rounded Rectangle 6" class="cls-1" d="M418.652,985.119h194.77V798.656H418.652V985.119ZM180.886,334.113H369.145q0-53.547,31.508-103.232T507.57,181.2q76.667,0,105.595,40.326t28.918,89.361q0,42.582-25.973,78.068-14.295,20.655-37.67,38.066L531.017,463.8q-70.137,54.192-87.023,95.81T423.21,710.265H599.743q0.642-51.612,8.446-76.133,12.341-38.713,50.028-67.75L704.332,530.9q70.173-54.2,94.851-89.039,42.234-57.417,42.233-141.3,0-136.773-97.387-206.46t-244.6-69.684q-112.047,0-188.909,49.038Q188.7,150.243,180.886,334.113h0Z"/> </svg> PK �{�\� >�� � icons/undo.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill-rule: evenodd; } </style> </defs> <path id="Shape_29_copy_2" data-name="Shape 29 copy 2" class="cls-1" d="M-84.808,193.372V728.531H480.079L325.064,580.294s-21.019-241.2,341.56-241.2S1176.34,648.131,1176.34,648.131s-147.14-482.4-546.5-482.4c-364.362,0-567.515,165.824-567.515,165.824Z"/> </svg> PK �{�\��f f icons/col-remove.svgnu �[��� <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg id="svg3446" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" height="3.9511mm" width="3.9496mm" version="1.1" xmlns:cc="http://creativecommons.org/ns#" viewBox="0 0 13.99474 14" xmlns:dc="http://purl.org/dc/elements/1.1/"> <metadata id="metadata3451"> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> <dc:title/> </cc:Work> </rdf:RDF> </metadata> <g id="layer1" transform="translate(732.42 107.67)"> <g id="g3692-8" transform="matrix(0 1 -1 0 -536.02 -2867.7)"> <path id="path5085-1-1" d="m2764.7 190q-0.2558 0-0.4348-0.17906l-0.8698-0.86975q-0.1791-0.17906-0.1791-0.43487t0.1791-0.43487l1.8802-1.8802-1.8802-1.8802q-0.1791-0.17906-0.1791-0.43487t0.1791-0.43487l0.8698-0.86975q0.179-0.17906 0.4348-0.17906t0.4349 0.17906l1.8802 1.8802 1.8802-1.8802q0.179-0.17906 0.4348-0.17906t0.4349 0.17906l0.8698 0.86975q0.179 0.17906 0.179 0.43487t-0.179 0.43487l-1.8802 1.8802 1.8802 1.8802q0.179 0.17906 0.179 0.43487t-0.179 0.43487l-0.8698 0.86975q-0.1791 0.17906-0.4349 0.17906t-0.4348-0.17906l-1.8802-1.8802-1.8802 1.8802q-0.1791 0.17906-0.4349 0.17906z"/> <path id="polygon3366-49-8-3-07" style="image-rendering:optimizeQuality;shape-rendering:geometricPrecision" d="m2774 191.08c0-0.2901-0.1688-0.5229-0.3789-0.5229h-13.242c-0.21 0-0.3789 0.2328-0.3789 0.5229v4.7928c0 0.29 0.1689 0.5252 0.3789 0.5252h13.242c0.2101 0 0.3789-0.2352 0.3789-0.5252v-4.7928zm-1.1582 0.687v3.4211h-3.2168v-3.4211h3.2168zm-4.2852 0v3.4211h-3.2148v-3.4211h3.2148zm-4.2832 0v3.4211h-3.2148v-3.4211h3.2148z" fill-rule="evenodd" clip-rule="evenodd"/> </g> </g> </svg> PK �{�\t��� � icons/chain-broken.svgnu �[��� <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1024px" height="1024px" viewBox="0 0 1024 1024" enable-background="new 0 0 1024 1024" xml:space="preserve"> <g> <g> <g> <path fill="#010202" d="M362.776-44.529c-15.135-25.854-51.752-32.912-77.83-18.056c-26.095,14.861-39.805,50.604-24.67,76.458 l75.941,122.108c15.125,25.838,53.354,31.993,79.43,17.132c26.094-14.858,38.19-49.702,23.064-75.543L362.776-44.529z"/> </g> </g> <g> <g> <path fill="#010202" d="M575.588,77.57c-15.126,25.841-3.029,60.685,23.064,75.543c26.075,14.861,64.305,8.707,79.43-17.132 l75.941-122.108c15.135-25.854,1.425-61.597-24.67-76.458c-26.078-14.856-62.695-7.798-77.83,18.056L575.588,77.57z"/> </g> </g> </g> <g> <g> <g> <path fill="#010202" d="M438.711,943.173c15.126-25.841,3.029-60.685-23.064-75.543c-26.075-14.861-64.305-8.706-79.43,17.132 l-75.941,122.108c-15.135,25.854-1.425,61.597,24.67,76.458c26.078,14.855,62.695,7.798,77.83-18.057L438.711,943.173z"/> </g> </g> <g> <g> <path fill="#010202" d="M651.524,1065.271c15.135,25.854,51.752,32.912,77.83,18.057c26.095-14.861,39.805-50.604,24.67-76.458 l-75.941-122.108c-15.125-25.838-53.354-31.993-79.43-17.132c-26.094,14.858-38.19,49.702-23.064,75.543L651.524,1065.271z"/> </g> </g> </g> <g> <g> <path fill="#010202" d="M823.22,222.293l-196.119,0.24c-37.265,0-67.438,29.933-67.556,66.596 c0,36.785,30.051,66.477,67.317,66.477l196.117-0.24c87.271-0.119,158.194,69.841,158.075,156.034 c-0.117,86.189-71.162,156.393-158.555,156.393l-196.119,0.24c-37.265,0-67.438,29.935-67.438,66.599 c0,36.784,30.054,66.475,67.318,66.475l196.115-0.241c161.685-0.239,293.315-130.188,293.555-289.706 C1116.293,351.76,984.903,222.053,823.22,222.293z M393.772,668.394l-192.749,0.241c-87.272,0.12-158.198-69.963-158.077-156.033 c0.119-86.192,71.284-156.396,158.556-156.515l192.753-0.24c37.265,0,67.437-29.932,67.437-66.596 c0-36.784-30.052-66.477-67.316-66.477l-192.752,0.242C39.941,223.255-91.691,353.202-91.931,512.721 S39.218,801.949,200.9,801.706l192.753-0.24c37.264,0,67.438-29.813,67.557-66.597 C461.209,698.085,431.037,668.394,393.772,668.394z"/> </g> </g> </svg> PK �{�\'�¥< < icons/link.svgnu �[��� <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1024px" height="1024px" viewBox="0 0 1024 1024" enable-background="new 0 0 1024 1024" xml:space="preserve"> <g> <g> <path fill="#010202" d="M823.22,222.293l-196.119,0.24c-37.265,0-67.438,29.933-67.556,66.596 c0,36.785,30.051,66.477,67.317,66.477l196.117-0.24c87.271-0.119,158.194,69.841,158.075,156.034 c-0.117,86.189-71.162,156.393-158.555,156.393l-196.119,0.24c-37.265,0-67.438,29.935-67.438,66.599 c0,36.784,30.054,66.475,67.318,66.475l196.115-0.241c161.685-0.239,293.315-130.188,293.555-289.706 C1116.293,351.76,984.903,222.053,823.22,222.293z M393.772,668.394l-192.749,0.241c-87.273,0.12-158.198-69.963-158.078-156.033 c0.12-86.192,71.284-156.396,158.556-156.515l192.752-0.24c37.265,0,67.437-29.932,67.437-66.596 c0-36.784-30.051-66.477-67.316-66.477l-192.751,0.242C39.941,223.255-91.691,353.202-91.931,512.721 S39.219,801.949,200.9,801.706l192.753-0.24c37.263,0,67.438-29.813,67.556-66.597 C461.209,698.085,431.038,668.394,393.772,668.394z M272.601,509.093c0,36.784,30.052,66.476,67.316,66.476l346.928-0.358 c37.266,0,67.439-29.934,67.558-66.598c0-36.784-30.051-66.478-67.316-66.478l-346.928,0.361 C302.895,442.496,272.72,472.308,272.601,509.093z"/> </g> </g> </svg> PK �{�\ �� icons/video.svgnu �[��� <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1024px" height="1024px" viewBox="0 0 1024 1024" enable-background="new 0 0 1024 1024" xml:space="preserve"> <path d="M-70.443,728.622l284.268-120.036V416.415L-70.443,296.266V728.622z M962.801,200.673H329.249 c-39.146,0-71.374,31.489-71.374,69.789v484.301c0,38.076,32.118,69.564,71.374,69.564h633.552 c39.256,0,71.263-31.488,71.263-69.564V270.351C1034.064,232.162,1001.946,200.673,962.801,200.673z"/> </svg> PK �{�\��&?� � icons/summernote.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill: #000; fill-rule: evenodd; } </style> </defs> <path d="M1122.033,577.898 L1033.442,577.898 C1036.450,557.776 1038.159,535.279 1038.159,511.748 C1038.159,488.736 1036.511,467.226 1033.634,447.104 L1122.033,447.104 C1157.345,447.104 1186.090,477.189 1186.090,512.501 C1186.090,547.813 1157.345,577.898 1122.033,577.898 ZM929.167,191.898 C901.164,155.489 868.523,122.848 832.113,94.843 L894.837,32.120 C907.751,19.206 924.985,12.093 943.363,12.093 C961.743,12.093 978.976,19.206 991.891,32.120 C1004.807,45.035 1011.919,62.269 1011.919,80.647 C1011.919,99.027 1004.807,116.261 991.891,129.176 L929.167,191.898 ZM390.139,620.385 C386.505,631.404 392.589,637.487 403.607,633.891 L541.794,588.779 L900.676,229.788 C958.318,309.034 992.407,406.516 992.407,512.006 C992.407,777.325 777.324,992.408 512.005,992.408 C246.687,992.408 31.604,777.325 31.604,512.006 C31.604,246.688 246.687,31.605 512.005,31.605 C617.495,31.605 714.974,65.693 794.222,123.335 L435.195,482.236 L390.139,620.385 ZM446.682,-9.540 L446.682,-98.033 C446.682,-133.345 476.766,-162.090 512.078,-162.090 C547.391,-162.090 577.475,-133.345 577.475,-98.033 L577.475,-9.511 C557.353,-12.464 535.275,-14.147 511.965,-14.147 C488.733,-14.147 466.804,-12.474 446.682,-9.540 ZM98.494,187.254 L34.795,124.042 C9.819,99.066 9.262,60.328 34.238,35.352 C59.215,10.391 98.716,10.361 123.721,35.352 L186.790,98.859 C153.982,124.741 124.340,154.417 98.494,187.254 ZM-98.033,577.898 C-133.345,577.898 -162.090,547.813 -162.090,512.501 C-162.090,477.189 -133.345,447.104 -98.033,447.104 L-9.623,447.104 C-12.500,467.226 -14.148,488.736 -14.148,511.748 C-14.148,535.279 -12.439,557.776 -9.430,577.898 L-98.033,577.898 ZM99.092,837.519 C124.835,870.105 154.326,899.562 186.941,925.272 L123.721,988.996 C111.226,1001.477 97.056,1008.066 80.657,1008.066 C64.246,1008.066 47.847,1002.477 35.352,989.996 C10.376,965.020 10.376,925.709 35.352,900.732 L99.092,837.519 ZM577.475,1033.524 L577.475,1122.033 C577.475,1157.345 547.391,1186.090 512.078,1186.090 C476.766,1186.090 446.682,1157.345 446.682,1122.033 L446.682,1033.552 C466.804,1036.486 488.733,1038.160 511.965,1038.160 C535.275,1038.160 557.353,1036.477 577.475,1033.524 ZM925.024,837.387 L988.957,900.732 C1013.933,925.709 1014.225,963.686 989.249,988.663 C976.754,1001.144 960.943,1007.399 944.545,1007.399 C928.133,1007.399 912.907,1001.144 900.413,988.663 L837.302,925.090 C869.869,899.389 899.316,869.949 925.024,837.387 Z" class="cls-1"/> </svg> PK �{�\!#gJ J icons/align-center.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill: #000; fill-rule: evenodd; } </style> </defs> <path d="M1005.873,135.999 L17.000,135.999 L17.000,286.464 L1005.873,286.464 L1005.873,135.999 ZM853.738,587.386 L853.738,436.925 L169.135,436.925 L169.135,587.386 L853.738,587.386 ZM17.434,737.787 L17.434,888.000 L1006.000,888.000 L1006.000,737.787 L17.434,737.787 Z" class="cls-1"/> </svg> PK �{�\G�v�6 6 icons/font.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill: #000; fill-rule: evenodd; } </style> </defs> <path d="M573.459,743.967 L601.655,814.844 L611.052,837.039 C619.730,855.657 624.065,870.689 624.065,882.145 C624.065,895.035 618.759,905.661 608.164,914.005 C597.553,922.362 570.318,926.535 526.469,926.535 L526.469,1006.008 L1013.015,1006.008 L1013.015,926.535 C990.358,926.535 966.749,919.016 942.164,903.983 C917.585,888.947 890.112,844.201 859.751,769.742 L552.495,17.984 L467.908,17.984 L166.437,770.455 C124.505,874.518 72.691,926.535 11.003,926.535 L11.003,1006.008 L334.884,1006.008 L334.884,926.535 C298.738,926.535 272.712,921.880 256.806,912.575 C240.900,903.266 232.949,886.921 232.949,863.532 C232.949,849.694 239.691,825.830 253.189,791.937 L271.988,743.967 L573.459,743.967 ZM418.748,371.669 L540.929,661.633 L303.077,661.633 L418.748,371.669 Z" class="cls-1"/> </svg> PK �{�\/r r icons/magic.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill-rule: evenodd; } </style> </defs> <path class="cls-1" d="M849.684,129.609L904.511,183.9,1050.77,39.032l-54.827-54.3ZM991.24,487.441h219.79V410.647l-219.79.008v76.786ZM849.684,853.314L995.943,998.181l54.827-54.289L904.511,799.022ZM27.557,39.032L173.825,183.9l54.821-54.293L82.378-15.269Zm443.712,4.655h77.524l0.01-217.671H471.278ZM-132.579,944.281L50.885,1126,533.252,648.5l-183.46-181.7ZM404.619,412.5L588.073,594.215,772.047,411.989,588.588,230.279Z"/> </svg> PK �{�\�m�B� � icons/redo.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill-rule: evenodd; } </style> </defs> <path id="Shape_29_copy_3" data-name="Shape 29 copy 3" class="cls-1" d="M1181.48,193.372V728.531H616.6L771.612,580.294s21.019-239-341.56-239S-79.66,648.131-79.66,648.131s147.134-482.4,546.5-482.4S1034.35,331.559,1034.35,331.559Z"/> </svg> PK �{�\�B�A A icons/arrows-h.svgnu �[��� <svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1792 896q0 26-19 45l-256 256q-19 19-45 19t-45-19-19-45v-128h-1024v128q0 26-19 45t-45 19-45-19l-256-256q-19-19-19-45t19-45l256-256q19-19 45-19t45 19 19 45v128h1024v-128q0-26 19-45t45-19 45 19l256 256q19 19 19 45z"/></svg>PK �{�\@�� � icons/picture.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill: #000; fill-rule: evenodd; } </style> </defs> <path d="M1068.340,975.691 L-26.281,975.691 C-61.627,975.691 -90.281,947.037 -90.281,911.691 L-90.281,113.254 C-90.281,77.908 -61.627,49.254 -26.281,49.254 L1068.340,49.254 C1103.686,49.254 1132.340,77.908 1132.340,113.254 L1132.340,911.691 C1132.340,947.037 1103.686,975.691 1068.340,975.691 ZM1060.475,192.281 C1060.475,113.556 996.043,121.007 916.561,121.007 L125.033,121.007 C45.551,121.007 -18.881,113.556 -18.881,192.281 L-18.881,762.448 C-18.881,841.172 45.551,904.991 125.033,904.991 L916.561,904.991 C996.043,904.991 1060.475,841.172 1060.475,762.448 L1060.475,192.281 ZM820.368,440.468 C767.439,440.468 724.487,400.954 724.487,352.025 C724.487,303.139 767.439,263.554 820.368,263.554 C873.322,263.554 916.222,303.139 916.222,352.025 C916.222,400.954 873.322,440.468 820.368,440.468 ZM873.397,780.358 C918.029,846.441 885.494,832.253 801.185,832.253 L225.930,832.253 C141.522,832.253 101.661,842.771 137.427,772.270 L276.114,497.962 C311.786,427.437 379.266,422.747 426.053,487.463 L562.711,676.687 L600.888,601.377 C636.612,530.876 702.365,527.233 747.024,593.289 L873.397,780.358 Z" class="cls-1"/> </svg> PK �{�\Z��4) ) icons/special-character.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill-rule: evenodd; } </style> </defs> <path id="_" data-name="※" class="cls-1" d="M807.591,584.975q29.964,27.886,70.339,27.869,46.473,0,75.84-27.869t29.359-72.7q0-44.811-31.194-72.695-31.188-27.864-74-27.869-42.835,0-71.561,29.684-28.76,29.706-28.751,72.093Q777.618,557.11,807.591,584.975Zm-737.635,0q28.732,27.886,74.009,27.869,42.807,0,70.952-27.869,28.124-27.858,28.133-72.7,0-44.811-29.36-72.695-29.353-27.864-69.725-27.869-46.5,0-74.618,29.684Q41.188,471.106,41.21,513.493,41.21,557.11,69.956,584.975ZM422.872,180.3A111.5,111.5,0,0,0,445.5,212.407a103.872,103.872,0,0,0,72.783,29.684q45.243,0,73.4-29.684,28.131-29.677,28.138-72.093,0-43.617-30.582-72.695T518.286,38.541q-46.5,0-75.231,29.684-28.753,29.7-28.746,72.088A92.561,92.561,0,0,0,422.872,180.3ZM444.89,956.94q30.566,27.858,73.4,27.865,44.039,0,72.787-27.865,28.725-27.887,28.747-73.908,0-42.4-30.582-69.667T518.286,786.1q-46.5,0-75.231,28.471-28.753,28.484-28.746,69.667Q414.309,929.058,444.89,956.94ZM919.768,46.429L512.582,449.945,104.533,46.429,43.951,107.145,451.137,509.807,43.951,912.465l60.582,60.715L512.582,569.668,919.768,973.18l59.714-60.715L572.3,509.807,979.482,107.145Z"/> </svg> PK �{�\���� � icons/arrow-circle-left.svgnu �[��� <svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1408 960v-128q0-26-19-45t-45-19h-502l189-189q19-19 19-45t-19-45l-91-91q-18-18-45-18t-45 18l-362 362-91 91q-18 18-18 45t18 45l91 91 362 362q18 18 45 18t45-18l91-91q18-18 18-45t-18-45l-189-189h502q26 0 45-19t19-45zm256-64q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg>PK �{�\s� � � icons/pencil.svgnu �[��� <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1024px" height="1024px" viewBox="0 0 1024 1024" enable-background="new 0 0 1024 1024" xml:space="preserve"> <path d="M100.403,576.011l-127.892,470.479L452.19,927.81l599.3-599l-352.3-351.3L100.403,576.011z M873.281,328.811 L389.143,812.973l-145.086,31.801l-63.754-63.58l34.259-141.311l484.627-484.671L873.281,328.811z"/> </svg> PK �{�\�� N N icons/row-below.svgnu �[��� <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg id="svg3446" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" height="3.9522mm" width="3.9511mm" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 14 14.003805" xmlns:dc="http://purl.org/dc/elements/1.1/"> <metadata id="metadata3451"> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> <dc:title/> </cc:Work> </rdf:RDF> </metadata> <g id="layer1" transform="translate(745.96 126.95)"> <g id="g3610-5" transform="matrix(1 0 0 -1 -3506 69.446)"> <path id="path3400-4-4-5-6" d="m2771 186.43q0 0.264-0.1915 0.4658l-0.3882 0.3882q-0.1966 0.1965-0.4709 0.1965-0.2795 0-0.4658-0.1965l-1.5217-1.5164v3.6436q0 0.2691-0.194 0.4372-0.1941 0.1683-0.4684 0.1683h-0.6625q-0.2743 0-0.4684-0.1683-0.1941-0.1681-0.1941-0.4372v-3.6436l-1.5216 1.5164q-0.1863 0.1965-0.4658 0.1965t-0.4658-0.1965l-0.3882-0.3882q-0.1966-0.1967-0.1966-0.4658 0-0.2742 0.1966-0.471l3.3693-3.3692q0.1812-0.1916 0.4658-0.1916 0.2795 0 0.471 0.1916l3.3693 3.3692q0.1915 0.2019 0.1915 0.471z" stroke-width="0"/> <path id="polygon3366-49-8-3-0" style="image-rendering:optimizeQuality;shape-rendering:geometricPrecision" d="m2774 191.08c0-0.2901-0.1688-0.5229-0.3789-0.5229h-13.242c-0.21 0-0.3789 0.2328-0.3789 0.5229v4.7928c0 0.29 0.1689 0.5252 0.3789 0.5252h13.242c0.2101 0 0.3789-0.2352 0.3789-0.5252v-4.7928zm-1.1582 0.687v3.4211h-3.2168v-3.4211h3.2168zm-4.2852 0v3.4211h-3.2148v-3.4211h3.2148zm-4.2832 0v3.4211h-3.2148v-3.4211h3.2148z" fill-rule="evenodd" clip-rule="evenodd"/> </g> </g> </svg> PK �{�\�$�� � icons/bold.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill: #000; fill-rule: evenodd; } </style> </defs> <path d="M804.888,401.892 C843.584,366.065 862.937,322.286 862.937,270.577 C862.937,202.087 833.630,147.995 775.010,108.301 C716.386,68.614 606.469,48.762 445.268,48.762 L394.438,48.762 L36.535,58.970 L36.535,134.496 C87.370,134.496 120.343,142.439 135.459,158.309 C150.571,174.195 158.124,203.895 158.124,247.441 L158.124,788.361 C158.124,833.266 150.108,863.321 134.082,878.514 C118.046,893.714 85.535,901.307 36.535,901.307 L36.535,976.833 L524.958,976.833 C660.974,976.833 758.285,955.296 816.914,912.195 C875.529,869.106 904.841,810.134 904.841,735.289 C904.841,668.607 881.941,614.516 836.144,573.013 C790.348,531.511 721.651,502.590 630.063,486.260 C707.913,465.849 766.183,437.732 804.888,401.892 ZM401.996,129.054 C451.453,129.054 488.890,132.688 514.310,139.938 C539.725,147.200 560.219,163.306 575.793,188.245 C591.357,213.200 599.146,247.220 599.146,290.310 C599.146,347.918 586.786,388.401 562.055,411.757 C537.323,435.125 499.769,446.797 449.392,446.797 L401.996,446.797 L401.996,129.054 ZM446.646,529.810 C495.183,529.810 531.832,534.571 556.558,544.101 C581.289,553.623 600.751,572.107 614.951,599.551 C629.143,626.999 636.243,664.985 636.243,713.516 C636.243,774.307 625.359,819.893 603.614,850.274 C581.860,880.672 549.227,895.864 505.728,895.864 C477.784,895.864 456.148,891.442 440.805,882.597 C425.458,873.752 415.154,862.762 409.894,849.597 C404.624,836.448 401.996,817.172 401.996,791.764 L401.996,529.810 L446.646,529.810 Z" class="cls-1"/> </svg> PK �{�\��TK K icons/row-above.svgnu �[��� <?xml version="1.0" encoding="UTF-8" standalone="no"?> <!-- Created with Inkscape (http://www.inkscape.org/) --> <svg id="svg3446" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" height="3.9522mm" width="3.9511mm" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 14 14.003805" xmlns:dc="http://purl.org/dc/elements/1.1/"> <metadata id="metadata3451"> <rdf:RDF> <cc:Work rdf:about=""> <dc:format>image/svg+xml</dc:format> <dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/> <dc:title/> </cc:Work> </rdf:RDF> </metadata> <g id="layer1" transform="translate(758.78 133.09)"> <g id="g3610-8" transform="translate(-3518.8 -315.48)"> <path id="path3400-4-4-5-4" d="m2771 186.43q0 0.264-0.1915 0.4658l-0.3882 0.3882q-0.1966 0.1965-0.4709 0.1965-0.2795 0-0.4658-0.1965l-1.5217-1.5164v3.6436q0 0.2691-0.194 0.4372-0.1941 0.1683-0.4684 0.1683h-0.6625q-0.2743 0-0.4684-0.1683-0.1941-0.1681-0.1941-0.4372v-3.6436l-1.5216 1.5164q-0.1863 0.1965-0.4658 0.1965t-0.4658-0.1965l-0.3882-0.3882q-0.1966-0.1967-0.1966-0.4658 0-0.2742 0.1966-0.471l3.3693-3.3692q0.1812-0.1916 0.4658-0.1916 0.2795 0 0.471 0.1916l3.3693 3.3692q0.1915 0.2019 0.1915 0.471z" stroke-width="0"/> <path id="polygon3366-49-8-3-5" style="image-rendering:optimizeQuality;shape-rendering:geometricPrecision" d="m2774 191.08c0-0.2901-0.1688-0.5229-0.3789-0.5229h-13.242c-0.21 0-0.3789 0.2328-0.3789 0.5229v4.7928c0 0.29 0.1689 0.5252 0.3789 0.5252h13.242c0.2101 0 0.3789-0.2352 0.3789-0.5252v-4.7928zm-1.1582 0.687v3.4211h-3.2168v-3.4211h3.2168zm-4.2852 0v3.4211h-3.2148v-3.4211h3.2148zm-4.2832 0v3.4211h-3.2148v-3.4211h3.2148z" fill-rule="evenodd" clip-rule="evenodd"/> </g> </g> </svg> PK �{�\�Hl� � icons/arrow-circle-down.svgnu �[��� <svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1412 897q0-27-18-45l-91-91q-18-18-45-18t-45 18l-189 189v-502q0-26-19-45t-45-19h-128q-26 0-45 19t-19 45v502l-189-189q-19-19-45-19t-45 19l-91 91q-18 18-18 45t18 45l362 362 91 91q18 18 45 18t45-18l91-91 362-362q18-18 18-45zm252-1q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg>PK �{�\��r� � icons/table.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill: #000; fill-rule: evenodd; } </style> </defs> <path d="M-73.241,975.691 L-73.241,49.254 L285.347,49.254 L358.022,49.254 L645.543,49.254 L718.150,49.254 L1076.738,49.254 L1076.738,975.691 L-73.241,975.691 ZM718.150,904.980 L1005.528,904.980 L1005.528,691.094 L718.150,691.094 L718.150,904.980 ZM1005.528,619.954 L1005.528,406.566 L718.150,406.566 L718.150,619.954 L1005.528,619.954 ZM358.022,904.980 L645.543,904.980 L645.543,691.094 L358.022,691.094 L358.022,904.980 ZM645.543,619.954 L645.543,406.566 L358.022,406.566 L358.022,619.954 L645.543,619.954 ZM-1.871,904.980 L285.347,904.980 L285.347,691.094 L-1.871,691.094 L-1.871,904.980 ZM285.347,619.954 L285.347,406.566 L-1.871,406.566 L-1.871,619.954 L285.347,619.954 ZM-1.871,120.996 L-1.871,335.391 L285.347,335.391 L285.347,120.996 L-1.871,120.996 ZM358.022,120.996 L358.022,335.391 L645.543,335.391 L645.543,120.996 L358.022,120.996 ZM718.150,120.996 L718.150,335.391 L1005.528,335.391 L1005.528,120.996 L718.150,120.996 Z" class="cls-1"/> </svg> PK �{�\vzyJ| | icons/align-indent.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill: #000; fill-rule: evenodd; } </style> </defs> <path d="M10.989,129.999 L10.989,283.817 L1013.000,283.817 L1013.000,129.999 L10.989,129.999 ZM473.108,588.303 L1012.999,588.303 L1012.999,436.108 L473.108,436.108 L473.108,588.303 L473.108,588.303 ZM473.108,892.792 L1012.999,892.792 L1012.999,740.550 L473.108,740.550 L473.108,892.792 L473.108,892.792 ZM47.458,439.405 C68.401,451.885 288.316,631.710 306.015,642.923 C321.884,652.994 322.166,676.965 306.015,687.013 C281.408,702.313 62.619,881.216 48.187,890.077 C30.201,901.151 11.992,887.071 11.992,868.146 L11.992,461.202 C11.995,440.356 32.119,430.242 47.458,439.405 Z" class="cls-1"/> </svg> PK �{�\�q �� � icons/arrow-circle-right.svgnu �[��� <svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1413 896q0-27-18-45l-91-91-362-362q-18-18-45-18t-45 18l-91 91q-18 18-18 45t18 45l189 189h-502q-26 0-45 19t-19 45v128q0 26 19 45t45 19h502l-189 189q-19 19-19 45t19 45l91 91q18 18 45 18t45-18l362-362 91-91q18-18 18-45zm251 0q0 209-103 385.5t-279.5 279.5-385.5 103-385.5-103-279.5-279.5-103-385.5 103-385.5 279.5-279.5 385.5-103 385.5 103 279.5 279.5 103 385.5z"/></svg>PK �{�\�x6�K K icons/align-justify.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill: #000; fill-rule: evenodd; } </style> </defs> <path d="M1005.873,135.999 L17.000,135.999 L17.000,286.464 L1005.873,286.464 L1005.873,135.999 ZM1005.873,436.925 L17.000,436.925 L17.000,587.386 L1005.873,587.386 L1005.873,436.925 ZM17.434,737.787 L17.434,888.000 L1006.000,888.000 L1006.000,737.787 L17.434,737.787 Z" class="cls-1"/> </svg> PK �{�\�"�� � icons/strikethrough.svgnu �[��� <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" preserveAspectRatio="xMidYMid" width="1024" height="1024" viewBox="0 0 1024 1024"> <defs> <style> .cls-1 { fill: #000; fill-rule: evenodd; } </style> </defs> <path d="M999.602,572.813 L23.826,572.813 C14.990,572.813 7.826,565.650 7.826,556.813 L7.826,446.566 C7.826,437.730 14.990,430.566 23.826,430.566 L222.008,430.566 C219.520,428.463 217.056,426.350 214.637,424.218 C161.037,373.796 134.249,315.121 134.249,248.206 C134.249,212.816 142.487,179.473 158.985,148.198 C175.469,116.922 198.139,90.014 227.007,67.465 C255.857,44.916 290.123,27.349 329.810,14.736 C369.487,2.130 412.255,-4.175 458.127,-4.175 C491.619,-4.175 521.375,-1.993 547.403,2.370 C573.418,6.734 600.862,13.042 629.726,21.281 C658.580,29.531 682.023,35.713 700.069,39.828 C718.101,43.951 732.269,57.144 742.582,57.144 C770.917,57.144 790.242,35.961 800.555,2.504 L870.333,2.504 L870.333,317.302 L803.645,317.302 C782.005,266.876 754.042,222.751 719.780,184.927 C685.500,147.107 647.625,117.903 606.150,97.287 C564.661,76.680 522.016,66.374 478.225,66.374 C431.325,66.374 393.836,77.172 365.756,98.741 C337.661,120.321 323.630,149.052 323.630,184.927 C323.630,217.908 337.793,247.730 366.142,274.390 C382.108,288.460 413.293,307.245 459.670,330.758 C506.051,354.284 550.361,376.340 592.624,396.944 C614.707,407.719 636.721,418.934 658.668,430.566 L999.602,430.566 C1008.439,430.566 1015.602,437.730 1015.602,446.566 L1015.602,556.813 C1015.602,565.650 1008.439,572.813 999.602,572.813 ZM270.294,825.703 C307.395,866.433 348.361,897.594 393.195,919.167 C438.029,940.747 484.660,951.529 533.103,951.529 C568.143,951.529 599.196,945.236 626.248,932.619 C653.301,920.017 674.295,902.800 689.246,880.980 C704.188,859.160 711.661,834.433 711.661,806.793 C711.661,762.675 693.110,723.150 656.009,688.240 C639.510,671.759 615.680,661.588 584.509,644.371 L894.856,644.371 C909.279,679.045 916.502,709.332 916.502,748.605 C916.502,800.496 901.815,847.885 872.442,890.797 C843.068,933.710 802.353,967.293 750.310,991.535 C698.257,1015.773 641.322,1027.902 579.485,1027.902 C537.222,1027.902 499.215,1023.775 465.468,1015.537 C431.712,1007.287 393.450,996.386 350.682,982.804 C307.900,969.238 279.301,962.441 264.883,962.441 C244.265,962.441 246.469,968.383 231.013,980.260 C215.552,992.149 205.503,1007.535 200.866,1026.445 L151.394,1026.445 L151.394,683.876 L200.866,683.876 C223.535,737.697 233.188,784.972 270.294,825.703 Z" class="cls-1"/> </svg> PK �{�\k��C C icons/arrows-v.svgnu �[��� <svg width="1792" height="1792" viewBox="0 0 1792 1792" xmlns="http://www.w3.org/2000/svg"><path d="M1216 320q0 26-19 45t-45 19h-128v1024h128q26 0 45 19t19 45-19 45l-256 256q-19 19-45 19t-45-19l-256-256q-19-19-19-45t19-45 45-19h128v-1024h-128q-26 0-45-19t-19-45 19-45l256-256q19-19 45-19t45 19l256 256q19 19 19 45z"/></svg>PK �{�\TG�� � icons/align-left.svgnu �[��� <?xml version="1.0" encoding="utf-8"?> <!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --> <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="1024px" height="1024px" viewBox="0 0 1024 1024" enable-background="new 0 0 1024 1024" xml:space="preserve"> <g> <g> <path fill="#010202" d="M929.51,135.727H17.704v151.855H929.51V135.727z M777.555,437.932H17.704v150.254h759.847L777.555,437.932 L777.555,437.932z M17.704,738.488V888.79h988.593V738.488H17.704z"/> </g> </g> </svg> PK �{�\/�R R icons/dist/summernote.lessnu �[��� // Generated by grunt-webfont // Based on https://github.com/endtwist/fontcustom/blob/master/lib/fontcustom/templates/fontcustom.css @font-face { font-family:"summernote"; src:url("./font/summernote.eot?dbafe969167589eda84514394d126413"); src:url("./font/summernote.eot?#iefix") format("embedded-opentype"), url("./font/summernote.woff?dbafe969167589eda84514394d126413") format("woff"), url("./font/summernote.ttf?dbafe969167589eda84514394d126413") format("truetype"); font-weight:normal; font-style:normal; } // Bootstrap Overrides [class^="note-icon-"]:before, [class*=" note-icon-"]:before { display:inline-block; vertical-align:middle; font: normal normal normal 14px summernote; font-size: inherit; speak:none; text-decoration:inherit; text-transform:none; text-rendering:auto; -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale; } // Mixins .note-icon-align-center, .note-icon-align-indent, .note-icon-align-justify, .note-icon-align-left, .note-icon-align-outdent, .note-icon-align-right, .note-icon-align, .note-icon-arrow-circle-down, .note-icon-arrow-circle-left, .note-icon-arrow-circle-right, .note-icon-arrow-circle-up, .note-icon-arrows-alt, .note-icon-arrows-h, .note-icon-arrows-v, .note-icon-bold, .note-icon-caret, .note-icon-chain-broken, .note-icon-circle, .note-icon-close, .note-icon-code, .note-icon-col-after, .note-icon-col-before, .note-icon-col-remove, .note-icon-eraser, .note-icon-font, .note-icon-frame, .note-icon-italic, .note-icon-link, .note-icon-magic, .note-icon-menu-check, .note-icon-minus, .note-icon-orderedlist, .note-icon-pencil, .note-icon-picture, .note-icon-question, .note-icon-redo, .note-icon-row-above, .note-icon-row-below, .note-icon-row-remove, .note-icon-special-character, .note-icon-square, .note-icon-strikethrough, .note-icon-subscript, .note-icon-summernote, .note-icon-superscript, .note-icon-table, .note-icon-text-height, .note-icon-trash, .note-icon-underline, .note-icon-undo, .note-icon-unorderedlist, .note-icon-video { &:before { font-family:"summernote"; display:inline-block; font-weight:normal; font-style:normal; text-decoration:inherit; } } // Icons .note-icon-align-center { &:before { content:"\f101"; } } .note-icon-align-indent { &:before { content:"\f102"; } } .note-icon-align-justify { &:before { content:"\f103"; } } .note-icon-align-left { &:before { content:"\f104"; } } .note-icon-align-outdent { &:before { content:"\f105"; } } .note-icon-align-right { &:before { content:"\f106"; } } .note-icon-align { &:before { content:"\f107"; } } .note-icon-arrow-circle-down { &:before { content:"\f108"; } } .note-icon-arrow-circle-left { &:before { content:"\f109"; } } .note-icon-arrow-circle-right { &:before { content:"\f10a"; } } .note-icon-arrow-circle-up { &:before { content:"\f10b"; } } .note-icon-arrows-alt { &:before { content:"\f10c"; } } .note-icon-arrows-h { &:before { content:"\f10d"; } } .note-icon-arrows-v { &:before { content:"\f10e"; } } .note-icon-bold { &:before { content:"\f10f"; } } .note-icon-caret { &:before { content:"\f110"; } } .note-icon-chain-broken { &:before { content:"\f111"; } } .note-icon-circle { &:before { content:"\f112"; } } .note-icon-close { &:before { content:"\f113"; } } .note-icon-code { &:before { content:"\f114"; } } .note-icon-col-after { &:before { content:"\f115"; } } .note-icon-col-before { &:before { content:"\f116"; } } .note-icon-col-remove { &:before { content:"\f117"; } } .note-icon-eraser { &:before { content:"\f118"; } } .note-icon-font { &:before { content:"\f119"; } } .note-icon-frame { &:before { content:"\f11a"; } } .note-icon-italic { &:before { content:"\f11b"; } } .note-icon-link { &:before { content:"\f11c"; } } .note-icon-magic { &:before { content:"\f11d"; } } .note-icon-menu-check { &:before { content:"\f11e"; } } .note-icon-minus { &:before { content:"\f11f"; } } .note-icon-orderedlist { &:before { content:"\f120"; } } .note-icon-pencil { &:before { content:"\f121"; } } .note-icon-picture { &:before { content:"\f122"; } } .note-icon-question { &:before { content:"\f123"; } } .note-icon-redo { &:before { content:"\f124"; } } .note-icon-row-above { &:before { content:"\f125"; } } .note-icon-row-below { &:before { content:"\f126"; } } .note-icon-row-remove { &:before { content:"\f127"; } } .note-icon-special-character { &:before { content:"\f128"; } } .note-icon-square { &:before { content:"\f129"; } } .note-icon-strikethrough { &:before { content:"\f12a"; } } .note-icon-subscript { &:before { content:"\f12b"; } } .note-icon-summernote { &:before { content:"\f12c"; } } .note-icon-superscript { &:before { content:"\f12d"; } } .note-icon-table { &:before { content:"\f12e"; } } .note-icon-text-height { &:before { content:"\f12f"; } } .note-icon-trash { &:before { content:"\f130"; } } .note-icon-underline { &:before { content:"\f131"; } } .note-icon-undo { &:before { content:"\f132"; } } .note-icon-unorderedlist { &:before { content:"\f133"; } } .note-icon-video { &:before { content:"\f134"; } } PK �{�\@�h��. �. icons/dist/summernote.htmlnu �[��� <!doctype html> <html> <head> <meta charset="utf-8"> <title>summernote</title> <style> body { margin:0; padding:10px 20px; background:#fff; color:#222; } h1, div, footer { font-family:"Helvetica Neue", Arial, sans-serif; } h1 { margin:0 0 20px; font-size:32px; font-weight:normal; } h1 small { font-size: 0.8em; padding-left: 2em; } .icons { margin-bottom:40px; -webkit-column-count:5; -moz-column-count:5; column-count:5; -webkit-column-gap:20px; -moz-column-gap:20px; column-gap:20px; } .icons__item, .icons__item i { line-height:2em; cursor:pointer; overflow:hidden; } .icons__item:hover { color:#3c90be; } .icons__item i { display:inline-block; width:32px; text-align:center; } .icons__item:hover i { -webkit-transform:scale(1.5); transform:scale(1.5); } footer { margin-top:40px; font-size:14px; color:#999; } /* Generated by grunt-webfont */ /* Based on https://github.com/endtwist/fontcustom/blob/master/lib/fontcustom/templates/fontcustom.css */ @font-face { font-family:"summernote"; src:url("font/summernote.eot?dbafe969167589eda84514394d126413"); src:url("font/summernote.eot?#iefix") format("embedded-opentype"), url("font/summernote.woff?dbafe969167589eda84514394d126413") format("woff"), url("font/summernote.ttf?dbafe969167589eda84514394d126413") format("truetype"); font-weight:normal; font-style:normal; } /* Bootstrap Overrides */ [class^="note-icon-"]:before, [class*=" note-icon-"]:before { display:inline-block; vertical-align:middle; font: normal normal normal 14px summernote; font-size: inherit; speak:none; text-decoration:inherit; text-transform:none; text-rendering:auto; -webkit-font-smoothing:antialiased; -moz-osx-font-smoothing:grayscale; } /* Icons */ .note-icon-align-center:before { content:"\f101"; } .note-icon-align-indent:before { content:"\f102"; } .note-icon-align-justify:before { content:"\f103"; } .note-icon-align-left:before { content:"\f104"; } .note-icon-align-outdent:before { content:"\f105"; } .note-icon-align-right:before { content:"\f106"; } .note-icon-align:before { content:"\f107"; } .note-icon-arrow-circle-down:before { content:"\f108"; } .note-icon-arrow-circle-left:before { content:"\f109"; } .note-icon-arrow-circle-right:before { content:"\f10a"; } .note-icon-arrow-circle-up:before { content:"\f10b"; } .note-icon-arrows-alt:before { content:"\f10c"; } .note-icon-arrows-h:before { content:"\f10d"; } .note-icon-arrows-v:before { content:"\f10e"; } .note-icon-bold:before { content:"\f10f"; } .note-icon-caret:before { content:"\f110"; } .note-icon-chain-broken:before { content:"\f111"; } .note-icon-circle:before { content:"\f112"; } .note-icon-close:before { content:"\f113"; } .note-icon-code:before { content:"\f114"; } .note-icon-col-after:before { content:"\f115"; } .note-icon-col-before:before { content:"\f116"; } .note-icon-col-remove:before { content:"\f117"; } .note-icon-eraser:before { content:"\f118"; } .note-icon-font:before { content:"\f119"; } .note-icon-frame:before { content:"\f11a"; } .note-icon-italic:before { content:"\f11b"; } .note-icon-link:before { content:"\f11c"; } .note-icon-magic:before { content:"\f11d"; } .note-icon-menu-check:before { content:"\f11e"; } .note-icon-minus:before { content:"\f11f"; } .note-icon-orderedlist:before { content:"\f120"; } .note-icon-pencil:before { content:"\f121"; } .note-icon-picture:before { content:"\f122"; } .note-icon-question:before { content:"\f123"; } .note-icon-redo:before { content:"\f124"; } .note-icon-row-above:before { content:"\f125"; } .note-icon-row-below:before { content:"\f126"; } .note-icon-row-remove:before { content:"\f127"; } .note-icon-special-character:before { content:"\f128"; } .note-icon-square:before { content:"\f129"; } .note-icon-strikethrough:before { content:"\f12a"; } .note-icon-subscript:before { content:"\f12b"; } .note-icon-summernote:before { content:"\f12c"; } .note-icon-superscript:before { content:"\f12d"; } .note-icon-table:before { content:"\f12e"; } .note-icon-text-height:before { content:"\f12f"; } .note-icon-trash:before { content:"\f130"; } .note-icon-underline:before { content:"\f131"; } .note-icon-undo:before { content:"\f132"; } .note-icon-unorderedlist:before { content:"\f133"; } .note-icon-video:before { content:"\f134"; } </style> </head> <body> <h1>summernote</h1> <div class="icons" id="icons"> <div class="icons__item" data-name="align-center"><i class=" note-icon-align-center"></i> note-icon-align-center</div> <div class="icons__item" data-name="align-indent"><i class=" note-icon-align-indent"></i> note-icon-align-indent</div> <div class="icons__item" data-name="align-justify"><i class=" note-icon-align-justify"></i> note-icon-align-justify</div> <div class="icons__item" data-name="align-left"><i class=" note-icon-align-left"></i> note-icon-align-left</div> <div class="icons__item" data-name="align-outdent"><i class=" note-icon-align-outdent"></i> note-icon-align-outdent</div> <div class="icons__item" data-name="align-right"><i class=" note-icon-align-right"></i> note-icon-align-right</div> <div class="icons__item" data-name="align"><i class=" note-icon-align"></i> note-icon-align</div> <div class="icons__item" data-name="arrow-circle-down"><i class=" note-icon-arrow-circle-down"></i> note-icon-arrow-circle-down</div> <div class="icons__item" data-name="arrow-circle-left"><i class=" note-icon-arrow-circle-left"></i> note-icon-arrow-circle-left</div> <div class="icons__item" data-name="arrow-circle-right"><i class=" note-icon-arrow-circle-right"></i> note-icon-arrow-circle-right</div> <div class="icons__item" data-name="arrow-circle-up"><i class=" note-icon-arrow-circle-up"></i> note-icon-arrow-circle-up</div> <div class="icons__item" data-name="arrows-alt"><i class=" note-icon-arrows-alt"></i> note-icon-arrows-alt</div> <div class="icons__item" data-name="arrows-h"><i class=" note-icon-arrows-h"></i> note-icon-arrows-h</div> <div class="icons__item" data-name="arrows-v"><i class=" note-icon-arrows-v"></i> note-icon-arrows-v</div> <div class="icons__item" data-name="bold"><i class=" note-icon-bold"></i> note-icon-bold</div> <div class="icons__item" data-name="caret"><i class=" note-icon-caret"></i> note-icon-caret</div> <div class="icons__item" data-name="chain-broken"><i class=" note-icon-chain-broken"></i> note-icon-chain-broken</div> <div class="icons__item" data-name="circle"><i class=" note-icon-circle"></i> note-icon-circle</div> <div class="icons__item" data-name="close"><i class=" note-icon-close"></i> note-icon-close</div> <div class="icons__item" data-name="code"><i class=" note-icon-code"></i> note-icon-code</div> <div class="icons__item" data-name="col-after"><i class=" note-icon-col-after"></i> note-icon-col-after</div> <div class="icons__item" data-name="col-before"><i class=" note-icon-col-before"></i> note-icon-col-before</div> <div class="icons__item" data-name="col-remove"><i class=" note-icon-col-remove"></i> note-icon-col-remove</div> <div class="icons__item" data-name="eraser"><i class=" note-icon-eraser"></i> note-icon-eraser</div> <div class="icons__item" data-name="font"><i class=" note-icon-font"></i> note-icon-font</div> <div class="icons__item" data-name="frame"><i class=" note-icon-frame"></i> note-icon-frame</div> <div class="icons__item" data-name="italic"><i class=" note-icon-italic"></i> note-icon-italic</div> <div class="icons__item" data-name="link"><i class=" note-icon-link"></i> note-icon-link</div> <div class="icons__item" data-name="magic"><i class=" note-icon-magic"></i> note-icon-magic</div> <div class="icons__item" data-name="menu-check"><i class=" note-icon-menu-check"></i> note-icon-menu-check</div> <div class="icons__item" data-name="minus"><i class=" note-icon-minus"></i> note-icon-minus</div> <div class="icons__item" data-name="orderedlist"><i class=" note-icon-orderedlist"></i> note-icon-orderedlist</div> <div class="icons__item" data-name="pencil"><i class=" note-icon-pencil"></i> note-icon-pencil</div> <div class="icons__item" data-name="picture"><i class=" note-icon-picture"></i> note-icon-picture</div> <div class="icons__item" data-name="question"><i class=" note-icon-question"></i> note-icon-question</div> <div class="icons__item" data-name="redo"><i class=" note-icon-redo"></i> note-icon-redo</div> <div class="icons__item" data-name="row-above"><i class=" note-icon-row-above"></i> note-icon-row-above</div> <div class="icons__item" data-name="row-below"><i class=" note-icon-row-below"></i> note-icon-row-below</div> <div class="icons__item" data-name="row-remove"><i class=" note-icon-row-remove"></i> note-icon-row-remove</div> <div class="icons__item" data-name="special-character"><i class=" note-icon-special-character"></i> note-icon-special-character</div> <div class="icons__item" data-name="square"><i class=" note-icon-square"></i> note-icon-square</div> <div class="icons__item" data-name="strikethrough"><i class=" note-icon-strikethrough"></i> note-icon-strikethrough</div> <div class="icons__item" data-name="subscript"><i class=" note-icon-subscript"></i> note-icon-subscript</div> <div class="icons__item" data-name="summernote"><i class=" note-icon-summernote"></i> note-icon-summernote</div> <div class="icons__item" data-name="superscript"><i class=" note-icon-superscript"></i> note-icon-superscript</div> <div class="icons__item" data-name="table"><i class=" note-icon-table"></i> note-icon-table</div> <div class="icons__item" data-name="text-height"><i class=" note-icon-text-height"></i> note-icon-text-height</div> <div class="icons__item" data-name="trash"><i class=" note-icon-trash"></i> note-icon-trash</div> <div class="icons__item" data-name="underline"><i class=" note-icon-underline"></i> note-icon-underline</div> <div class="icons__item" data-name="undo"><i class=" note-icon-undo"></i> note-icon-undo</div> <div class="icons__item" data-name="unorderedlist"><i class=" note-icon-unorderedlist"></i> note-icon-unorderedlist</div> <div class="icons__item" data-name="video"><i class=" note-icon-video"></i> note-icon-video</div> </div> <h1>Usage</h1> <pre><code><i class="note-icon-<span id="name">name</span>"></i></code></pre> <footer>Generated by <a href="https://github.com/sapegin/grunt-webfont">grunt-webfont</a>.</footer> <script> (function() { document.getElementById('icons').onclick = function(e) { e = e || window.event; var name = e.target.getAttribute('data-name') || e.target.parentNode.getAttribute('data-name'); document.getElementById('name').innerHTML = name; } })(); </script> </body> </html> PK �{�\SԫA�"