UNPKG

office-ui-fabric-react

Version:

Reusable React components for building experiences for Office 365.

1,259 lines (1,205 loc) • 1.48 MB
var Fabric = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) /******/ return installedModules[moduleId].exports; /******/ /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ exports: {}, /******/ id: moduleId, /******/ loaded: false /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.loaded = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = "/dist/"; /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(0); /******/ }) /************************************************************************/ /******/ ([ /* 0 */ /***/ function(module, exports, __webpack_require__) { /** * WARNING: This entry should NOT be imported for production purposes. This entry forces every control to be * parsed and available at load time, which is not necessary for most cases. */ "use strict"; function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(277)); __export(__webpack_require__(108)); __export(__webpack_require__(278)); __export(__webpack_require__(118)); __export(__webpack_require__(287)); __export(__webpack_require__(288)); __export(__webpack_require__(289)); __export(__webpack_require__(301)); __export(__webpack_require__(302)); __export(__webpack_require__(112)); __export(__webpack_require__(303)); __export(__webpack_require__(307)); __export(__webpack_require__(308)); __export(__webpack_require__(310)); __export(__webpack_require__(311)); __export(__webpack_require__(130)); __export(__webpack_require__(321)); __export(__webpack_require__(322)); __export(__webpack_require__(55)); __export(__webpack_require__(205)); __export(__webpack_require__(323)); __export(__webpack_require__(63)); __export(__webpack_require__(173)); __export(__webpack_require__(175)); __export(__webpack_require__(127)); __export(__webpack_require__(59)); __export(__webpack_require__(222)); __export(__webpack_require__(330)); __export(__webpack_require__(335)); __export(__webpack_require__(338)); __export(__webpack_require__(342)); __export(__webpack_require__(242)); __export(__webpack_require__(315)); __export(__webpack_require__(346)); __export(__webpack_require__(257)); __export(__webpack_require__(362)); __export(__webpack_require__(368)); __export(__webpack_require__(372)); __export(__webpack_require__(152)); __export(__webpack_require__(377)); __export(__webpack_require__(381)); __export(__webpack_require__(385)); __export(__webpack_require__(216)); __export(__webpack_require__(69)); __export(__webpack_require__(389)); __export(__webpack_require__(395)); __export(__webpack_require__(292)); __export(__webpack_require__(400)); __export(__webpack_require__(156)); __export(__webpack_require__(8)); //# sourceMappingURL=index.js.map /***/ }, /* 1 */ /***/ function(module, exports) { module.exports = React; /***/ }, /* 2 */ /***/ function(module, exports) { module.exports = ReactDOM; /***/ }, /* 3 */, /* 4 */, /* 5 */, /* 6 */ /***/ function(module, exports, __webpack_require__) { var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/* WEBPACK VAR INJECTION */(function(global) {/*! ***************************************************************************** Copyright (c) Microsoft Corporation. All rights reserved. Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABLITY OR NON-INFRINGEMENT. See the Apache Version 2.0 License for specific language governing permissions and limitations under the License. ***************************************************************************** */ /* global global, define, System, Reflect, Promise */ var __extends; var __assign; var __rest; var __decorate; var __param; var __metadata; var __awaiter; var __generator; var __exportStar; var __values; var __read; var __spread; var __await; var __asyncGenerator; var __asyncDelegator; var __asyncValues; (function (factory) { var root = typeof global === "object" ? global : typeof self === "object" ? self : typeof this === "object" ? this : {}; if (true) { !(__WEBPACK_AMD_DEFINE_ARRAY__ = [exports], __WEBPACK_AMD_DEFINE_RESULT__ = function (exports) { factory(createExporter(root, createExporter(exports))); }.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); } else if (typeof module === "object" && typeof module.exports === "object") { factory(createExporter(root, createExporter(module.exports))); } else { factory(createExporter(root)); } function createExporter(exports, previous) { return function (id, v) { return exports[id] = previous ? previous(id, v) : v; }; } }) (function (exporter) { var extendStatics = Object.setPrototypeOf || ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; __extends = function (d, b) { extendStatics(d, b); function __() { this.constructor = d; } d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; __assign = Object.assign || function (t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; __rest = function (s, e) { var t = {}; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p]; if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) t[p[i]] = s[p[i]]; return t; }; __decorate = function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; __param = function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; __metadata = function (metadataKey, metadataValue) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); }; __awaiter = function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; __generator = function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t; if (y = 0, t) op = [0, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; __exportStar = function (m, exports) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; }; __values = function (o) { var m = typeof Symbol === "function" && o[Symbol.iterator], i = 0; if (m) return m.call(o); return { next: function () { if (o && i >= o.length) o = void 0; return { value: o && o[i++], done: !o }; } }; }; __read = function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; __spread = function () { for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i])); return ar; }; __await = function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }; __asyncGenerator = function (thisArg, _arguments, generator) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var g = generator.apply(thisArg, _arguments || []), i, q = []; return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } function fulfill(value) { resume("next", value); } function reject(value) { resume("throw", value); } function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } }; __asyncDelegator = function (o) { var i, p; return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; function verb(n, f) { if (o[n]) i[n] = function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; }; } }; __asyncValues = function (o) { if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); var m = o[Symbol.asyncIterator]; return m ? m.call(o) : typeof __values === "function" ? __values(o) : o[Symbol.iterator](); }; exporter("__extends", __extends); exporter("__assign", __assign); exporter("__rest", __rest); exporter("__decorate", __decorate); exporter("__param", __param); exporter("__metadata", __metadata); exporter("__awaiter", __awaiter); exporter("__generator", __generator); exporter("__exportStar", __exportStar); exporter("__values", __values); exporter("__read", __read); exporter("__spread", __spread); exporter("__await", __await); exporter("__asyncGenerator", __asyncGenerator); exporter("__asyncDelegator", __asyncDelegator); exporter("__asyncValues", __asyncValues); }); /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()))) /***/ }, /* 7 */, /* 8 */ /***/ function(module, exports, __webpack_require__) { "use strict"; function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(9)); //# sourceMappingURL=Utilities.js.map /***/ }, /* 9 */ /***/ function(module, exports, __webpack_require__) { "use strict"; function __export(m) { for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p]; } Object.defineProperty(exports, "__esModule", { value: true }); __export(__webpack_require__(10)); __export(__webpack_require__(11)); __export(__webpack_require__(17)); __export(__webpack_require__(19)); __export(__webpack_require__(29)); __export(__webpack_require__(12)); __export(__webpack_require__(30)); __export(__webpack_require__(31)); __export(__webpack_require__(32)); __export(__webpack_require__(33)); __export(__webpack_require__(34)); __export(__webpack_require__(35)); __export(__webpack_require__(36)); __export(__webpack_require__(37)); __export(__webpack_require__(38)); __export(__webpack_require__(14)); __export(__webpack_require__(39)); __export(__webpack_require__(40)); __export(__webpack_require__(41)); __export(__webpack_require__(42)); __export(__webpack_require__(43)); __export(__webpack_require__(44)); __export(__webpack_require__(45)); __export(__webpack_require__(46)); __export(__webpack_require__(47)); __export(__webpack_require__(48)); __export(__webpack_require__(13)); __export(__webpack_require__(49)); __export(__webpack_require__(18)); __export(__webpack_require__(50)); //# sourceMappingURL=index.js.map /***/ }, /* 10 */ /***/ function(module, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * Bugs often appear in async code when stuff gets disposed, but async operations don't get canceled. * This Async helper class solves these issues by tying async code to the lifetime of a disposable object. * * Usage: Anything class extending from BaseModel can access this helper via this.async. Otherwise create a * new instance of the class and remember to call dispose() during your code's dispose handler. * * @public */ var Async = (function () { function Async(parent, onError) { this._timeoutIds = null; this._immediateIds = null; this._intervalIds = null; this._animationFrameIds = null; this._isDisposed = false; this._parent = parent || null; this._onErrorHandler = onError; this._noop = function () { }; } /** * Dispose function, clears all async operations. */ Async.prototype.dispose = function () { var id; this._isDisposed = true; this._parent = null; // Clear timeouts. if (this._timeoutIds) { for (id in this._timeoutIds) { if (this._timeoutIds.hasOwnProperty(id)) { this.clearTimeout(parseInt(id, 10)); } } this._timeoutIds = null; } // Clear immediates. if (this._immediateIds) { for (id in this._immediateIds) { if (this._immediateIds.hasOwnProperty(id)) { this.clearImmediate(parseInt(id, 10)); } } this._immediateIds = null; } // Clear intervals. if (this._intervalIds) { for (id in this._intervalIds) { if (this._intervalIds.hasOwnProperty(id)) { this.clearInterval(parseInt(id, 10)); } } this._intervalIds = null; } // Clear animation frames. if (this._animationFrameIds) { for (id in this._animationFrameIds) { if (this._animationFrameIds.hasOwnProperty(id)) { this.cancelAnimationFrame(parseInt(id, 10)); } } this._animationFrameIds = null; } }; /** * SetTimeout override, which will auto cancel the timeout during dispose. * @param callback - Callback to execute. * @param duration - Duration in milliseconds. * @returns The setTimeout id. */ Async.prototype.setTimeout = function (callback, duration) { var _this = this; var timeoutId = 0; if (!this._isDisposed) { if (!this._timeoutIds) { this._timeoutIds = {}; } /* tslint:disable:ban-native-functions */ timeoutId = setTimeout(function () { // Time to execute the timeout, enqueue it as a foreground task to be executed. try { // Now delete the record and call the callback. delete _this._timeoutIds[timeoutId]; callback.apply(_this._parent); } catch (e) { if (_this._onErrorHandler) { _this._onErrorHandler(e); } } }, duration); /* tslint:enable:ban-native-functions */ this._timeoutIds[timeoutId] = true; } return timeoutId; }; /** * Clears the timeout. * @param id - Id to cancel. */ Async.prototype.clearTimeout = function (id) { if (this._timeoutIds && this._timeoutIds[id]) { /* tslint:disable:ban-native-functions */ clearTimeout(id); delete this._timeoutIds[id]; /* tslint:enable:ban-native-functions */ } }; /** * SetImmediate override, which will auto cancel the immediate during dispose. * @param callback - Callback to execute. * @returns The setTimeout id. */ Async.prototype.setImmediate = function (callback) { var _this = this; var immediateId = 0; if (!this._isDisposed) { if (!this._immediateIds) { this._immediateIds = {}; } /* tslint:disable:ban-native-functions */ var setImmediateCallback = function () { // Time to execute the timeout, enqueue it as a foreground task to be executed. try { // Now delete the record and call the callback. delete _this._immediateIds[immediateId]; callback.apply(_this._parent); } catch (e) { _this._logError(e); } }; immediateId = window.setImmediate ? window.setImmediate(setImmediateCallback) : window.setTimeout(setImmediateCallback, 0); /* tslint:enable:ban-native-functions */ this._immediateIds[immediateId] = true; } return immediateId; }; /** * Clears the immediate. * @param id - Id to cancel. */ Async.prototype.clearImmediate = function (id) { if (this._immediateIds && this._immediateIds[id]) { /* tslint:disable:ban-native-functions */ window.clearImmediate ? window.clearImmediate(id) : window.clearTimeout(id); delete this._immediateIds[id]; /* tslint:enable:ban-native-functions */ } }; /** * SetInterval override, which will auto cancel the timeout during dispose. * @param callback - Callback to execute. * @param duration - Duration in milliseconds. * @returns The setTimeout id. */ Async.prototype.setInterval = function (callback, duration) { var _this = this; var intervalId = 0; if (!this._isDisposed) { if (!this._intervalIds) { this._intervalIds = {}; } /* tslint:disable:ban-native-functions */ intervalId = setInterval(function () { // Time to execute the interval callback, enqueue it as a foreground task to be executed. try { callback.apply(_this._parent); } catch (e) { _this._logError(e); } }, duration); /* tslint:enable:ban-native-functions */ this._intervalIds[intervalId] = true; } return intervalId; }; /** * Clears the interval. * @param id - Id to cancel. */ Async.prototype.clearInterval = function (id) { if (this._intervalIds && this._intervalIds[id]) { /* tslint:disable:ban-native-functions */ clearInterval(id); delete this._intervalIds[id]; /* tslint:enable:ban-native-functions */ } }; /** * Creates a function that, when executed, will only call the func function at most once per * every wait milliseconds. Provide an options object to indicate that func should be invoked * on the leading and/or trailing edge of the wait timeout. Subsequent calls to the throttled * function will return the result of the last func call. * * Note: If leading and trailing options are true func will be called on the trailing edge of * the timeout only if the the throttled function is invoked more than once during the wait timeout. * * @param func - The function to throttle. * @param wait - The number of milliseconds to throttle executions to. Defaults to 0. * @param options - The options object. * @returns The new throttled function. */ Async.prototype.throttle = function (func, wait, options) { var _this = this; if (this._isDisposed) { return this._noop; } var waitMS = wait || 0; var leading = true; var trailing = true; var lastExecuteTime = 0; var lastResult; var lastArgs; var timeoutId = null; if (options && typeof (options.leading) === 'boolean') { leading = options.leading; } if (options && typeof (options.trailing) === 'boolean') { trailing = options.trailing; } var callback = function (userCall) { var now = (new Date).getTime(); var delta = now - lastExecuteTime; var waitLength = leading ? waitMS - delta : waitMS; if (delta >= waitMS && (!userCall || leading)) { lastExecuteTime = now; if (timeoutId) { _this.clearTimeout(timeoutId); timeoutId = null; } lastResult = func.apply(_this._parent, lastArgs); } else if (timeoutId === null && trailing) { timeoutId = _this.setTimeout(callback, waitLength); } return lastResult; }; var resultFunction = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } lastArgs = args; return callback(true); }; return resultFunction; }; /** * Creates a function that will delay the execution of func until after wait milliseconds have * elapsed since the last time it was invoked. Provide an options object to indicate that func * should be invoked on the leading and/or trailing edge of the wait timeout. Subsequent calls * to the debounced function will return the result of the last func call. * * Note: If leading and trailing options are true func will be called on the trailing edge of * the timeout only if the the debounced function is invoked more than once during the wait * timeout. * * @param func - The function to debounce. * @param wait - The number of milliseconds to delay. * @param options - The options object. * @returns The new debounced function. */ Async.prototype.debounce = function (func, wait, options) { var _this = this; if (this._isDisposed) { return this._noop; } var waitMS = wait || 0; var leading = false; var trailing = true; var maxWait = null; var lastCallTime = 0; var lastExecuteTime = (new Date).getTime(); var lastResult; var lastArgs; var timeoutId = null; if (options && typeof (options.leading) === 'boolean') { leading = options.leading; } if (options && typeof (options.trailing) === 'boolean') { trailing = options.trailing; } if (options && typeof (options.maxWait) === 'number' && !isNaN(options.maxWait)) { maxWait = options.maxWait; } var callback = function (userCall) { var now = (new Date).getTime(); var executeImmediately = false; if (userCall) { if (leading && now - lastCallTime >= waitMS) { executeImmediately = true; } lastCallTime = now; } var delta = now - lastCallTime; var waitLength = waitMS - delta; var maxWaitDelta = now - lastExecuteTime; var maxWaitExpired = false; if (maxWait !== null) { // maxWait only matters when there is a pending callback if (maxWaitDelta >= maxWait && timeoutId) { maxWaitExpired = true; } else { waitLength = Math.min(waitLength, maxWait - maxWaitDelta); } } if (delta >= waitMS || maxWaitExpired || executeImmediately) { if (timeoutId) { _this.clearTimeout(timeoutId); timeoutId = null; } lastExecuteTime = now; lastResult = func.apply(_this._parent, lastArgs); } else if ((timeoutId === null || !userCall) && trailing) { timeoutId = _this.setTimeout(callback, waitLength); } return lastResult; }; var resultFunction = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } lastArgs = args; return callback(true); }; return resultFunction; }; Async.prototype.requestAnimationFrame = function (callback) { var _this = this; var animationFrameId = 0; if (!this._isDisposed) { if (!this._animationFrameIds) { this._animationFrameIds = {}; } /* tslint:disable:ban-native-functions */ var animationFrameCallback = function () { try { // Now delete the record and call the callback. if (_this._animationFrameIds) { delete _this._animationFrameIds[animationFrameId]; } callback.apply(_this._parent); } catch (e) { _this._logError(e); } }; animationFrameId = window.requestAnimationFrame ? window.requestAnimationFrame(animationFrameCallback) : window.setTimeout(animationFrameCallback, 0); /* tslint:enable:ban-native-functions */ this._animationFrameIds[animationFrameId] = true; } return animationFrameId; }; Async.prototype.cancelAnimationFrame = function (id) { if (this._animationFrameIds && this._animationFrameIds[id]) { /* tslint:disable:ban-native-functions */ window.cancelAnimationFrame ? window.cancelAnimationFrame(id) : window.clearTimeout(id); /* tslint:enable:ban-native-functions */ delete this._animationFrameIds[id]; } }; Async.prototype._logError = function (e) { if (this._onErrorHandler) { this._onErrorHandler(e); } }; return Async; }()); exports.Async = Async; //# sourceMappingURL=Async.js.map /***/ }, /* 11 */ /***/ function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var EventGroup_1 = __webpack_require__(12); var scroll_1 = __webpack_require__(13); var dom_1 = __webpack_require__(14); var SCROLL_ITERATION_DELAY = 16; var SCROLL_GUTTER_HEIGHT = 100; var MAX_SCROLL_VELOCITY = 15; /** * AutoScroll simply hooks up mouse events given a parent element, and scrolls the container * up/down depending on how close the mouse is to the top/bottom of the container. * * Once you don't want autoscroll any more, just dispose the helper and it will unhook events. * * @public */ var AutoScroll = (function () { function AutoScroll(element) { this._events = new EventGroup_1.EventGroup(this); this._scrollableParent = scroll_1.findScrollableParent(element); this._incrementScroll = this._incrementScroll.bind(this); this._scrollRect = dom_1.getRect(this._scrollableParent); if (this._scrollableParent === window) { this._scrollableParent = document.body; } if (this._scrollableParent) { this._events.on(window, 'mousemove', this._onMouseMove, true); this._events.on(window, 'touchmove', this._onTouchMove, true); } } AutoScroll.prototype.dispose = function () { this._events.dispose(); this._stopScroll(); }; AutoScroll.prototype._onMouseMove = function (ev) { this._computeScrollVelocity(ev.clientY); }; AutoScroll.prototype._onTouchMove = function (ev) { if (ev.touches.length > 0) { this._computeScrollVelocity(ev.touches[0].clientY); } }; AutoScroll.prototype._computeScrollVelocity = function (clientY) { if (!this._scrollRect) { return; } var scrollRectTop = this._scrollRect.top; var scrollClientBottom = scrollRectTop + this._scrollRect.height - SCROLL_GUTTER_HEIGHT; if (clientY < (scrollRectTop + SCROLL_GUTTER_HEIGHT)) { this._scrollVelocity = Math.max(-MAX_SCROLL_VELOCITY, -MAX_SCROLL_VELOCITY * ((SCROLL_GUTTER_HEIGHT - (clientY - scrollRectTop)) / SCROLL_GUTTER_HEIGHT)); } else if (clientY > scrollClientBottom) { this._scrollVelocity = Math.min(MAX_SCROLL_VELOCITY, MAX_SCROLL_VELOCITY * ((clientY - scrollClientBottom) / SCROLL_GUTTER_HEIGHT)); } else { this._scrollVelocity = 0; } if (this._scrollVelocity) { this._startScroll(); } else { this._stopScroll(); } }; AutoScroll.prototype._startScroll = function () { if (!this._timeoutId) { this._incrementScroll(); } }; AutoScroll.prototype._incrementScroll = function () { if (this._scrollableParent) { this._scrollableParent.scrollTop += Math.round(this._scrollVelocity); } this._timeoutId = setTimeout(this._incrementScroll, SCROLL_ITERATION_DELAY); }; AutoScroll.prototype._stopScroll = function () { if (this._timeoutId) { clearTimeout(this._timeoutId); delete this._timeoutId; } }; return AutoScroll; }()); exports.AutoScroll = AutoScroll; //# sourceMappingURL=AutoScroll.js.map /***/ }, /* 12 */ /***/ function(module, exports) { /* tslint:disable:no-string-literal */ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** An instance of EventGroup allows anything with a handle to it to trigger events on it. * If the target is an HTMLElement, the event will be attached to the element and can be * triggered as usual (like clicking for onclick). * The event can be triggered by calling EventGroup.raise() here. If the target is an * HTMLElement, the event gets raised and is handled by the browser. Otherwise, it gets * handled here in EventGroup, and the handler is called in the context of the parent * (which is passed in in the constructor). * * @public */ var EventGroup = (function () { /** parent: the context in which events attached to non-HTMLElements are called */ function EventGroup(parent) { this._id = EventGroup._uniqueId++; this._parent = parent; this._eventRecords = []; } /** For IE8, bubbleEvent is ignored here and must be dealt with by the handler. * Events raised here by default have bubbling set to false and cancelable set to true. * This applies also to built-in events being raised manually here on HTMLElements, * which may lead to unexpected behavior if it differs from the defaults. * */ EventGroup.raise = function (target, eventName, eventArgs, bubbleEvent) { var retVal; if (EventGroup._isElement(target)) { if (document.createEvent) { var ev = document.createEvent('HTMLEvents'); ev.initEvent(eventName, bubbleEvent || false, true); ev['args'] = eventArgs; retVal = target.dispatchEvent(ev); } else if (document['createEventObject']) { var evObj = document['createEventObject'](eventArgs); // cannot set cancelBubble on evObj, fireEvent will overwrite it target.fireEvent('on' + eventName, evObj); } } else { while (target && retVal !== false) { var events = target.__events__; var eventRecords = events ? events[eventName] : null; if (eventRecords) { for (var id in eventRecords) { if (eventRecords.hasOwnProperty(id)) { var eventRecordList = eventRecords[id]; for (var listIndex = 0; retVal !== false && listIndex < eventRecordList.length; listIndex++) { var record = eventRecordList[listIndex]; if (record.objectCallback) { retVal = record.objectCallback.call(record.parent, eventArgs); } } } } } // If the target has a parent, bubble the event up. target = bubbleEvent ? target.parent : null; } } return retVal; }; EventGroup.isObserved = function (target, eventName) { var events = target && target.__events__; return !!events && !!events[eventName]; }; /** Check to see if the target has declared support of the given event. */ EventGroup.isDeclared = function (target, eventName) { var declaredEvents = target && target.__declaredEvents; return !!declaredEvents && !!declaredEvents[eventName]; }; EventGroup.stopPropagation = function (event) { if (event.stopPropagation) { event.stopPropagation(); } else { event.cancelBubble = true; } }; EventGroup._isElement = function (target) { return !!target && (target.addEventListener || target instanceof HTMLElement); }; EventGroup.prototype.dispose = function () { if (!this._isDisposed) { this._isDisposed = true; this.off(); this._parent = null; } }; /** On the target, attach a set of events, where the events object is a name to function mapping. */ EventGroup.prototype.onAll = function (target, events, useCapture) { for (var eventName in events) { if (events.hasOwnProperty(eventName)) { this.on(target, eventName, events[eventName], useCapture); } } }; /** On the target, attach an event whose handler will be called in the context of the parent * of this instance of EventGroup. */ EventGroup.prototype.on = function (target, eventName, callback, useCapture) { var _this = this; if (eventName.indexOf(',') > -1) { var events = eventName.split(/[ ,]+/); for (var i = 0; i < events.length; i++) { this.on(target, events[i], callback, useCapture); } } else { var parent_1 = this._parent; var eventRecord = { target: target, eventName: eventName, parent: parent_1, callback: callback, useCapture: useCapture || false }; // Initialize and wire up the record on the target, so that it can call the callback if the event fires. var events = (target.__events__ = target.__events__ || {}); events[eventName] = events[eventName] || { count: 0 }; events[eventName][this._id] = events[eventName][this._id] || []; events[eventName][this._id].push(eventRecord); events[eventName].count++; if (EventGroup._isElement(target)) { var processElementEvent = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (_this._isDisposed) { return; } var result; try { result = callback.apply(parent_1, args); if (result === false && args[0]) { var e = args[0]; if (e.preventDefault) { e.preventDefault(); } if (e.stopPropagation) { e.stopPropagation(); } e.cancelBubble = true; } } catch (e) { /* ErrorHelper.log(e); */ } return result; }; eventRecord.elementCallback = processElementEvent; if (target.addEventListener) { /* tslint:disable:ban-native-functions */ target.addEventListener(eventName, processElementEvent, useCapture); /* tslint:enable:ban-native-functions */ } else if (target.attachEvent) { target.attachEvent('on' + eventName, processElementEvent); } } else { var processObjectEvent = function () { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } if (_this._isDisposed) { return; } return callback.apply(parent_1, args); }; eventRecord.objectCallback = processObjectEvent; } // Remember the record locally, so that it can be removed. this._eventRecords.push(eventRecord); } }; EventGroup.prototype.off = function (target, eventName, callback, useCapture) { for (var i = 0; i < this._eventRecords.length; i++) { var eventRecord = this._eventRecords[i]; if ((!target || target === eventRecord.target) && (!eventName || eventName === eventRecord.eventName) && (!callback || callback === eventRecord.callback) && ((typeof useCapture !== 'boolean') || useCapture === eventRecord.useCapture)) { var events = eventRecord.target.__events__; var targetArrayLookup = events[eventRecord.eventName]; var targetArray = targetArrayLookup ? targetArrayLookup[this._id] : null; // We may have already target's entries, so check for null. if (targetArray) { if (targetArray.length === 1 || !callback) { targetArrayLookup.count -= targetArray.length; delete events[eventRecord.eventName][this._id]; } else { targetArrayLookup.count--; targetArray.splice(targetArray.indexOf(eventRecord), 1); } if (!targetArrayLookup.count) { delete events[eventRecord.eventName]; } } if (eventRecord.elementCallback) { if (eventRecord.target.removeEventListener) { eventRecord.target.removeEventListener(eventRecord.eventName, eventRecord.elementCallback, eventRecord.useCapture); } else if (eventRecord.target.detachEvent) { eventRecord.target.detachEvent('on' + eventRecord.eventName, eventRecord.elementCallback); } } this._eventRecords.splice(i--, 1); } } }; /** Trigger the given event in the context of this instance of EventGroup. */ EventGroup.prototype.raise = function (eventName, eventArgs, bubbleEvent) { return EventGroup.raise(this._parent, eventName, eventArgs, bubbleEvent); }; /** Declare an event as being supported by this instance of EventGroup. */ EventGroup.prototype.declare = function (event) { var declaredEvents = this._parent.__declaredEvents = this._parent.__declaredEvents || {}; if (typeof event === 'string') { declaredEvents[event] = true; } else { for (var i = 0; i < event.length; i++) { declaredEvents[event[i]] = true; } } }; return EventGroup; }()); EventGroup._uniqueId = 0; exports.EventGroup = EventGroup; //# sourceMappingURL=EventGroup.js.map /***/ }, /* 13 */ /***/ function(module, exports, __webpack_require__) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var dom_1 = __webpack_require__(14); var scroll_scss_1 = __webpack_require__(15); var _scrollbarWidth; var _bodyScrollDisabledCount = 0; /** * Placing this attribute on scrollable divs optimizes detection to know * if the div is scrollable or not (given we can avoid expensive operations * like getComputedStyle.) * * @public */ exports.DATA_IS_SCROLLABLE_ATTRIBUTE = 'data-is-scrollable'; /** * Disables the body scrolling. * * @public */ function disableBodyScroll() { var doc = dom_1.getDocument(); if (doc && doc.body && !_bodyScrollDisabledCount) { doc.body.classList.add(scroll_scss_1.default.msFabricScrollDisabled); } _bodyScrollDisabledCount++; } exports.disableBodyScroll = disableBodyScroll; /** * Enables the body scrolling. * * @public */ function enableBodyScroll() { if (_bodyScrollDisabledCount > 0) { var doc = dom_1.getDocument(); if (doc && doc.body && _bodyScrollDisabledCount === 1) { doc.body.classList.remove(scroll_scss_1.default.msFabricScrollDisabled); } _bodyScrollDisabledCount--; } } exports.enableBodyScroll = enableBodyScroll; /** * Calculates the width of a scrollbar for the browser/os. * * @public */ function getScrollbarWidth() { if (_scrollbarWidth === undefined) { var scrollDiv = document.createElement('div'); scrollDiv.style.setProperty('width', '100px'); scrollDiv.style.setProperty('height', '100px'); scrollDiv.style.setProperty('overflow', 'scroll'); scrollDiv.style.setProperty('position', 'absolute'); scrollDiv.style.setProperty('top', '-9999px'); document.body.appendChild(scrollDiv); // Get the scrollbar width _scrollbarWidth = scrollDiv.offsetWidth - scrollDiv.clientWidth; // Delete the DIV document.body.removeChild(scrollDiv); } return _scrollbarWidth; } exports.getScrollbarWidth = getScrollbarWidth; /** * Traverses up the DOM for the element with the data-is-scrollable=true attribute, or returns * document.body. * * @public */ function findScrollableParent(startingElement) { var el = startingElement; // First do a quick scan for the scrollable attribute. while (el && el !== document.body) { if (el.getAttribute(exports.DATA_IS_SCROLLABLE_ATTRIBUTE) === 'true') { return el; } el = el.parentElement; } // If we haven't found it, the use the slower method: compute styles to evaluate if overflow is set. el = startingElement; while (el && el !== document.body) { if (el.getAttribute(exports.DATA_IS_SCROLLABLE_ATTRIBUTE) !== 'false') { var styles_1 = getComputedStyle(el); var overflowY = styles_1 ? styles_1.getPropertyValue('overflow-y') : ''; if (overflowY && (overflowY === 'scroll' || overflowY === 'auto')) { return el; } } el = el.parentElement; } // Fall back to window scroll. if (!el || el === document.body) { el = window; } return el; } exports.findScrollableParent = findScrollableParent; //# sourceMappingURL=scroll.js.map /***/ }, /* 14 */ /***/ function(module, exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); /** * Sets the virtual parent of an element. * Pass `undefined` as the `parent` to clear the virtual parent. * * @public */ function setVirtualParent(child, parent) { var virtualChild = child; var virtualParent = parent; if (!virtualChild._virtual) { virtualChild._virtual = { children: [] }; } var oldParent = virtualChild._virtual.parent; if (oldParent && oldParent !== parent) { // Remove the child from its old parent. var index = oldParent._virtual.children.indexOf(virtualChild); if (index > -1) { oldParent._virtual.children.splice(index, 1); } } virtualChild._virtual.parent = virtualParent || undefined; if