{"version":3,"file":"vendor.4372d84a4499edaf.js","mappings":"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vjX,GACZ/1G,KAAKmghB,aAAepqa,CACvB,CACGs4B,WACA,OAAOruI,KAAKi7J,KACf,CACG5sB,SAAKt4B,GACL/1G,KAAKi7J,MAAQllD,CAChB,CACGvS,YACA,OAAOxjG,KAAK+9a,MACf,CACGv6U,UAAMuS,GACN/1G,KAAK+9a,OAAShoU,CACjB,CACGqra,kBACA,OAAOphhB,KAAKoghB,YACf,CACGgB,gBAAYrra,GACZ/1G,KAAKoghB,aAAerqa,CACvB,CACGsra,iBACA,OAAOrhhB,KAAKqghB,WACf,CACGgB,eAAWtra,GACX/1G,KAAKqghB,YAActqa,CACtB,CACGk9R,aACA,OAAOjzY,KAAK6yY,OACf,CACGI,WAAOl9R,GACP/1G,KAAK6yY,QAAU98R,CAClB,CACGs7Z,WACA,OAAOrxgB,KAAKsghB,KACf,CACGjP,SAAKt7Z,GACL/1G,KAAKsghB,MAAQvqa,CAChB,CACGw9H,eACA,OAAOvzO,KAAKurS,SACf,CACGh4D,aAASx9H,GACT/1G,KAAKurS,UAAYx1L,CACpB,CACGura,qBACA,OAAOthhB,KAAKughB,eACf,CACGe,mBAAevra,GACf/1G,KAAKughB,gBAAkBxqa,CAC1B,CACGwra,cACA,OAAOvhhB,KAAKwhhB,QACf,CACGD,YAAQxra,GACR/1G,KAAKwhhB,SAAWzra,CACnB,CACG0ra,iBACA,OAAOzhhB,KAAKwghB,WACf,CACGiB,eAAW1ra,GACX/1G,KAAKwghB,YAAczqa,CACtB,CACG2ra,iBACA,OAAO1hhB,KAAKyghB,WACf,CACGiB,eAAW3ra,GACX/1G,KAAKyghB,YAAc1qa,CACtB,CACG4ra,wBACA,OAAO3hhB,KAAK4hhB,kBACf,CACGD,sBAAkB5ra,GAClB/1G,KAAK4hhB,mBAAqB7ra,CAC7B,CACG46Y,cACA,OAAO3wf,KAAKowf,QACf,CACGO,YAAQ56Y,GACR/1G,KAAKowf,SAAWr6Y,CACnB,CACG8ra,eACA,OAAO7hhB,KAAK0ghB,SACf,CACGmB,aAAS9ra,GACT/1G,KAAK0ghB,UAAY3qa,CACpB,CACG+ra,cACA,OAAO9hh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","sources":["en.js","./node_modules/@auth0/angular-jwt/fesm2015/auth0-angular-jwt.js","./node_modules/angular2-uuid/index.js","./node_modules/fabric/dist/fabric.js","./node_modules/file-saver/dist/FileSaver.min.js","./node_modules/hammerjs/hammer.js","./node_modules/lodash/lodash.js","./node_modules/mime-db/index.js","./node_modules/ng2-pdf-viewer/node_modules/tslib/tslib.es6.js","./node_modules/ng2-pdf-viewer/__ivy_ngcc__/fesm2015/ng2-pdf-viewer.js","./node_modules/ng2-search-filter/__ivy_ngcc__/ng2-search-filter.js","./node_modules/pdfjs-dist/es5/build/pdf.js","./node_modules/pdfjs-dist/es5/web/pdf_viewer.js","./node_modules/print-js/dist/print.js","./node_modules/rxjs/_esm2015/internal/BehaviorSubject.js","./node_modules/rxjs/_esm2015/internal/Observable.js","./node_modules/rxjs/_esm2015/internal/util/toSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/canReportError.js","./node_modules/rxjs/_esm2015/internal/Observer.js","./node_modules/rxjs/_esm2015/internal/OuterSubscriber.js","./node_modules/rxjs/_esm2015/internal/SubjectSubscription.js","./node_modules/rxjs/_esm2015/internal/Subject.js","./node_modules/rxjs/_esm2015/internal/Subscriber.js","./node_modules/rxjs/_esm2015/internal/util/UnsubscriptionError.js","./node_modules/rxjs/_esm2015/internal/Subscription.js","./node_modules/rxjs/_esm2015/internal/config.js","./node_modules/rxjs/_esm2015/internal/innerSubscribe.js","./node_modules/rxjs/_esm2015/internal/observable/ConnectableObservable.js","./node_modules/rxjs/_esm2015/internal/observable/combineLatest.js","./node_modules/rxjs/_esm2015/internal/observable/concat.js","./node_modules/rxjs/_esm2015/internal/operators/concatAll.js","./node_modules/rxjs/_esm2015/internal/observable/defer.js","./node_modules/rxjs/_esm2015/internal/observable/empty.js","./node_modules/rxjs/_esm2015/internal/observable/forkJoin.js","./node_modules/rxjs/_esm2015/internal/observable/from.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduled.js","./node_modules/rxjs/_esm2015/internal/util/isInteropObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleObservable.js","./node_modules/rxjs/_esm2015/internal/scheduled/schedulePromise.js","./node_modules/rxjs/_esm2015/internal/util/isIterable.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleIterable.js","./node_modules/rxjs/_esm2015/internal/observable/fromArray.js","./node_modules/rxjs/_esm2015/internal/observable/fromEvent.js","./node_modules/rxjs/_esm2015/internal/observable/interval.js","./node_modules/rxjs/_esm2015/internal/observable/merge.js","./node_modules/rxjs/_esm2015/internal/observable/never.js","./node_modules/rxjs/_esm2015/internal/observable/of.js","./node_modules/rxjs/_esm2015/internal/observable/throwError.js","./node_modules/rxjs/_esm2015/internal/observable/timer.js","./node_modules/rxjs/_esm2015/internal/operators/audit.js","./node_modules/rxjs/_esm2015/internal/operators/auditTime.js","./node_modules/rxjs/_esm2015/internal/operators/catchError.js","./node_modules/rxjs/_esm2015/internal/operators/concatMap.js","./node_modules/rxjs/_esm2015/internal/operators/debounceTime.js","./node_modules/rxjs/_esm2015/internal/operators/defaultIfEmpty.js","./node_modules/rxjs/_esm2015/internal/Notification.js","./node_modules/rxjs/_esm2015/internal/operators/delay.js","./node_modules/rxjs/_esm2015/internal/util/isDate.js","./node_modules/rxjs/_esm2015/internal/operators/distinctUntilChanged.js","./node_modules/rxjs/_esm2015/internal/operators/filter.js","./node_modules/rxjs/_esm2015/internal/operators/finalize.js","./node_modules/rxjs/_esm2015/internal/operators/first.js","./node_modules/rxjs/_esm2015/internal/operators/last.js","./node_modules/rxjs/_esm2015/internal/operators/map.js","./node_modules/rxjs/_esm2015/internal/operators/mergeAll.js","./node_modules/rxjs/_esm2015/internal/operators/mergeMap.js","./node_modules/rxjs/_esm2015/internal/operators/multicast.js","./node_modules/rxjs/_esm2015/internal/operators/refCount.js","./node_modules/rxjs/_esm2015/internal/operators/share.js","./node_modules/rxjs/_esm2015/internal/operators/skip.js","./node_modules/rxjs/_esm2015/internal/operators/startWith.js","./node_modules/rxjs/_esm2015/internal/operators/switchMap.js","./node_modules/rxjs/_esm2015/internal/operators/take.js","./node_modules/rxjs/_esm2015/internal/operators/takeLast.js","./node_modules/rxjs/_esm2015/internal/operators/takeUntil.js","./node_modules/rxjs/_esm2015/internal/operators/tap.js","./node_modules/rxjs/_esm2015/internal/operators/throwIfEmpty.js","./node_modules/rxjs/_esm2015/internal/scheduled/scheduleArray.js","./node_modules/rxjs/_esm2015/internal/scheduler/Action.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncAction.js","./node_modules/rxjs/_esm2015/internal/Scheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsyncScheduler.js","./node_modules/rxjs/_esm2015/internal/util/Immediate.js","./node_modules/rxjs/_esm2015/internal/scheduler/asap.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AsapAction.js","./node_modules/rxjs/_esm2015/internal/scheduler/async.js","./node_modules/rxjs/_esm2015/internal/symbol/iterator.js","./node_modules/rxjs/_esm2015/internal/symbol/observable.js","./node_modules/rxjs/_esm2015/internal/symbol/rxSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/ArgumentOutOfRangeError.js","./node_modules/rxjs/_esm2015/internal/util/EmptyError.js","./node_modules/rxjs/_esm2015/internal/util/ObjectUnsubscribedError.js","./node_modules/rxjs/_esm2015/internal/util/hostReportError.js","./node_modules/rxjs/_esm2015/internal/util/identity.js","./node_modules/rxjs/_esm2015/internal/util/isArray.js","./node_modules/rxjs/_esm2015/internal/util/isArrayLike.js","./node_modules/rxjs/_esm2015/internal/util/isFunction.js","./node_modules/rxjs/_esm2015/internal/util/isNumeric.js","./node_modules/rxjs/_esm2015/internal/util/isObject.js","./node_modules/rxjs/_esm2015/internal/util/isPromise.js","./node_modules/rxjs/_esm2015/internal/util/isScheduler.js","./node_modules/rxjs/_esm2015/internal/util/noop.js","./node_modules/rxjs/_esm2015/internal/util/pipe.js","./node_modules/rxjs/_esm2015/internal/util/subscribeTo.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToObservable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToPromise.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToIterable.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToArray.js","./node_modules/rxjs/_esm2015/internal/InnerSubscriber.js","./node_modules/rxjs/_esm2015/internal/util/subscribeToResult.js","./node_modules/util/node_modules/inherits/inherits_browser.js","./node_modules/util/support/isBufferBrowser.js","./node_modules/util/util.js","./node_modules/uuid/dist/esm-browser/rng.js","./node_modules/uuid/dist/esm-browser/regex.js","./node_modules/uuid/dist/esm-browser/validate.js","./node_modules/uuid/dist/esm-browser/stringify.js","./node_modules/uuid/dist/esm-browser/v4.js","./node_modules/tslib/tslib.es6.js","./node_modules/@angular/animations/fesm2015/animations.mjs","./node_modules/@angular/cdk/fesm2015/layout.mjs","./node_modules/@angular/cdk/fesm2015/a11y.mjs","./node_modules/@angular/cdk/fesm2015/bidi.mjs","./node_modules/@angular/cdk/fesm2015/coercion.mjs","./node_modules/@angular/cdk/fesm2015/keycodes.mjs","./node_modules/@angular/cdk/fesm2015/observers.mjs","./node_modules/@angular/cdk/fesm2015/platform.mjs","./node_modules/@angular/cdk/fesm2015/portal.mjs","./node_modules/rxjs/_esm2015/internal/scheduler/animationFrame.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameScheduler.js","./node_modules/rxjs/_esm2015/internal/scheduler/AnimationFrameAction.js","./node_modules/@angular/cdk/fesm2015/scrolling.mjs","./node_modules/@angular/cdk/fesm2015/text-field.mjs","./node_modules/@angular/common/fesm2015/common.mjs","./node_modules/@angular/common/fesm2015/http.mjs","./node_modules/@angular/core/fesm2015/core.mjs","./node_modules/@angular/forms/fesm2015/forms.mjs","./node_modules/@angular/material/fesm2015/button.mjs","./node_modules/@angular/cdk/fesm2015/collections.mjs","./node_modules/@angular/material/fesm2015/form-field.mjs","./node_modules/@angular/material/fesm2015/chips.mjs","./node_modules/@angular/material/fesm2015/core.mjs","./node_modules/@angular/material/fesm2015/divider.mjs","./node_modules/@angular/material/fesm2015/icon.mjs","./node_modules/@angular/cdk/fesm2015/overlay.mjs","./node_modules/@angular/material/fesm2015/menu.mjs","./node_modules/@angular/material/fesm2015/tabs.mjs","./node_modules/@angular/animations/fesm2015/browser.mjs","./node_modules/@angular/platform-browser/fesm2015/animations.mjs","./node_modules/@angular/platform-browser/fesm2015/platform-browser.mjs","./node_modules/rxjs/_esm2015/internal/operators/scan.js","./node_modules/rxjs/_esm2015/internal/operators/takeWhile.js","./node_modules/rxjs/_esm2015/internal/operators/mapTo.js","./node_modules/@angular/router/fesm2015/router.mjs","./node_modules/@angular/service-worker/fesm2015/service-worker.mjs","./node_modules/rxjs/_esm2015/internal/operators/publish.js","./node_modules/rxjs/_esm2015/internal/observable/race.js","./node_modules/rxjs/_esm2015/internal/observable/zip.js","./node_modules/rxjs/_esm2015/internal/operators/withLatestFrom.js","./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","./node_modules/@popperjs/core/lib/enums.js","./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","./node_modules/@popperjs/core/lib/utils/math.js","./node_modules/@popperjs/core/lib/utils/userAgent.js","./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","./node_modules/@popperjs/core/lib/dom-utils/contains.js","./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","./node_modules/@popperjs/core/lib/utils/getVariation.js","./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","./node_modules/@popperjs/core/lib/utils/computeOffsets.js","./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","./node_modules/@popperjs/core/lib/utils/detectOverflow.js","./node_modules/@popperjs/core/lib/modifiers/flip.js","./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","./node_modules/@popperjs/core/lib/utils/within.js","./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","./node_modules/@popperjs/core/lib/utils/getAltAxis.js","./node_modules/@popperjs/core/lib/modifiers/arrow.js","./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","./node_modules/@popperjs/core/lib/utils/orderModifiers.js","./node_modules/@popperjs/core/lib/utils/debounce.js","./node_modules/@popperjs/core/lib/createPopper.js","./node_modules/@popperjs/core/lib/utils/mergeByName.js","./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","./node_modules/@popperjs/core/lib/popper-lite.js","./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","./node_modules/@popperjs/core/lib/modifiers/offset.js","./node_modules/@ng-bootstrap/ng-bootstrap/fesm2015/ng-bootstrap.mjs","./node_modules/rxjs/_esm2015/internal/operators/endWith.js","./node_modules/angular-resize-event/fesm2015/angular-resize-event.mjs","./node_modules/browser-image-compression/dist/browser-image-compression.mjs","./node_modules/primeng/fesm2015/primeng-accordion.mjs","./node_modules/primeng/fesm2015/primeng-api.mjs","./node_modules/primeng/fesm2015/primeng-breadcrumb.mjs","./node_modules/primeng/fesm2015/primeng-button.mjs","./node_modules/primeng/fesm2015/primeng-calendar.mjs","./node_modules/primeng/fesm2015/primeng-checkbox.mjs","./node_modules/primeng/fesm2015/primeng-chips.mjs","./node_modules/primeng/fesm2015/primeng-dom.mjs","./node_modules/primeng/fesm2015/primeng-autofocus.mjs","./node_modules/primeng/fesm2015/primeng-dropdown.mjs","./node_modules/primeng/fesm2015/primeng-messages.mjs","./node_modules/primeng/fesm2015/primeng-progressbar.mjs","./node_modules/primeng/fesm2015/primeng-fileupload.mjs","./node_modules/primeng/fesm2015/primeng-inputswitch.mjs","./node_modules/primeng/fesm2015/primeng-inputtext.mjs","./node_modules/primeng/fesm2015/primeng-multiselect.mjs","./node_modules/primeng/fesm2015/primeng-overlay.mjs","./node_modules/primeng/fesm2015/primeng-radiobutton.mjs","./node_modules/primeng/fesm2015/primeng-ripple.mjs","./node_modules/primeng/fesm2015/primeng-scroller.mjs","./node_modules/primeng/fesm2015/primeng-inputnumber.mjs","./node_modules/primeng/fesm2015/primeng-paginator.mjs","./node_modules/primeng/fesm2015/primeng-selectbutton.mjs","./node_modules/primeng/fesm2015/primeng-tristatecheckbox.mjs","./node_modules/primeng/fesm2015/primeng-table.mjs","./node_modules/primeng/fesm2015/primeng-tabview.mjs","./node_modules/primeng/fesm2015/primeng-toast.mjs","./node_modules/primeng/fesm2015/primeng-tooltip.mjs","./node_modules/primeng/fesm2015/primeng-utils.mjs"],"sourcesContent":["\"use strict\";(function(global){global.ng=global.ng||{};global.ng.common=global.ng.common||{};global.ng.common.locales=global.ng.common.locales||{};const u=undefined;function plural(val){const n=val,i=Math.floor(Math.abs(val)),v=val.toString().replace(/^[^.]*\\.?/,\"\").length;if(i===1&&v===0)return 1;return 5}global.ng.common.locales[\"en\"]=[\"en\",[[\"a\",\"p\"],[\"AM\",\"PM\"],u],[[\"AM\",\"PM\"],u,u],[[\"S\",\"M\",\"T\",\"W\",\"T\",\"F\",\"S\"],[\"Sun\",\"Mon\",\"Tue\",\"Wed\",\"Thu\",\"Fri\",\"Sat\"],[\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\"],[\"Su\",\"Mo\",\"Tu\",\"We\",\"Th\",\"Fr\",\"Sa\"]],u,[[\"J\",\"F\",\"M\",\"A\",\"M\",\"J\",\"J\",\"A\",\"S\",\"O\",\"N\",\"D\"],[\"Jan\",\"Feb\",\"Mar\",\"Apr\",\"May\",\"Jun\",\"Jul\",\"Aug\",\"Sep\",\"Oct\",\"Nov\",\"Dec\"],[\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\"]],u,[[\"B\",\"A\"],[\"BC\",\"AD\"],[\"Before Christ\",\"Anno Domini\"]],0,[6,0],[\"M/d/yy\",\"MMM d, y\",\"MMMM d, y\",\"EEEE, MMMM d, y\"],[\"h:mm a\",\"h:mm:ss a\",\"h:mm:ss a z\",\"h:mm:ss a zzzz\"],[\"{1}, {0}\",u,\"{1} 'at' {0}\",u],[\".\",\",\",\";\",\"%\",\"+\",\"-\",\"E\",\"\\xD7\",\"\\u2030\",\"\\u221E\",\"NaN\",\":\"],[\"#,##0.###\",\"#,##0%\",\"\\xA4#,##0.00\",\"#E0\"],\"USD\",\"$\",\"US Dollar\",{},\"ltr\",plural,[[[\"mi\",\"n\",\"in the morning\",\"in the afternoon\",\"in the evening\",\"at night\"],[\"midnight\",\"noon\",\"in the morning\",\"in the afternoon\",\"in the evening\",\"at night\"],u],[[\"midnight\",\"noon\",\"morning\",\"afternoon\",\"evening\",\"night\"],u,u],[\"00:00\",\"12:00\",[\"06:00\",\"12:00\"],[\"12:00\",\"18:00\"],[\"18:00\",\"21:00\"],[\"21:00\",\"06:00\"]]]]})(typeof globalThis!==\"undefined\"&&globalThis||typeof global!==\"undefined\"&&global||typeof window!==\"undefined\"&&window);","import * as i0 from '@angular/core';\nimport { InjectionToken, Injectable, Inject, NgModule, Optional, SkipSelf } from '@angular/core';\nimport { DOCUMENT } from '@angular/common';\nimport { mergeMap } from 'rxjs/operators';\nimport { from } from 'rxjs';\nimport { HTTP_INTERCEPTORS } from '@angular/common/http';\n\nconst JWT_OPTIONS = new InjectionToken('JWT_OPTIONS');\n\n// tslint:disable:no-bitwise\nclass JwtHelperService {\n constructor(config = null) {\n this.tokenGetter = (config && config.tokenGetter) || function () { };\n }\n urlBase64Decode(str) {\n let output = str.replace(/-/g, '+').replace(/_/g, '/');\n switch (output.length % 4) {\n case 0: {\n break;\n }\n case 2: {\n output += '==';\n break;\n }\n case 3: {\n output += '=';\n break;\n }\n default: {\n throw new Error('Illegal base64url string!');\n }\n }\n return this.b64DecodeUnicode(output);\n }\n // credits for decoder goes to https://github.com/atk\n b64decode(str) {\n const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n let output = '';\n str = String(str).replace(/=+$/, '');\n if (str.length % 4 === 1) {\n throw new Error(`'atob' failed: The string to be decoded is not correctly encoded.`);\n }\n for (\n // initialize result and counters\n let bc = 0, bs, buffer, idx = 0; \n // get next character\n (buffer = str.charAt(idx++)); \n // character found in table? initialize bit storage and add its ascii value;\n ~buffer &&\n ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4)\n ? (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6))))\n : 0) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n }\n b64DecodeUnicode(str) {\n return decodeURIComponent(Array.prototype.map\n .call(this.b64decode(str), (c) => {\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\n })\n .join(''));\n }\n decodeToken(token = this.tokenGetter()) {\n if (!token || token === '') {\n return null;\n }\n const parts = token.split('.');\n if (parts.length !== 3) {\n throw new Error(`The inspected token doesn't appear to be a JWT. Check to make sure it has three parts and see https://jwt.io for more.`);\n }\n const decoded = this.urlBase64Decode(parts[1]);\n if (!decoded) {\n throw new Error('Cannot decode the token.');\n }\n return JSON.parse(decoded);\n }\n getTokenExpirationDate(token = this.tokenGetter()) {\n let decoded;\n decoded = this.decodeToken(token);\n if (!decoded || !decoded.hasOwnProperty('exp')) {\n return null;\n }\n const date = new Date(0);\n date.setUTCSeconds(decoded.exp);\n return date;\n }\n isTokenExpired(token = this.tokenGetter(), offsetSeconds) {\n if (!token || token === '') {\n return true;\n }\n const date = this.getTokenExpirationDate(token);\n offsetSeconds = offsetSeconds || 0;\n if (date === null) {\n return false;\n }\n return !(date.valueOf() > new Date().valueOf() + offsetSeconds * 1000);\n }\n getAuthScheme(authScheme, request) {\n if (typeof authScheme === 'function') {\n return authScheme(request);\n }\n return authScheme;\n }\n}\nJwtHelperService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtHelperService, deps: [{ token: JWT_OPTIONS }], target: i0.ɵɵFactoryTarget.Injectable });\nJwtHelperService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtHelperService });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtHelperService, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [JWT_OPTIONS]\n }] }]; } });\n\nclass JwtInterceptor {\n constructor(config, jwtHelper, document) {\n this.jwtHelper = jwtHelper;\n this.document = document;\n this.standardPorts = ['80', '443'];\n this.tokenGetter = config.tokenGetter;\n this.headerName = config.headerName || 'Authorization';\n this.authScheme =\n config.authScheme || config.authScheme === ''\n ? config.authScheme\n : 'Bearer ';\n this.allowedDomains = config.allowedDomains || [];\n this.disallowedRoutes = config.disallowedRoutes || [];\n this.throwNoTokenError = config.throwNoTokenError || false;\n this.skipWhenExpired = config.skipWhenExpired;\n }\n isAllowedDomain(request) {\n const requestUrl = new URL(request.url, this.document.location.origin);\n // If the host equals the current window origin,\n // the domain is allowed by default\n if (requestUrl.host === this.document.location.host) {\n return true;\n }\n // If not the current domain, check the allowed list\n const hostName = `${requestUrl.hostname}${requestUrl.port && !this.standardPorts.includes(requestUrl.port)\n ? ':' + requestUrl.port\n : ''}`;\n return (this.allowedDomains.findIndex((domain) => typeof domain === 'string'\n ? domain === hostName\n : domain instanceof RegExp\n ? domain.test(hostName)\n : false) > -1);\n }\n isDisallowedRoute(request) {\n const requestedUrl = new URL(request.url, this.document.location.origin);\n return (this.disallowedRoutes.findIndex((route) => {\n if (typeof route === 'string') {\n const parsedRoute = new URL(route, this.document.location.origin);\n return (parsedRoute.hostname === requestedUrl.hostname &&\n parsedRoute.pathname === requestedUrl.pathname);\n }\n if (route instanceof RegExp) {\n return route.test(request.url);\n }\n return false;\n }) > -1);\n }\n handleInterception(token, request, next) {\n const authScheme = this.jwtHelper.getAuthScheme(this.authScheme, request);\n let tokenIsExpired = false;\n if (!token && this.throwNoTokenError) {\n throw new Error('Could not get token from tokenGetter function.');\n }\n if (this.skipWhenExpired) {\n tokenIsExpired = token ? this.jwtHelper.isTokenExpired(token) : true;\n }\n if (token && tokenIsExpired && this.skipWhenExpired) {\n request = request.clone();\n }\n else if (token) {\n request = request.clone({\n setHeaders: {\n [this.headerName]: `${authScheme}${token}`,\n },\n });\n }\n return next.handle(request);\n }\n intercept(request, next) {\n if (!this.isAllowedDomain(request) || this.isDisallowedRoute(request)) {\n return next.handle(request);\n }\n const token = this.tokenGetter(request);\n if (token instanceof Promise) {\n return from(token).pipe(mergeMap((asyncToken) => {\n return this.handleInterception(asyncToken, request, next);\n }));\n }\n else {\n return this.handleInterception(token, request, next);\n }\n }\n}\nJwtInterceptor.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtInterceptor, deps: [{ token: JWT_OPTIONS }, { token: JwtHelperService }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });\nJwtInterceptor.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtInterceptor });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtInterceptor, decorators: [{\n type: Injectable\n }], ctorParameters: function () { return [{ type: undefined, decorators: [{\n type: Inject,\n args: [JWT_OPTIONS]\n }] }, { type: JwtHelperService }, { type: Document, decorators: [{\n type: Inject,\n args: [DOCUMENT]\n }] }]; } });\n\nclass JwtModule {\n constructor(parentModule) {\n if (parentModule) {\n throw new Error(`JwtModule is already loaded. It should only be imported in your application's main module.`);\n }\n }\n static forRoot(options) {\n return {\n ngModule: JwtModule,\n providers: [\n {\n provide: HTTP_INTERCEPTORS,\n useClass: JwtInterceptor,\n multi: true,\n },\n options.jwtOptionsProvider || {\n provide: JWT_OPTIONS,\n useValue: options.config,\n },\n JwtHelperService,\n ],\n };\n }\n}\nJwtModule.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtModule, deps: [{ token: JwtModule, optional: true, skipSelf: true }], target: i0.ɵɵFactoryTarget.NgModule });\nJwtModule.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtModule });\nJwtModule.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtModule });\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"12.2.16\", ngImport: i0, type: JwtModule, decorators: [{\n type: NgModule\n }], ctorParameters: function () { return [{ type: JwtModule, decorators: [{\n type: Optional\n }, {\n type: SkipSelf\n }] }]; } });\n\n/*\n * Public API Surface of angular-jwt\n */\n\n/**\n * Generated bundle index. Do not edit.\n */\n\nexport { JWT_OPTIONS, JwtHelperService, JwtInterceptor, JwtModule };\n","\"use strict\";\nvar UUID = (function () {\n function UUID() {\n // no-op\n }\n UUID.UUID = function () {\n if (typeof (window) !== \"undefined\" && typeof (window.crypto) !== \"undefined\" && typeof (window.crypto.getRandomValues) !== \"undefined\") {\n // If we have a cryptographically secure PRNG, use that\n // http://stackoverflow.com/questions/6906916/collisions-when-generating-uuids-in-javascript\n var buf = new Uint16Array(8);\n window.crypto.getRandomValues(buf);\n return (this.pad4(buf[0]) + this.pad4(buf[1]) + \"-\" + this.pad4(buf[2]) + \"-\" + this.pad4(buf[3]) + \"-\" + this.pad4(buf[4]) + \"-\" + this.pad4(buf[5]) + this.pad4(buf[6]) + this.pad4(buf[7]));\n }\n else {\n // Otherwise, just use Math.random\n // https://stackoverflow.com/questions/105034/create-guid-uuid-in-javascript\n // https://stackoverflow.com/questions/11605068/why-does-jshint-argue-against-bitwise-operators-how-should-i-express-this-code\n return this.random4() + this.random4() + \"-\" + this.random4() + \"-\" + this.random4() + \"-\" +\n this.random4() + \"-\" + this.random4() + this.random4() + this.random4();\n }\n };\n UUID.pad4 = function (num) {\n var ret = num.toString(16);\n while (ret.length < 4) {\n ret = \"0\" + ret;\n }\n return ret;\n };\n UUID.random4 = function () {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n };\n return UUID;\n}());\nexports.UUID = UUID;\n","/* build: `node build.js modules=ALL exclude=gestures,accessors,erasing requirejs minifier=uglifyjs` */\n/*! Fabric.js Copyright 2008-2015, Printio (Juriy Zaytsev, Maxim Chernyak) */\n\nvar fabric = fabric || { version: '5.2.4' };\nif (typeof exports !== 'undefined') {\n exports.fabric = fabric;\n}\n/* _AMD_START_ */\nelse if (typeof define === 'function' && define.amd) {\n define([], function() { return fabric; });\n}\n/* _AMD_END_ */\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n if (document instanceof (typeof HTMLDocument !== 'undefined' ? HTMLDocument : Document)) {\n fabric.document = document;\n }\n else {\n fabric.document = document.implementation.createHTMLDocument('');\n }\n fabric.window = window;\n}\nelse {\n // assume we're running under node.js when document/window are not present\n var jsdom = require('jsdom');\n var virtualWindow = new jsdom.JSDOM(\n decodeURIComponent('%3C!DOCTYPE%20html%3E%3Chtml%3E%3Chead%3E%3C%2Fhead%3E%3Cbody%3E%3C%2Fbody%3E%3C%2Fhtml%3E'),\n {\n features: {\n FetchExternalResources: ['img']\n },\n resources: 'usable'\n }).window;\n fabric.document = virtualWindow.document;\n fabric.jsdomImplForWrapper = require('jsdom/lib/jsdom/living/generated/utils').implForWrapper;\n fabric.nodeCanvas = require('jsdom/lib/jsdom/utils').Canvas;\n fabric.window = virtualWindow;\n DOMParser = fabric.window.DOMParser;\n}\n\n/**\n * True when in environment that supports touch events\n * @type boolean\n */\nfabric.isTouchSupported = 'ontouchstart' in fabric.window || 'ontouchstart' in fabric.document ||\n (fabric.window && fabric.window.navigator && fabric.window.navigator.maxTouchPoints > 0);\n\n/**\n * True when in environment that's probably Node.js\n * @type boolean\n */\nfabric.isLikelyNode = typeof Buffer !== 'undefined' &&\n typeof window === 'undefined';\n\n/* _FROM_SVG_START_ */\n/**\n * Attributes parsed from all SVG elements\n * @type array\n */\nfabric.SHARED_ATTRIBUTES = [\n 'display',\n 'transform',\n 'fill', 'fill-opacity', 'fill-rule',\n 'opacity',\n 'stroke', 'stroke-dasharray', 'stroke-linecap', 'stroke-dashoffset',\n 'stroke-linejoin', 'stroke-miterlimit',\n 'stroke-opacity', 'stroke-width',\n 'id', 'paint-order', 'vector-effect',\n 'instantiated_by_use', 'clip-path',\n];\n/* _FROM_SVG_END_ */\n\n/**\n * Pixel per Inch as a default value set to 96. Can be changed for more realistic conversion.\n */\nfabric.DPI = 96;\nfabric.reNum = '(?:[-+]?(?:\\\\d+|\\\\d*\\\\.\\\\d+)(?:[eE][-+]?\\\\d+)?)';\nfabric.commaWsp = '(?:\\\\s+,?\\\\s*|,\\\\s*)';\nfabric.rePathCommand = /([-+]?((\\d+\\.\\d+)|((\\d+)|(\\.\\d+)))(?:[eE][-+]?\\d+)?)/ig;\nfabric.reNonWord = /[ \\n\\.,;!\\?\\-]/;\nfabric.fontPaths = { };\nfabric.iMatrix = [1, 0, 0, 1, 0, 0];\nfabric.svgNS = 'http://www.w3.org/2000/svg';\n\n/**\n * Pixel limit for cache canvases. 1Mpx , 4Mpx should be fine.\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.perfLimitSizeTotal = 2097152;\n\n/**\n * Pixel limit for cache canvases width or height. IE fixes the maximum at 5000\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.maxCacheSideLimit = 4096;\n\n/**\n * Lowest pixel limit for cache canvases, set at 256PX\n * @since 1.7.14\n * @type Number\n * @default\n */\nfabric.minCacheSideLimit = 256;\n\n/**\n * Cache Object for widths of chars in text rendering.\n */\nfabric.charWidthsCache = { };\n\n/**\n * if webgl is enabled and available, textureSize will determine the size\n * of the canvas backend\n * @since 2.0.0\n * @type Number\n * @default\n */\nfabric.textureSize = 2048;\n\n/**\n * When 'true', style information is not retained when copy/pasting text, making\n * pasted text use destination style.\n * Defaults to 'false'.\n * @type Boolean\n * @default\n */\nfabric.disableStyleCopyPaste = false;\n\n/**\n * Enable webgl for filtering picture is available\n * A filtering backend will be initialized, this will both take memory and\n * time since a default 2048x2048 canvas will be created for the gl context\n * @since 2.0.0\n * @type Boolean\n * @default\n */\nfabric.enableGLFiltering = true;\n\n/**\n * Device Pixel Ratio\n * @see https://developer.apple.com/library/safari/documentation/AudioVideo/Conceptual/HTML-canvas-guide/SettingUptheCanvas/SettingUptheCanvas.html\n */\nfabric.devicePixelRatio = fabric.window.devicePixelRatio ||\n fabric.window.webkitDevicePixelRatio ||\n fabric.window.mozDevicePixelRatio ||\n 1;\n/**\n * Browser-specific constant to adjust CanvasRenderingContext2D.shadowBlur value,\n * which is unitless and not rendered equally across browsers.\n *\n * Values that work quite well (as of October 2017) are:\n * - Chrome: 1.5\n * - Edge: 1.75\n * - Firefox: 0.9\n * - Safari: 0.95\n *\n * @since 2.0.0\n * @type Number\n * @default 1\n */\nfabric.browserShadowBlurConstant = 1;\n\n/**\n * This object contains the result of arc to bezier conversion for faster retrieving if the same arc needs to be converted again.\n * It was an internal variable, is accessible since version 2.3.4\n */\nfabric.arcToSegmentsCache = { };\n\n/**\n * This object keeps the results of the boundsOfCurve calculation mapped by the joined arguments necessary to calculate it.\n * It does speed up calculation, if you parse and add always the same paths, but in case of heavy usage of freedrawing\n * you do not get any speed benefit and you get a big object in memory.\n * The object was a private variable before, while now is appended to the lib so that you have access to it and you\n * can eventually clear it.\n * It was an internal variable, is accessible since version 2.3.4\n */\nfabric.boundsOfCurveCache = { };\n\n/**\n * If disabled boundsOfCurveCache is not used. For apps that make heavy usage of pencil drawing probably disabling it is better\n * @default true\n */\nfabric.cachesBoundsOfCurve = true;\n\n/**\n * Skip performance testing of setupGLContext and force the use of putImageData that seems to be the one that works best on\n * Chrome + old hardware. if your users are experiencing empty images after filtering you may try to force this to true\n * this has to be set before instantiating the filtering backend ( before filtering the first image )\n * @type Boolean\n * @default false\n */\nfabric.forceGLPutImageData = false;\n\nfabric.initFilterBackend = function() {\n if (fabric.enableGLFiltering && fabric.isWebglSupported && fabric.isWebglSupported(fabric.textureSize)) {\n console.log('max texture size: ' + fabric.maxTextureSize);\n return (new fabric.WebglFilterBackend({ tileSize: fabric.textureSize }));\n }\n else if (fabric.Canvas2dFilterBackend) {\n return (new fabric.Canvas2dFilterBackend());\n }\n};\n\n\nif (typeof document !== 'undefined' && typeof window !== 'undefined') {\n // ensure globality even if entire library were function wrapped (as in Meteor.js packaging system)\n window.fabric = fabric;\n}\n\n\n(function() {\n\n /**\n * @private\n * @param {String} eventName\n * @param {Function} handler\n */\n function _removeEventListener(eventName, handler) {\n if (!this.__eventListeners[eventName]) {\n return;\n }\n var eventListener = this.__eventListeners[eventName];\n if (handler) {\n eventListener[eventListener.indexOf(handler)] = false;\n }\n else {\n fabric.util.array.fill(eventListener, false);\n }\n }\n\n /**\n * Observes specified event\n * @memberOf fabric.Observable\n * @alias on\n * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function that receives a notification when an event of the specified type occurs\n * @return {Self} thisArg\n * @chainable\n */\n function on(eventName, handler) {\n if (!this.__eventListeners) {\n this.__eventListeners = { };\n }\n // one object with key/value pairs was passed\n if (arguments.length === 1) {\n for (var prop in eventName) {\n this.on(prop, eventName[prop]);\n }\n }\n else {\n if (!this.__eventListeners[eventName]) {\n this.__eventListeners[eventName] = [];\n }\n this.__eventListeners[eventName].push(handler);\n }\n return this;\n }\n\n function _once(eventName, handler) {\n var _handler = function () {\n handler.apply(this, arguments);\n this.off(eventName, _handler);\n }.bind(this);\n this.on(eventName, _handler);\n }\n\n function once(eventName, handler) {\n // one object with key/value pairs was passed\n if (arguments.length === 1) {\n for (var prop in eventName) {\n _once.call(this, prop, eventName[prop]);\n }\n }\n else {\n _once.call(this, eventName, handler);\n }\n return this;\n }\n\n /**\n * Stops event observing for a particular event handler. Calling this method\n * without arguments removes all handlers for all events\n * @memberOf fabric.Observable\n * @alias off\n * @param {String|Object} eventName Event name (eg. 'after:render') or object with key/value pairs (eg. {'after:render': handler, 'selection:cleared': handler})\n * @param {Function} handler Function to be deleted from EventListeners\n * @return {Self} thisArg\n * @chainable\n */\n function off(eventName, handler) {\n if (!this.__eventListeners) {\n return this;\n }\n\n // remove all key/value pairs (event name -> event handler)\n if (arguments.length === 0) {\n for (eventName in this.__eventListeners) {\n _removeEventListener.call(this, eventName);\n }\n }\n // one object with key/value pairs was passed\n else if (arguments.length === 1 && typeof arguments[0] === 'object') {\n for (var prop in eventName) {\n _removeEventListener.call(this, prop, eventName[prop]);\n }\n }\n else {\n _removeEventListener.call(this, eventName, handler);\n }\n return this;\n }\n\n /**\n * Fires event with an optional options object\n * @memberOf fabric.Observable\n * @param {String} eventName Event name to fire\n * @param {Object} [options] Options object\n * @return {Self} thisArg\n * @chainable\n */\n function fire(eventName, options) {\n if (!this.__eventListeners) {\n return this;\n }\n\n var listenersForEvent = this.__eventListeners[eventName];\n if (!listenersForEvent) {\n return this;\n }\n\n for (var i = 0, len = listenersForEvent.length; i < len; i++) {\n listenersForEvent[i] && listenersForEvent[i].call(this, options || { });\n }\n this.__eventListeners[eventName] = listenersForEvent.filter(function(value) {\n return value !== false;\n });\n return this;\n }\n\n /**\n * @namespace fabric.Observable\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#events}\n * @see {@link http://fabricjs.com/events|Events demo}\n */\n fabric.Observable = {\n fire: fire,\n on: on,\n once: once,\n off: off,\n };\n})();\n\n\n/**\n * @namespace fabric.Collection\n */\nfabric.Collection = {\n\n _objects: [],\n\n /**\n * Adds objects to collection, Canvas or Group, then renders canvas\n * (if `renderOnAddRemove` is not `false`).\n * in case of Group no changes to bounding box are made.\n * Objects should be instances of (or inherit from) fabric.Object\n * Use of this function is highly discouraged for groups.\n * you can add a bunch of objects with the add method but then you NEED\n * to run a addWithUpdate call for the Group class or position/bbox will be wrong.\n * @param {...fabric.Object} object Zero or more fabric instances\n * @return {Self} thisArg\n * @chainable\n */\n add: function () {\n this._objects.push.apply(this._objects, arguments);\n if (this._onObjectAdded) {\n for (var i = 0, length = arguments.length; i < length; i++) {\n this._onObjectAdded(arguments[i]);\n }\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Inserts an object into collection at specified index, then renders canvas (if `renderOnAddRemove` is not `false`)\n * An object should be an instance of (or inherit from) fabric.Object\n * Use of this function is highly discouraged for groups.\n * you can add a bunch of objects with the insertAt method but then you NEED\n * to run a addWithUpdate call for the Group class or position/bbox will be wrong.\n * @param {Object} object Object to insert\n * @param {Number} index Index to insert object at\n * @param {Boolean} nonSplicing When `true`, no splicing (shifting) of objects occurs\n * @return {Self} thisArg\n * @chainable\n */\n insertAt: function (object, index, nonSplicing) {\n var objects = this._objects;\n if (nonSplicing) {\n objects[index] = object;\n }\n else {\n objects.splice(index, 0, object);\n }\n this._onObjectAdded && this._onObjectAdded(object);\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Removes objects from a collection, then renders canvas (if `renderOnAddRemove` is not `false`)\n * @param {...fabric.Object} object Zero or more fabric instances\n * @return {Self} thisArg\n * @chainable\n */\n remove: function() {\n var objects = this._objects,\n index, somethingRemoved = false;\n\n for (var i = 0, length = arguments.length; i < length; i++) {\n index = objects.indexOf(arguments[i]);\n\n // only call onObjectRemoved if an object was actually removed\n if (index !== -1) {\n somethingRemoved = true;\n objects.splice(index, 1);\n this._onObjectRemoved && this._onObjectRemoved(arguments[i]);\n }\n }\n\n this.renderOnAddRemove && somethingRemoved && this.requestRenderAll();\n return this;\n },\n\n /**\n * Executes given function for each object in this group\n * @param {Function} callback\n * Callback invoked with current object as first argument,\n * index - as second and an array of all objects - as third.\n * Callback is invoked in a context of Global Object (e.g. `window`)\n * when no `context` argument is given\n *\n * @param {Object} context Context (aka thisObject)\n * @return {Self} thisArg\n * @chainable\n */\n forEachObject: function(callback, context) {\n var objects = this.getObjects();\n for (var i = 0, len = objects.length; i < len; i++) {\n callback.call(context, objects[i], i, objects);\n }\n return this;\n },\n\n /**\n * Returns an array of children objects of this instance\n * Type parameter introduced in 1.3.10\n * since 2.3.5 this method return always a COPY of the array;\n * @param {String} [type] When specified, only objects of this type are returned\n * @return {Array}\n */\n getObjects: function(type) {\n if (typeof type === 'undefined') {\n return this._objects.concat();\n }\n return this._objects.filter(function(o) {\n return o.type === type;\n });\n },\n\n /**\n * Returns object at specified index\n * @param {Number} index\n * @return {Self} thisArg\n */\n item: function (index) {\n return this._objects[index];\n },\n\n /**\n * Returns true if collection contains no objects\n * @return {Boolean} true if collection is empty\n */\n isEmpty: function () {\n return this._objects.length === 0;\n },\n\n /**\n * Returns a size of a collection (i.e: length of an array containing its objects)\n * @return {Number} Collection size\n */\n size: function() {\n return this._objects.length;\n },\n\n /**\n * Returns true if collection contains an object\n * @param {Object} object Object to check against\n * @param {Boolean} [deep=false] `true` to check all descendants, `false` to check only `_objects`\n * @return {Boolean} `true` if collection contains an object\n */\n contains: function (object, deep) {\n if (this._objects.indexOf(object) > -1) {\n return true;\n }\n else if (deep) {\n return this._objects.some(function (obj) {\n return typeof obj.contains === 'function' && obj.contains(object, true);\n });\n }\n return false;\n },\n\n /**\n * Returns number representation of a collection complexity\n * @return {Number} complexity\n */\n complexity: function () {\n return this._objects.reduce(function (memo, current) {\n memo += current.complexity ? current.complexity() : 0;\n return memo;\n }, 0);\n }\n};\n\n\n/**\n * @namespace fabric.CommonMethods\n */\nfabric.CommonMethods = {\n\n /**\n * Sets object's properties from options\n * @param {Object} [options] Options object\n */\n _setOptions: function(options) {\n for (var prop in options) {\n this.set(prop, options[prop]);\n }\n },\n\n /**\n * @private\n * @param {Object} [filler] Options object\n * @param {String} [property] property to set the Gradient to\n */\n _initGradient: function(filler, property) {\n if (filler && filler.colorStops && !(filler instanceof fabric.Gradient)) {\n this.set(property, new fabric.Gradient(filler));\n }\n },\n\n /**\n * @private\n * @param {Object} [filler] Options object\n * @param {String} [property] property to set the Pattern to\n * @param {Function} [callback] callback to invoke after pattern load\n */\n _initPattern: function(filler, property, callback) {\n if (filler && filler.source && !(filler instanceof fabric.Pattern)) {\n this.set(property, new fabric.Pattern(filler, callback));\n }\n else {\n callback && callback();\n }\n },\n\n /**\n * @private\n */\n _setObject: function(obj) {\n for (var prop in obj) {\n this._set(prop, obj[prop]);\n }\n },\n\n /**\n * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`.\n * @param {String|Object} key Property name or object (if object, iterate over the object properties)\n * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n set: function(key, value) {\n if (typeof key === 'object') {\n this._setObject(key);\n }\n else {\n this._set(key, value);\n }\n return this;\n },\n\n _set: function(key, value) {\n this[key] = value;\n },\n\n /**\n * Toggles specified property from `true` to `false` or from `false` to `true`\n * @param {String} property Property to toggle\n * @return {fabric.Object} thisArg\n * @chainable\n */\n toggle: function(property) {\n var value = this.get(property);\n if (typeof value === 'boolean') {\n this.set(property, !value);\n }\n return this;\n },\n\n /**\n * Basic getter\n * @param {String} property Property name\n * @return {*} value of a property\n */\n get: function(property) {\n return this[property];\n }\n};\n\n\n(function(global) {\n\n var sqrt = Math.sqrt,\n atan2 = Math.atan2,\n pow = Math.pow,\n PiBy180 = Math.PI / 180,\n PiBy2 = Math.PI / 2;\n\n /**\n * @namespace fabric.util\n */\n fabric.util = {\n\n /**\n * Calculate the cos of an angle, avoiding returning floats for known results\n * @static\n * @memberOf fabric.util\n * @param {Number} angle the angle in radians or in degree\n * @return {Number}\n */\n cos: function(angle) {\n if (angle === 0) { return 1; }\n if (angle < 0) {\n // cos(a) = cos(-a)\n angle = -angle;\n }\n var angleSlice = angle / PiBy2;\n switch (angleSlice) {\n case 1: case 3: return 0;\n case 2: return -1;\n }\n return Math.cos(angle);\n },\n\n /**\n * Calculate the sin of an angle, avoiding returning floats for known results\n * @static\n * @memberOf fabric.util\n * @param {Number} angle the angle in radians or in degree\n * @return {Number}\n */\n sin: function(angle) {\n if (angle === 0) { return 0; }\n var angleSlice = angle / PiBy2, sign = 1;\n if (angle < 0) {\n // sin(-a) = -sin(a)\n sign = -1;\n }\n switch (angleSlice) {\n case 1: return sign;\n case 2: return 0;\n case 3: return -sign;\n }\n return Math.sin(angle);\n },\n\n /**\n * Removes value from an array.\n * Presence of value (and its position in an array) is determined via `Array.prototype.indexOf`\n * @static\n * @memberOf fabric.util\n * @param {Array} array\n * @param {*} value\n * @return {Array} original array\n */\n removeFromArray: function(array, value) {\n var idx = array.indexOf(value);\n if (idx !== -1) {\n array.splice(idx, 1);\n }\n return array;\n },\n\n /**\n * Returns random number between 2 specified ones.\n * @static\n * @memberOf fabric.util\n * @param {Number} min lower limit\n * @param {Number} max upper limit\n * @return {Number} random value (between min and max)\n */\n getRandomInt: function(min, max) {\n return Math.floor(Math.random() * (max - min + 1)) + min;\n },\n\n /**\n * Transforms degrees to radians.\n * @static\n * @memberOf fabric.util\n * @param {Number} degrees value in degrees\n * @return {Number} value in radians\n */\n degreesToRadians: function(degrees) {\n return degrees * PiBy180;\n },\n\n /**\n * Transforms radians to degrees.\n * @static\n * @memberOf fabric.util\n * @param {Number} radians value in radians\n * @return {Number} value in degrees\n */\n radiansToDegrees: function(radians) {\n return radians / PiBy180;\n },\n\n /**\n * Rotates `point` around `origin` with `radians`\n * @static\n * @memberOf fabric.util\n * @param {fabric.Point} point The point to rotate\n * @param {fabric.Point} origin The origin of the rotation\n * @param {Number} radians The radians of the angle for the rotation\n * @return {fabric.Point} The new rotated point\n */\n rotatePoint: function(point, origin, radians) {\n var newPoint = new fabric.Point(point.x - origin.x, point.y - origin.y),\n v = fabric.util.rotateVector(newPoint, radians);\n return new fabric.Point(v.x, v.y).addEquals(origin);\n },\n\n /**\n * Rotates `vector` with `radians`\n * @static\n * @memberOf fabric.util\n * @param {Object} vector The vector to rotate (x and y)\n * @param {Number} radians The radians of the angle for the rotation\n * @return {Object} The new rotated point\n */\n rotateVector: function(vector, radians) {\n var sin = fabric.util.sin(radians),\n cos = fabric.util.cos(radians),\n rx = vector.x * cos - vector.y * sin,\n ry = vector.x * sin + vector.y * cos;\n return {\n x: rx,\n y: ry\n };\n },\n\n /**\n * Creates a vetor from points represented as a point\n * @static\n * @memberOf fabric.util\n *\n * @typedef {Object} Point\n * @property {number} x\n * @property {number} y\n *\n * @param {Point} from\n * @param {Point} to\n * @returns {Point} vector\n */\n createVector: function (from, to) {\n return new fabric.Point(to.x - from.x, to.y - from.y);\n },\n\n /**\n * Calculates angle between 2 vectors using dot product\n * @static\n * @memberOf fabric.util\n * @param {Point} a\n * @param {Point} b\n * @returns the angle in radian between the vectors\n */\n calcAngleBetweenVectors: function (a, b) {\n return Math.acos((a.x * b.x + a.y * b.y) / (Math.hypot(a.x, a.y) * Math.hypot(b.x, b.y)));\n },\n\n /**\n * @static\n * @memberOf fabric.util\n * @param {Point} v\n * @returns {Point} vector representing the unit vector of pointing to the direction of `v`\n */\n getHatVector: function (v) {\n return new fabric.Point(v.x, v.y).multiply(1 / Math.hypot(v.x, v.y));\n },\n\n /**\n * @static\n * @memberOf fabric.util\n * @param {Point} A\n * @param {Point} B\n * @param {Point} C\n * @returns {{ vector: Point, angle: number }} vector representing the bisector of A and A's angle\n */\n getBisector: function (A, B, C) {\n var AB = fabric.util.createVector(A, B), AC = fabric.util.createVector(A, C);\n var alpha = fabric.util.calcAngleBetweenVectors(AB, AC);\n // check if alpha is relative to AB->BC\n var ro = fabric.util.calcAngleBetweenVectors(fabric.util.rotateVector(AB, alpha), AC);\n var phi = alpha * (ro === 0 ? 1 : -1) / 2;\n return {\n vector: fabric.util.getHatVector(fabric.util.rotateVector(AB, phi)),\n angle: alpha\n };\n },\n\n /**\n * Project stroke width on points returning 2 projections for each point as follows:\n * - `miter`: 2 points corresponding to the outer boundary and the inner boundary of stroke.\n * - `bevel`: 2 points corresponding to the bevel boundaries, tangent to the bisector.\n * - `round`: same as `bevel`\n * Used to calculate object's bounding box\n * @static\n * @memberOf fabric.util\n * @param {Point[]} points\n * @param {Object} options\n * @param {number} options.strokeWidth\n * @param {'miter'|'bevel'|'round'} options.strokeLineJoin\n * @param {number} options.strokeMiterLimit https://developer.mozilla.org/en-US/docs/Web/SVG/Attribute/stroke-miterlimit\n * @param {boolean} options.strokeUniform\n * @param {number} options.scaleX\n * @param {number} options.scaleY\n * @param {boolean} [openPath] whether the shape is open or not, affects the calculations of the first and last points\n * @returns {fabric.Point[]} array of size 2n/4n of all suspected points\n */\n projectStrokeOnPoints: function (points, options, openPath) {\n var coords = [], s = options.strokeWidth / 2,\n strokeUniformScalar = options.strokeUniform ?\n new fabric.Point(1 / options.scaleX, 1 / options.scaleY) : new fabric.Point(1, 1),\n getStrokeHatVector = function (v) {\n var scalar = s / (Math.hypot(v.x, v.y));\n return new fabric.Point(v.x * scalar * strokeUniformScalar.x, v.y * scalar * strokeUniformScalar.y);\n };\n if (points.length <= 1) {return coords;}\n points.forEach(function (p, index) {\n var A = new fabric.Point(p.x, p.y), B, C;\n if (index === 0) {\n C = points[index + 1];\n B = openPath ? getStrokeHatVector(fabric.util.createVector(C, A)).addEquals(A) : points[points.length - 1];\n }\n else if (index === points.length - 1) {\n B = points[index - 1];\n C = openPath ? getStrokeHatVector(fabric.util.createVector(B, A)).addEquals(A) : points[0];\n }\n else {\n B = points[index - 1];\n C = points[index + 1];\n }\n var bisector = fabric.util.getBisector(A, B, C),\n bisectorVector = bisector.vector,\n alpha = bisector.angle,\n scalar,\n miterVector;\n if (options.strokeLineJoin === 'miter') {\n scalar = -s / Math.sin(alpha / 2);\n miterVector = new fabric.Point(\n bisectorVector.x * scalar * strokeUniformScalar.x,\n bisectorVector.y * scalar * strokeUniformScalar.y\n );\n if (Math.hypot(miterVector.x, miterVector.y) / s <= options.strokeMiterLimit) {\n coords.push(A.add(miterVector));\n coords.push(A.subtract(miterVector));\n return;\n }\n }\n scalar = -s * Math.SQRT2;\n miterVector = new fabric.Point(\n bisectorVector.x * scalar * strokeUniformScalar.x,\n bisectorVector.y * scalar * strokeUniformScalar.y\n );\n coords.push(A.add(miterVector));\n coords.push(A.subtract(miterVector));\n });\n return coords;\n },\n\n /**\n * Apply transform t to point p\n * @static\n * @memberOf fabric.util\n * @param {fabric.Point} p The point to transform\n * @param {Array} t The transform\n * @param {Boolean} [ignoreOffset] Indicates that the offset should not be applied\n * @return {fabric.Point} The transformed point\n */\n transformPoint: function(p, t, ignoreOffset) {\n if (ignoreOffset) {\n return new fabric.Point(\n t[0] * p.x + t[2] * p.y,\n t[1] * p.x + t[3] * p.y\n );\n }\n return new fabric.Point(\n t[0] * p.x + t[2] * p.y + t[4],\n t[1] * p.x + t[3] * p.y + t[5]\n );\n },\n\n /**\n * Returns coordinates of points's bounding rectangle (left, top, width, height)\n * @param {Array} points 4 points array\n * @param {Array} [transform] an array of 6 numbers representing a 2x3 transform matrix\n * @return {Object} Object with left, top, width, height properties\n */\n makeBoundingBoxFromPoints: function(points, transform) {\n if (transform) {\n for (var i = 0; i < points.length; i++) {\n points[i] = fabric.util.transformPoint(points[i], transform);\n }\n }\n var xPoints = [points[0].x, points[1].x, points[2].x, points[3].x],\n minX = fabric.util.array.min(xPoints),\n maxX = fabric.util.array.max(xPoints),\n width = maxX - minX,\n yPoints = [points[0].y, points[1].y, points[2].y, points[3].y],\n minY = fabric.util.array.min(yPoints),\n maxY = fabric.util.array.max(yPoints),\n height = maxY - minY;\n\n return {\n left: minX,\n top: minY,\n width: width,\n height: height\n };\n },\n\n /**\n * Invert transformation t\n * @static\n * @memberOf fabric.util\n * @param {Array} t The transform\n * @return {Array} The inverted transform\n */\n invertTransform: function(t) {\n var a = 1 / (t[0] * t[3] - t[1] * t[2]),\n r = [a * t[3], -a * t[1], -a * t[2], a * t[0]],\n o = fabric.util.transformPoint({ x: t[4], y: t[5] }, r, true);\n r[4] = -o.x;\n r[5] = -o.y;\n return r;\n },\n\n /**\n * A wrapper around Number#toFixed, which contrary to native method returns number, not string.\n * @static\n * @memberOf fabric.util\n * @param {Number|String} number number to operate on\n * @param {Number} fractionDigits number of fraction digits to \"leave\"\n * @return {Number}\n */\n toFixed: function(number, fractionDigits) {\n return parseFloat(Number(number).toFixed(fractionDigits));\n },\n\n /**\n * Converts from attribute value to pixel value if applicable.\n * Returns converted pixels or original value not converted.\n * @param {Number|String} value number to operate on\n * @param {Number} fontSize\n * @return {Number|String}\n */\n parseUnit: function(value, fontSize) {\n var unit = /\\D{0,2}$/.exec(value),\n number = parseFloat(value);\n if (!fontSize) {\n fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE;\n }\n switch (unit[0]) {\n case 'mm':\n return number * fabric.DPI / 25.4;\n\n case 'cm':\n return number * fabric.DPI / 2.54;\n\n case 'in':\n return number * fabric.DPI;\n\n case 'pt':\n return number * fabric.DPI / 72; // or * 4 / 3\n\n case 'pc':\n return number * fabric.DPI / 72 * 12; // or * 16\n\n case 'em':\n return number * fontSize;\n\n default:\n return number;\n }\n },\n\n /**\n * Function which always returns `false`.\n * @static\n * @memberOf fabric.util\n * @return {Boolean}\n */\n falseFunction: function() {\n return false;\n },\n\n /**\n * Returns klass \"Class\" object of given namespace\n * @memberOf fabric.util\n * @param {String} type Type of object (eg. 'circle')\n * @param {String} namespace Namespace to get klass \"Class\" object from\n * @return {Object} klass \"Class\"\n */\n getKlass: function(type, namespace) {\n // capitalize first letter only\n type = fabric.util.string.camelize(type.charAt(0).toUpperCase() + type.slice(1));\n return fabric.util.resolveNamespace(namespace)[type];\n },\n\n /**\n * Returns array of attributes for given svg that fabric parses\n * @memberOf fabric.util\n * @param {String} type Type of svg element (eg. 'circle')\n * @return {Array} string names of supported attributes\n */\n getSvgAttributes: function(type) {\n var attributes = [\n 'instantiated_by_use',\n 'style',\n 'id',\n 'class'\n ];\n switch (type) {\n case 'linearGradient':\n attributes = attributes.concat(['x1', 'y1', 'x2', 'y2', 'gradientUnits', 'gradientTransform']);\n break;\n case 'radialGradient':\n attributes = attributes.concat(['gradientUnits', 'gradientTransform', 'cx', 'cy', 'r', 'fx', 'fy', 'fr']);\n break;\n case 'stop':\n attributes = attributes.concat(['offset', 'stop-color', 'stop-opacity']);\n break;\n }\n return attributes;\n },\n\n /**\n * Returns object of given namespace\n * @memberOf fabric.util\n * @param {String} namespace Namespace string e.g. 'fabric.Image.filter' or 'fabric'\n * @return {Object} Object for given namespace (default fabric)\n */\n resolveNamespace: function(namespace) {\n if (!namespace) {\n return fabric;\n }\n\n var parts = namespace.split('.'),\n len = parts.length, i,\n obj = global || fabric.window;\n\n for (i = 0; i < len; ++i) {\n obj = obj[parts[i]];\n }\n\n return obj;\n },\n\n /**\n * Loads image element from given url and passes it to a callback\n * @memberOf fabric.util\n * @param {String} url URL representing an image\n * @param {Function} callback Callback; invoked with loaded image\n * @param {*} [context] Context to invoke callback in\n * @param {Object} [crossOrigin] crossOrigin value to set image element to\n */\n loadImage: function(url, callback, context, crossOrigin) {\n if (!url) {\n callback && callback.call(context, url);\n return;\n }\n\n var img = fabric.util.createImage();\n\n /** @ignore */\n var onLoadCallback = function () {\n callback && callback.call(context, img, false);\n img = img.onload = img.onerror = null;\n };\n\n img.onload = onLoadCallback;\n /** @ignore */\n img.onerror = function() {\n fabric.log('Error loading ' + img.src);\n callback && callback.call(context, null, true);\n img = img.onload = img.onerror = null;\n };\n\n // data-urls appear to be buggy with crossOrigin\n // https://github.com/kangax/fabric.js/commit/d0abb90f1cd5c5ef9d2a94d3fb21a22330da3e0a#commitcomment-4513767\n // see https://code.google.com/p/chromium/issues/detail?id=315152\n // https://bugzilla.mozilla.org/show_bug.cgi?id=935069\n // crossOrigin null is the same as not set.\n if (url.indexOf('data') !== 0 &&\n crossOrigin !== undefined &&\n crossOrigin !== null) {\n img.crossOrigin = crossOrigin;\n }\n\n // IE10 / IE11-Fix: SVG contents from data: URI\n // will only be available if the IMG is present\n // in the DOM (and visible)\n if (url.substring(0,14) === 'data:image/svg') {\n img.onload = null;\n fabric.util.loadImageInDom(img, onLoadCallback);\n }\n\n img.src = url;\n },\n\n /**\n * Attaches SVG image with data: URL to the dom\n * @memberOf fabric.util\n * @param {Object} img Image object with data:image/svg src\n * @param {Function} callback Callback; invoked with loaded image\n * @return {Object} DOM element (div containing the SVG image)\n */\n loadImageInDom: function(img, onLoadCallback) {\n var div = fabric.document.createElement('div');\n div.style.width = div.style.height = '1px';\n div.style.left = div.style.top = '-100%';\n div.style.position = 'absolute';\n div.appendChild(img);\n fabric.document.querySelector('body').appendChild(div);\n /**\n * Wrap in function to:\n * 1. Call existing callback\n * 2. Cleanup DOM\n */\n img.onload = function () {\n onLoadCallback();\n div.parentNode.removeChild(div);\n div = null;\n };\n },\n\n /**\n * Creates corresponding fabric instances from their object representations\n * @static\n * @memberOf fabric.util\n * @param {Array} objects Objects to enliven\n * @param {Function} callback Callback to invoke when all objects are created\n * @param {String} namespace Namespace to get klass \"Class\" object from\n * @param {Function} reviver Method for further parsing of object elements,\n * called after each fabric object created.\n */\n enlivenObjects: function(objects, callback, namespace, reviver) {\n objects = objects || [];\n\n var enlivenedObjects = [],\n numLoadedObjects = 0,\n numTotalObjects = objects.length;\n\n function onLoaded() {\n if (++numLoadedObjects === numTotalObjects) {\n callback && callback(enlivenedObjects.filter(function(obj) {\n // filter out undefined objects (objects that gave error)\n return obj;\n }));\n }\n }\n\n if (!numTotalObjects) {\n callback && callback(enlivenedObjects);\n return;\n }\n\n objects.forEach(function (o, index) {\n // if sparse array\n if (!o || !o.type) {\n onLoaded();\n return;\n }\n var klass = fabric.util.getKlass(o.type, namespace);\n klass.fromObject(o, function (obj, error) {\n error || (enlivenedObjects[index] = obj);\n reviver && reviver(o, obj, error);\n onLoaded();\n });\n });\n },\n\n /**\n * Creates corresponding fabric instances residing in an object, e.g. `clipPath`\n * @see {@link fabric.Object.ENLIVEN_PROPS}\n * @param {Object} object\n * @param {Object} [context] assign enlived props to this object (pass null to skip this)\n * @param {(objects:fabric.Object[]) => void} callback\n */\n enlivenObjectEnlivables: function (object, context, callback) {\n var enlivenProps = fabric.Object.ENLIVEN_PROPS.filter(function (key) { return !!object[key]; });\n fabric.util.enlivenObjects(enlivenProps.map(function (key) { return object[key]; }), function (enlivedProps) {\n var objects = {};\n enlivenProps.forEach(function (key, index) {\n objects[key] = enlivedProps[index];\n context && (context[key] = enlivedProps[index]);\n });\n callback && callback(objects);\n });\n },\n\n /**\n * Create and wait for loading of patterns\n * @static\n * @memberOf fabric.util\n * @param {Array} patterns Objects to enliven\n * @param {Function} callback Callback to invoke when all objects are created\n * called after each fabric object created.\n */\n enlivenPatterns: function(patterns, callback) {\n patterns = patterns || [];\n\n function onLoaded() {\n if (++numLoadedPatterns === numPatterns) {\n callback && callback(enlivenedPatterns);\n }\n }\n\n var enlivenedPatterns = [],\n numLoadedPatterns = 0,\n numPatterns = patterns.length;\n\n if (!numPatterns) {\n callback && callback(enlivenedPatterns);\n return;\n }\n\n patterns.forEach(function (p, index) {\n if (p && p.source) {\n new fabric.Pattern(p, function(pattern) {\n enlivenedPatterns[index] = pattern;\n onLoaded();\n });\n }\n else {\n enlivenedPatterns[index] = p;\n onLoaded();\n }\n });\n },\n\n /**\n * Groups SVG elements (usually those retrieved from SVG document)\n * @static\n * @memberOf fabric.util\n * @param {Array} elements SVG elements to group\n * @param {Object} [options] Options object\n * @param {String} path Value to set sourcePath to\n * @return {fabric.Object|fabric.Group}\n */\n groupSVGElements: function(elements, options, path) {\n var object;\n if (elements && elements.length === 1) {\n if (typeof path !== 'undefined') {\n elements[0].sourcePath = path;\n }\n return elements[0];\n }\n if (options) {\n if (options.width && options.height) {\n options.centerPoint = {\n x: options.width / 2,\n y: options.height / 2\n };\n }\n else {\n delete options.width;\n delete options.height;\n }\n }\n object = new fabric.Group(elements, options);\n if (typeof path !== 'undefined') {\n object.sourcePath = path;\n }\n return object;\n },\n\n /**\n * Populates an object with properties of another object\n * @static\n * @memberOf fabric.util\n * @param {Object} source Source object\n * @param {Object} destination Destination object\n * @return {Array} properties Properties names to include\n */\n populateWithProperties: function(source, destination, properties) {\n if (properties && Array.isArray(properties)) {\n for (var i = 0, len = properties.length; i < len; i++) {\n if (properties[i] in source) {\n destination[properties[i]] = source[properties[i]];\n }\n }\n }\n },\n\n /**\n * Creates canvas element\n * @static\n * @memberOf fabric.util\n * @return {CanvasElement} initialized canvas element\n */\n createCanvasElement: function() {\n return fabric.document.createElement('canvas');\n },\n\n /**\n * Creates a canvas element that is a copy of another and is also painted\n * @param {CanvasElement} canvas to copy size and content of\n * @static\n * @memberOf fabric.util\n * @return {CanvasElement} initialized canvas element\n */\n copyCanvasElement: function(canvas) {\n var newCanvas = fabric.util.createCanvasElement();\n newCanvas.width = canvas.width;\n newCanvas.height = canvas.height;\n newCanvas.getContext('2d').drawImage(canvas, 0, 0);\n return newCanvas;\n },\n\n /**\n * since 2.6.0 moved from canvas instance to utility.\n * @param {CanvasElement} canvasEl to copy size and content of\n * @param {String} format 'jpeg' or 'png', in some browsers 'webp' is ok too\n * @param {Number} quality <= 1 and > 0\n * @static\n * @memberOf fabric.util\n * @return {String} data url\n */\n toDataURL: function(canvasEl, format, quality) {\n return canvasEl.toDataURL('image/' + format, quality);\n },\n\n /**\n * Creates image element (works on client and node)\n * @static\n * @memberOf fabric.util\n * @return {HTMLImageElement} HTML image element\n */\n createImage: function() {\n return fabric.document.createElement('img');\n },\n\n /**\n * Multiply matrix A by matrix B to nest transformations\n * @static\n * @memberOf fabric.util\n * @param {Array} a First transformMatrix\n * @param {Array} b Second transformMatrix\n * @param {Boolean} is2x2 flag to multiply matrices as 2x2 matrices\n * @return {Array} The product of the two transform matrices\n */\n multiplyTransformMatrices: function(a, b, is2x2) {\n // Matrix multiply a * b\n return [\n a[0] * b[0] + a[2] * b[1],\n a[1] * b[0] + a[3] * b[1],\n a[0] * b[2] + a[2] * b[3],\n a[1] * b[2] + a[3] * b[3],\n is2x2 ? 0 : a[0] * b[4] + a[2] * b[5] + a[4],\n is2x2 ? 0 : a[1] * b[4] + a[3] * b[5] + a[5]\n ];\n },\n\n /**\n * Decomposes standard 2x3 matrix into transform components\n * @static\n * @memberOf fabric.util\n * @param {Array} a transformMatrix\n * @return {Object} Components of transform\n */\n qrDecompose: function(a) {\n var angle = atan2(a[1], a[0]),\n denom = pow(a[0], 2) + pow(a[1], 2),\n scaleX = sqrt(denom),\n scaleY = (a[0] * a[3] - a[2] * a[1]) / scaleX,\n skewX = atan2(a[0] * a[2] + a[1] * a [3], denom);\n return {\n angle: angle / PiBy180,\n scaleX: scaleX,\n scaleY: scaleY,\n skewX: skewX / PiBy180,\n skewY: 0,\n translateX: a[4],\n translateY: a[5]\n };\n },\n\n /**\n * Returns a transform matrix starting from an object of the same kind of\n * the one returned from qrDecompose, useful also if you want to calculate some\n * transformations from an object that is not enlived yet\n * @static\n * @memberOf fabric.util\n * @param {Object} options\n * @param {Number} [options.angle] angle in degrees\n * @return {Number[]} transform matrix\n */\n calcRotateMatrix: function(options) {\n if (!options.angle) {\n return fabric.iMatrix.concat();\n }\n var theta = fabric.util.degreesToRadians(options.angle),\n cos = fabric.util.cos(theta),\n sin = fabric.util.sin(theta);\n return [cos, sin, -sin, cos, 0, 0];\n },\n\n /**\n * Returns a transform matrix starting from an object of the same kind of\n * the one returned from qrDecompose, useful also if you want to calculate some\n * transformations from an object that is not enlived yet.\n * is called DimensionsTransformMatrix because those properties are the one that influence\n * the size of the resulting box of the object.\n * @static\n * @memberOf fabric.util\n * @param {Object} options\n * @param {Number} [options.scaleX]\n * @param {Number} [options.scaleY]\n * @param {Boolean} [options.flipX]\n * @param {Boolean} [options.flipY]\n * @param {Number} [options.skewX]\n * @param {Number} [options.skewY]\n * @return {Number[]} transform matrix\n */\n calcDimensionsMatrix: function(options) {\n var scaleX = typeof options.scaleX === 'undefined' ? 1 : options.scaleX,\n scaleY = typeof options.scaleY === 'undefined' ? 1 : options.scaleY,\n scaleMatrix = [\n options.flipX ? -scaleX : scaleX,\n 0,\n 0,\n options.flipY ? -scaleY : scaleY,\n 0,\n 0],\n multiply = fabric.util.multiplyTransformMatrices,\n degreesToRadians = fabric.util.degreesToRadians;\n if (options.skewX) {\n scaleMatrix = multiply(\n scaleMatrix,\n [1, 0, Math.tan(degreesToRadians(options.skewX)), 1],\n true);\n }\n if (options.skewY) {\n scaleMatrix = multiply(\n scaleMatrix,\n [1, Math.tan(degreesToRadians(options.skewY)), 0, 1],\n true);\n }\n return scaleMatrix;\n },\n\n /**\n * Returns a transform matrix starting from an object of the same kind of\n * the one returned from qrDecompose, useful also if you want to calculate some\n * transformations from an object that is not enlived yet\n * @static\n * @memberOf fabric.util\n * @param {Object} options\n * @param {Number} [options.angle]\n * @param {Number} [options.scaleX]\n * @param {Number} [options.scaleY]\n * @param {Boolean} [options.flipX]\n * @param {Boolean} [options.flipY]\n * @param {Number} [options.skewX]\n * @param {Number} [options.skewX]\n * @param {Number} [options.translateX]\n * @param {Number} [options.translateY]\n * @return {Number[]} transform matrix\n */\n composeMatrix: function(options) {\n var matrix = [1, 0, 0, 1, options.translateX || 0, options.translateY || 0],\n multiply = fabric.util.multiplyTransformMatrices;\n if (options.angle) {\n matrix = multiply(matrix, fabric.util.calcRotateMatrix(options));\n }\n if (options.scaleX !== 1 || options.scaleY !== 1 ||\n options.skewX || options.skewY || options.flipX || options.flipY) {\n matrix = multiply(matrix, fabric.util.calcDimensionsMatrix(options));\n }\n return matrix;\n },\n\n /**\n * reset an object transform state to neutral. Top and left are not accounted for\n * @static\n * @memberOf fabric.util\n * @param {fabric.Object} target object to transform\n */\n resetObjectTransform: function (target) {\n target.scaleX = 1;\n target.scaleY = 1;\n target.skewX = 0;\n target.skewY = 0;\n target.flipX = false;\n target.flipY = false;\n target.rotate(0);\n },\n\n /**\n * Extract Object transform values\n * @static\n * @memberOf fabric.util\n * @param {fabric.Object} target object to read from\n * @return {Object} Components of transform\n */\n saveObjectTransform: function (target) {\n return {\n scaleX: target.scaleX,\n scaleY: target.scaleY,\n skewX: target.skewX,\n skewY: target.skewY,\n angle: target.angle,\n left: target.left,\n flipX: target.flipX,\n flipY: target.flipY,\n top: target.top\n };\n },\n\n /**\n * Returns true if context has transparent pixel\n * at specified location (taking tolerance into account)\n * @param {CanvasRenderingContext2D} ctx context\n * @param {Number} x x coordinate\n * @param {Number} y y coordinate\n * @param {Number} tolerance Tolerance\n */\n isTransparent: function(ctx, x, y, tolerance) {\n\n // If tolerance is > 0 adjust start coords to take into account.\n // If moves off Canvas fix to 0\n if (tolerance > 0) {\n if (x > tolerance) {\n x -= tolerance;\n }\n else {\n x = 0;\n }\n if (y > tolerance) {\n y -= tolerance;\n }\n else {\n y = 0;\n }\n }\n\n var _isTransparent = true, i, temp,\n imageData = ctx.getImageData(x, y, (tolerance * 2) || 1, (tolerance * 2) || 1),\n l = imageData.data.length;\n\n // Split image data - for tolerance > 1, pixelDataSize = 4;\n for (i = 3; i < l; i += 4) {\n temp = imageData.data[i];\n _isTransparent = temp <= 0;\n if (_isTransparent === false) {\n break; // Stop if colour found\n }\n }\n\n imageData = null;\n\n return _isTransparent;\n },\n\n /**\n * Parse preserveAspectRatio attribute from element\n * @param {string} attribute to be parsed\n * @return {Object} an object containing align and meetOrSlice attribute\n */\n parsePreserveAspectRatioAttribute: function(attribute) {\n var meetOrSlice = 'meet', alignX = 'Mid', alignY = 'Mid',\n aspectRatioAttrs = attribute.split(' '), align;\n\n if (aspectRatioAttrs && aspectRatioAttrs.length) {\n meetOrSlice = aspectRatioAttrs.pop();\n if (meetOrSlice !== 'meet' && meetOrSlice !== 'slice') {\n align = meetOrSlice;\n meetOrSlice = 'meet';\n }\n else if (aspectRatioAttrs.length) {\n align = aspectRatioAttrs.pop();\n }\n }\n //divide align in alignX and alignY\n alignX = align !== 'none' ? align.slice(1, 4) : 'none';\n alignY = align !== 'none' ? align.slice(5, 8) : 'none';\n return {\n meetOrSlice: meetOrSlice,\n alignX: alignX,\n alignY: alignY\n };\n },\n\n /**\n * Clear char widths cache for the given font family or all the cache if no\n * fontFamily is specified.\n * Use it if you know you are loading fonts in a lazy way and you are not waiting\n * for custom fonts to load properly when adding text objects to the canvas.\n * If a text object is added when its own font is not loaded yet, you will get wrong\n * measurement and so wrong bounding boxes.\n * After the font cache is cleared, either change the textObject text content or call\n * initDimensions() to trigger a recalculation\n * @memberOf fabric.util\n * @param {String} [fontFamily] font family to clear\n */\n clearFabricFontCache: function(fontFamily) {\n fontFamily = (fontFamily || '').toLowerCase();\n if (!fontFamily) {\n fabric.charWidthsCache = { };\n }\n else if (fabric.charWidthsCache[fontFamily]) {\n delete fabric.charWidthsCache[fontFamily];\n }\n },\n\n /**\n * Given current aspect ratio, determines the max width and height that can\n * respect the total allowed area for the cache.\n * @memberOf fabric.util\n * @param {Number} ar aspect ratio\n * @param {Number} maximumArea Maximum area you want to achieve\n * @return {Object.x} Limited dimensions by X\n * @return {Object.y} Limited dimensions by Y\n */\n limitDimsByArea: function(ar, maximumArea) {\n var roughWidth = Math.sqrt(maximumArea * ar),\n perfLimitSizeY = Math.floor(maximumArea / roughWidth);\n return { x: Math.floor(roughWidth), y: perfLimitSizeY };\n },\n\n capValue: function(min, value, max) {\n return Math.max(min, Math.min(value, max));\n },\n\n /**\n * Finds the scale for the object source to fit inside the object destination,\n * keeping aspect ratio intact.\n * respect the total allowed area for the cache.\n * @memberOf fabric.util\n * @param {Object | fabric.Object} source\n * @param {Number} source.height natural unscaled height of the object\n * @param {Number} source.width natural unscaled width of the object\n * @param {Object | fabric.Object} destination\n * @param {Number} destination.height natural unscaled height of the object\n * @param {Number} destination.width natural unscaled width of the object\n * @return {Number} scale factor to apply to source to fit into destination\n */\n findScaleToFit: function(source, destination) {\n return Math.min(destination.width / source.width, destination.height / source.height);\n },\n\n /**\n * Finds the scale for the object source to cover entirely the object destination,\n * keeping aspect ratio intact.\n * respect the total allowed area for the cache.\n * @memberOf fabric.util\n * @param {Object | fabric.Object} source\n * @param {Number} source.height natural unscaled height of the object\n * @param {Number} source.width natural unscaled width of the object\n * @param {Object | fabric.Object} destination\n * @param {Number} destination.height natural unscaled height of the object\n * @param {Number} destination.width natural unscaled width of the object\n * @return {Number} scale factor to apply to source to cover destination\n */\n findScaleToCover: function(source, destination) {\n return Math.max(destination.width / source.width, destination.height / source.height);\n },\n\n /**\n * given an array of 6 number returns something like `\"matrix(...numbers)\"`\n * @memberOf fabric.util\n * @param {Array} transform an array with 6 numbers\n * @return {String} transform matrix for svg\n * @return {Object.y} Limited dimensions by Y\n */\n matrixToSVG: function(transform) {\n return 'matrix(' + transform.map(function(value) {\n return fabric.util.toFixed(value, fabric.Object.NUM_FRACTION_DIGITS);\n }).join(' ') + ')';\n },\n\n /**\n * given an object and a transform, apply the inverse transform to the object,\n * this is equivalent to remove from that object that transformation, so that\n * added in a space with the removed transform, the object will be the same as before.\n * Removing from an object a transform that scale by 2 is like scaling it by 1/2.\n * Removing from an object a transfrom that rotate by 30deg is like rotating by 30deg\n * in the opposite direction.\n * This util is used to add objects inside transformed groups or nested groups.\n * @memberOf fabric.util\n * @param {fabric.Object} object the object you want to transform\n * @param {Array} transform the destination transform\n */\n removeTransformFromObject: function(object, transform) {\n var inverted = fabric.util.invertTransform(transform),\n finalTransform = fabric.util.multiplyTransformMatrices(inverted, object.calcOwnMatrix());\n fabric.util.applyTransformToObject(object, finalTransform);\n },\n\n /**\n * given an object and a transform, apply the transform to the object.\n * this is equivalent to change the space where the object is drawn.\n * Adding to an object a transform that scale by 2 is like scaling it by 2.\n * This is used when removing an object from an active selection for example.\n * @memberOf fabric.util\n * @param {fabric.Object} object the object you want to transform\n * @param {Array} transform the destination transform\n */\n addTransformToObject: function(object, transform) {\n fabric.util.applyTransformToObject(\n object,\n fabric.util.multiplyTransformMatrices(transform, object.calcOwnMatrix())\n );\n },\n\n /**\n * discard an object transform state and apply the one from the matrix.\n * @memberOf fabric.util\n * @param {fabric.Object} object the object you want to transform\n * @param {Array} transform the destination transform\n */\n applyTransformToObject: function(object, transform) {\n var options = fabric.util.qrDecompose(transform),\n center = new fabric.Point(options.translateX, options.translateY);\n object.flipX = false;\n object.flipY = false;\n object.set('scaleX', options.scaleX);\n object.set('scaleY', options.scaleY);\n object.skewX = options.skewX;\n object.skewY = options.skewY;\n object.angle = options.angle;\n object.setPositionByOrigin(center, 'center', 'center');\n },\n\n /**\n * given a width and height, return the size of the bounding box\n * that can contains the box with width/height with applied transform\n * described in options.\n * Use to calculate the boxes around objects for controls.\n * @memberOf fabric.util\n * @param {Number} width\n * @param {Number} height\n * @param {Object} options\n * @param {Number} options.scaleX\n * @param {Number} options.scaleY\n * @param {Number} options.skewX\n * @param {Number} options.skewY\n * @return {Object.x} width of containing\n * @return {Object.y} height of containing\n */\n sizeAfterTransform: function(width, height, options) {\n var dimX = width / 2, dimY = height / 2,\n points = [\n {\n x: -dimX,\n y: -dimY\n },\n {\n x: dimX,\n y: -dimY\n },\n {\n x: -dimX,\n y: dimY\n },\n {\n x: dimX,\n y: dimY\n }],\n transformMatrix = fabric.util.calcDimensionsMatrix(options),\n bbox = fabric.util.makeBoundingBoxFromPoints(points, transformMatrix);\n return {\n x: bbox.width,\n y: bbox.height,\n };\n },\n\n /**\n * Merges 2 clip paths into one visually equal clip path\n *\n * **IMPORTANT**:\\\n * Does **NOT** clone the arguments, clone them proir if necessary.\n *\n * Creates a wrapper (group) that contains one clip path and is clipped by the other so content is kept where both overlap.\n * Use this method if both the clip paths may have nested clip paths of their own, so assigning one to the other's clip path property is not possible.\n *\n * In order to handle the `inverted` property we follow logic described in the following cases:\\\n * **(1)** both clip paths are inverted - the clip paths pass the inverted prop to the wrapper and loose it themselves.\\\n * **(2)** one is inverted and the other isn't - the wrapper shouldn't become inverted and the inverted clip path must clip the non inverted one to produce an identical visual effect.\\\n * **(3)** both clip paths are not inverted - wrapper and clip paths remain unchanged.\n *\n * @memberOf fabric.util\n * @param {fabric.Object} c1\n * @param {fabric.Object} c2\n * @returns {fabric.Object} merged clip path\n */\n mergeClipPaths: function (c1, c2) {\n var a = c1, b = c2;\n if (a.inverted && !b.inverted) {\n // case (2)\n a = c2;\n b = c1;\n }\n // `b` becomes `a`'s clip path so we transform `b` to `a` coordinate plane\n fabric.util.applyTransformToObject(\n b,\n fabric.util.multiplyTransformMatrices(\n fabric.util.invertTransform(a.calcTransformMatrix()),\n b.calcTransformMatrix()\n )\n );\n // assign the `inverted` prop to the wrapping group\n var inverted = a.inverted && b.inverted;\n if (inverted) {\n // case (1)\n a.inverted = b.inverted = false;\n }\n return new fabric.Group([a], { clipPath: b, inverted: inverted });\n },\n\n /**\n * @memberOf fabric.util\n * @param {Object} prevStyle first style to compare\n * @param {Object} thisStyle second style to compare\n * @param {boolean} forTextSpans whether to check overline, underline, and line-through properties\n * @return {boolean} true if the style changed\n */\n hasStyleChanged: function(prevStyle, thisStyle, forTextSpans) {\n forTextSpans = forTextSpans || false;\n return (prevStyle.fill !== thisStyle.fill ||\n prevStyle.stroke !== thisStyle.stroke ||\n prevStyle.strokeWidth !== thisStyle.strokeWidth ||\n prevStyle.fontSize !== thisStyle.fontSize ||\n prevStyle.fontFamily !== thisStyle.fontFamily ||\n prevStyle.fontWeight !== thisStyle.fontWeight ||\n prevStyle.fontStyle !== thisStyle.fontStyle ||\n prevStyle.deltaY !== thisStyle.deltaY) ||\n (forTextSpans &&\n (prevStyle.overline !== thisStyle.overline ||\n prevStyle.underline !== thisStyle.underline ||\n prevStyle.linethrough !== thisStyle.linethrough));\n },\n\n /**\n * Returns the array form of a text object's inline styles property with styles grouped in ranges\n * rather than per character. This format is less verbose, and is better suited for storage\n * so it is used in serialization (not during runtime).\n * @memberOf fabric.util\n * @param {object} styles per character styles for a text object\n * @param {String} text the text string that the styles are applied to\n * @return {{start: number, end: number, style: object}[]}\n */\n stylesToArray: function(styles, text) {\n // clone style structure to prevent mutation\n var styles = fabric.util.object.clone(styles, true),\n textLines = text.split('\\n'),\n charIndex = -1, prevStyle = {}, stylesArray = [];\n //loop through each textLine\n for (var i = 0; i < textLines.length; i++) {\n if (!styles[i]) {\n //no styles exist for this line, so add the line's length to the charIndex total\n charIndex += textLines[i].length;\n continue;\n }\n //loop through each character of the current line\n for (var c = 0; c < textLines[i].length; c++) {\n charIndex++;\n var thisStyle = styles[i][c];\n //check if style exists for this character\n if (thisStyle) {\n var styleChanged = fabric.util.hasStyleChanged(prevStyle, thisStyle, true);\n if (styleChanged) {\n stylesArray.push({\n start: charIndex,\n end: charIndex + 1,\n style: thisStyle\n });\n }\n else {\n //if style is the same as previous character, increase end index\n stylesArray[stylesArray.length - 1].end++;\n }\n }\n prevStyle = thisStyle || {};\n }\n }\n return stylesArray;\n },\n\n /**\n * Returns the object form of the styles property with styles that are assigned per\n * character rather than grouped by range. This format is more verbose, and is\n * only used during runtime (not for serialization/storage)\n * @memberOf fabric.util\n * @param {Array} styles the serialized form of a text object's styles\n * @param {String} text the text string that the styles are applied to\n * @return {Object}\n */\n stylesFromArray: function(styles, text) {\n if (!Array.isArray(styles)) {\n return styles;\n }\n var textLines = text.split('\\n'),\n charIndex = -1, styleIndex = 0, stylesObject = {};\n //loop through each textLine\n for (var i = 0; i < textLines.length; i++) {\n //loop through each character of the current line\n for (var c = 0; c < textLines[i].length; c++) {\n charIndex++;\n //check if there's a style collection that includes the current character\n if (styles[styleIndex]\n && styles[styleIndex].start <= charIndex\n && charIndex < styles[styleIndex].end) {\n //create object for line index if it doesn't exist\n stylesObject[i] = stylesObject[i] || {};\n //assign a style at this character's index\n stylesObject[i][c] = Object.assign({}, styles[styleIndex].style);\n //if character is at the end of the current style collection, move to the next\n if (charIndex === styles[styleIndex].end - 1) {\n styleIndex++;\n }\n }\n }\n }\n return stylesObject;\n }\n };\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n var _join = Array.prototype.join,\n commandLengths = {\n m: 2,\n l: 2,\n h: 1,\n v: 1,\n c: 6,\n s: 4,\n q: 4,\n t: 2,\n a: 7\n },\n repeatedCommands = {\n m: 'l',\n M: 'L'\n };\n function segmentToBezier(th2, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY) {\n var costh2 = fabric.util.cos(th2),\n sinth2 = fabric.util.sin(th2),\n costh3 = fabric.util.cos(th3),\n sinth3 = fabric.util.sin(th3),\n toX = cosTh * rx * costh3 - sinTh * ry * sinth3 + cx1,\n toY = sinTh * rx * costh3 + cosTh * ry * sinth3 + cy1,\n cp1X = fromX + mT * ( -cosTh * rx * sinth2 - sinTh * ry * costh2),\n cp1Y = fromY + mT * ( -sinTh * rx * sinth2 + cosTh * ry * costh2),\n cp2X = toX + mT * ( cosTh * rx * sinth3 + sinTh * ry * costh3),\n cp2Y = toY + mT * ( sinTh * rx * sinth3 - cosTh * ry * costh3);\n\n return ['C',\n cp1X, cp1Y,\n cp2X, cp2Y,\n toX, toY\n ];\n }\n\n /* Adapted from http://dxr.mozilla.org/mozilla-central/source/content/svg/content/src/nsSVGPathDataParser.cpp\n * by Andrea Bogazzi code is under MPL. if you don't have a copy of the license you can take it here\n * http://mozilla.org/MPL/2.0/\n */\n function arcToSegments(toX, toY, rx, ry, large, sweep, rotateX) {\n var PI = Math.PI, th = rotateX * PI / 180,\n sinTh = fabric.util.sin(th),\n cosTh = fabric.util.cos(th),\n fromX = 0, fromY = 0;\n\n rx = Math.abs(rx);\n ry = Math.abs(ry);\n\n var px = -cosTh * toX * 0.5 - sinTh * toY * 0.5,\n py = -cosTh * toY * 0.5 + sinTh * toX * 0.5,\n rx2 = rx * rx, ry2 = ry * ry, py2 = py * py, px2 = px * px,\n pl = rx2 * ry2 - rx2 * py2 - ry2 * px2,\n root = 0;\n\n if (pl < 0) {\n var s = Math.sqrt(1 - pl / (rx2 * ry2));\n rx *= s;\n ry *= s;\n }\n else {\n root = (large === sweep ? -1.0 : 1.0) *\n Math.sqrt( pl / (rx2 * py2 + ry2 * px2));\n }\n\n var cx = root * rx * py / ry,\n cy = -root * ry * px / rx,\n cx1 = cosTh * cx - sinTh * cy + toX * 0.5,\n cy1 = sinTh * cx + cosTh * cy + toY * 0.5,\n mTheta = calcVectorAngle(1, 0, (px - cx) / rx, (py - cy) / ry),\n dtheta = calcVectorAngle((px - cx) / rx, (py - cy) / ry, (-px - cx) / rx, (-py - cy) / ry);\n\n if (sweep === 0 && dtheta > 0) {\n dtheta -= 2 * PI;\n }\n else if (sweep === 1 && dtheta < 0) {\n dtheta += 2 * PI;\n }\n\n // Convert into cubic bezier segments <= 90deg\n var segments = Math.ceil(Math.abs(dtheta / PI * 2)),\n result = [], mDelta = dtheta / segments,\n mT = 8 / 3 * Math.sin(mDelta / 4) * Math.sin(mDelta / 4) / Math.sin(mDelta / 2),\n th3 = mTheta + mDelta;\n\n for (var i = 0; i < segments; i++) {\n result[i] = segmentToBezier(mTheta, th3, cosTh, sinTh, rx, ry, cx1, cy1, mT, fromX, fromY);\n fromX = result[i][5];\n fromY = result[i][6];\n mTheta = th3;\n th3 += mDelta;\n }\n return result;\n }\n\n /*\n * Private\n */\n function calcVectorAngle(ux, uy, vx, vy) {\n var ta = Math.atan2(uy, ux),\n tb = Math.atan2(vy, vx);\n if (tb >= ta) {\n return tb - ta;\n }\n else {\n return 2 * Math.PI - (ta - tb);\n }\n }\n\n /**\n * Calculate bounding box of a beziercurve\n * @param {Number} x0 starting point\n * @param {Number} y0\n * @param {Number} x1 first control point\n * @param {Number} y1\n * @param {Number} x2 secondo control point\n * @param {Number} y2\n * @param {Number} x3 end of bezier\n * @param {Number} y3\n */\n // taken from http://jsbin.com/ivomiq/56/edit no credits available for that.\n // TODO: can we normalize this with the starting points set at 0 and then translated the bbox?\n function getBoundsOfCurve(x0, y0, x1, y1, x2, y2, x3, y3) {\n var argsString;\n if (fabric.cachesBoundsOfCurve) {\n argsString = _join.call(arguments);\n if (fabric.boundsOfCurveCache[argsString]) {\n return fabric.boundsOfCurveCache[argsString];\n }\n }\n\n var sqrt = Math.sqrt,\n min = Math.min, max = Math.max,\n abs = Math.abs, tvalues = [],\n bounds = [[], []],\n a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n\n for (var i = 0; i < 2; ++i) {\n if (i > 0) {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n\n if (abs(a) < 1e-12) {\n if (abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n if (b2ac < 0) {\n continue;\n }\n sqrtb2ac = sqrt(b2ac);\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n var x, y, j = tvalues.length, jlen = j, mt;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n x = (mt * mt * mt * x0) + (3 * mt * mt * t * x1) + (3 * mt * t * t * x2) + (t * t * t * x3);\n bounds[0][j] = x;\n\n y = (mt * mt * mt * y0) + (3 * mt * mt * t * y1) + (3 * mt * t * t * y2) + (t * t * t * y3);\n bounds[1][j] = y;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n var result = [\n {\n x: min.apply(null, bounds[0]),\n y: min.apply(null, bounds[1])\n },\n {\n x: max.apply(null, bounds[0]),\n y: max.apply(null, bounds[1])\n }\n ];\n if (fabric.cachesBoundsOfCurve) {\n fabric.boundsOfCurveCache[argsString] = result;\n }\n return result;\n }\n\n /**\n * Converts arc to a bunch of bezier curves\n * @param {Number} fx starting point x\n * @param {Number} fy starting point y\n * @param {Array} coords Arc command\n */\n function fromArcToBeziers(fx, fy, coords) {\n var rx = coords[1],\n ry = coords[2],\n rot = coords[3],\n large = coords[4],\n sweep = coords[5],\n tx = coords[6],\n ty = coords[7],\n segsNorm = arcToSegments(tx - fx, ty - fy, rx, ry, large, sweep, rot);\n\n for (var i = 0, len = segsNorm.length; i < len; i++) {\n segsNorm[i][1] += fx;\n segsNorm[i][2] += fy;\n segsNorm[i][3] += fx;\n segsNorm[i][4] += fy;\n segsNorm[i][5] += fx;\n segsNorm[i][6] += fy;\n }\n return segsNorm;\n };\n\n /**\n * This function take a parsed SVG path and make it simpler for fabricJS logic.\n * simplification consist of: only UPPERCASE absolute commands ( relative converted to absolute )\n * S converted in C, T converted in Q, A converted in C.\n * @param {Array} path the array of commands of a parsed svg path for fabric.Path\n * @return {Array} the simplified array of commands of a parsed svg path for fabric.Path\n */\n function makePathSimpler(path) {\n // x and y represent the last point of the path. the previous command point.\n // we add them to each relative command to make it an absolute comment.\n // we also swap the v V h H with L, because are easier to transform.\n var x = 0, y = 0, len = path.length,\n // x1 and y1 represent the last point of the subpath. the subpath is started with\n // m or M command. When a z or Z command is drawn, x and y need to be resetted to\n // the last x1 and y1.\n x1 = 0, y1 = 0, current, i, converted,\n // previous will host the letter of the previous command, to handle S and T.\n // controlX and controlY will host the previous reflected control point\n destinationPath = [], previous, controlX, controlY;\n for (i = 0; i < len; ++i) {\n converted = false;\n current = path[i].slice(0);\n switch (current[0]) { // first letter\n case 'l': // lineto, relative\n current[0] = 'L';\n current[1] += x;\n current[2] += y;\n // falls through\n case 'L':\n x = current[1];\n y = current[2];\n break;\n case 'h': // horizontal lineto, relative\n current[1] += x;\n // falls through\n case 'H':\n current[0] = 'L';\n current[2] = y;\n x = current[1];\n break;\n case 'v': // vertical lineto, relative\n current[1] += y;\n // falls through\n case 'V':\n current[0] = 'L';\n y = current[1];\n current[1] = x;\n current[2] = y;\n break;\n case 'm': // moveTo, relative\n current[0] = 'M';\n current[1] += x;\n current[2] += y;\n // falls through\n case 'M':\n x = current[1];\n y = current[2];\n x1 = current[1];\n y1 = current[2];\n break;\n case 'c': // bezierCurveTo, relative\n current[0] = 'C';\n current[1] += x;\n current[2] += y;\n current[3] += x;\n current[4] += y;\n current[5] += x;\n current[6] += y;\n // falls through\n case 'C':\n controlX = current[3];\n controlY = current[4];\n x = current[5];\n y = current[6];\n break;\n case 's': // shorthand cubic bezierCurveTo, relative\n current[0] = 'S';\n current[1] += x;\n current[2] += y;\n current[3] += x;\n current[4] += y;\n // falls through\n case 'S':\n // would be sScC but since we are swapping sSc for C, we check just that.\n if (previous === 'C') {\n // calculate reflection of previous control points\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n else {\n // If there is no previous command or if the previous command was not a C, c, S, or s,\n // the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n x = current[3];\n y = current[4];\n current[0] = 'C';\n current[5] = current[3];\n current[6] = current[4];\n current[3] = current[1];\n current[4] = current[2];\n current[1] = controlX;\n current[2] = controlY;\n // current[3] and current[4] are NOW the second control point.\n // we keep it for the next reflection.\n controlX = current[3];\n controlY = current[4];\n break;\n case 'q': // quadraticCurveTo, relative\n current[0] = 'Q';\n current[1] += x;\n current[2] += y;\n current[3] += x;\n current[4] += y;\n // falls through\n case 'Q':\n controlX = current[1];\n controlY = current[2];\n x = current[3];\n y = current[4];\n break;\n case 't': // shorthand quadraticCurveTo, relative\n current[0] = 'T';\n current[1] += x;\n current[2] += y;\n // falls through\n case 'T':\n if (previous === 'Q') {\n // calculate reflection of previous control point\n controlX = 2 * x - controlX;\n controlY = 2 * y - controlY;\n }\n else {\n // If there is no previous command or if the previous command was not a Q, q, T or t,\n // assume the control point is coincident with the current point\n controlX = x;\n controlY = y;\n }\n current[0] = 'Q';\n x = current[1];\n y = current[2];\n current[1] = controlX;\n current[2] = controlY;\n current[3] = x;\n current[4] = y;\n break;\n case 'a':\n current[0] = 'A';\n current[6] += x;\n current[7] += y;\n // falls through\n case 'A':\n converted = true;\n destinationPath = destinationPath.concat(fromArcToBeziers(x, y, current));\n x = current[6];\n y = current[7];\n break;\n case 'z':\n case 'Z':\n x = x1;\n y = y1;\n break;\n default:\n }\n if (!converted) {\n destinationPath.push(current);\n }\n previous = current[0];\n }\n return destinationPath;\n };\n\n /**\n * Calc length from point x1,y1 to x2,y2\n * @param {Number} x1 starting point x\n * @param {Number} y1 starting point y\n * @param {Number} x2 starting point x\n * @param {Number} y2 starting point y\n * @return {Number} length of segment\n */\n function calcLineLength(x1, y1, x2, y2) {\n return Math.sqrt((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1));\n }\n\n // functions for the Cubic beizer\n // taken from: https://github.com/konvajs/konva/blob/7.0.5/src/shapes/Path.ts#L350\n function CB1(t) {\n return t * t * t;\n }\n function CB2(t) {\n return 3 * t * t * (1 - t);\n }\n function CB3(t) {\n return 3 * t * (1 - t) * (1 - t);\n }\n function CB4(t) {\n return (1 - t) * (1 - t) * (1 - t);\n }\n\n function getPointOnCubicBezierIterator(p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\n return function(pct) {\n var c1 = CB1(pct), c2 = CB2(pct), c3 = CB3(pct), c4 = CB4(pct);\n return {\n x: p4x * c1 + p3x * c2 + p2x * c3 + p1x * c4,\n y: p4y * c1 + p3y * c2 + p2y * c3 + p1y * c4\n };\n };\n }\n\n function getTangentCubicIterator(p1x, p1y, p2x, p2y, p3x, p3y, p4x, p4y) {\n return function (pct) {\n var invT = 1 - pct,\n tangentX = (3 * invT * invT * (p2x - p1x)) + (6 * invT * pct * (p3x - p2x)) +\n (3 * pct * pct * (p4x - p3x)),\n tangentY = (3 * invT * invT * (p2y - p1y)) + (6 * invT * pct * (p3y - p2y)) +\n (3 * pct * pct * (p4y - p3y));\n return Math.atan2(tangentY, tangentX);\n };\n }\n\n function QB1(t) {\n return t * t;\n }\n\n function QB2(t) {\n return 2 * t * (1 - t);\n }\n\n function QB3(t) {\n return (1 - t) * (1 - t);\n }\n\n function getPointOnQuadraticBezierIterator(p1x, p1y, p2x, p2y, p3x, p3y) {\n return function(pct) {\n var c1 = QB1(pct), c2 = QB2(pct), c3 = QB3(pct);\n return {\n x: p3x * c1 + p2x * c2 + p1x * c3,\n y: p3y * c1 + p2y * c2 + p1y * c3\n };\n };\n }\n\n function getTangentQuadraticIterator(p1x, p1y, p2x, p2y, p3x, p3y) {\n return function (pct) {\n var invT = 1 - pct,\n tangentX = (2 * invT * (p2x - p1x)) + (2 * pct * (p3x - p2x)),\n tangentY = (2 * invT * (p2y - p1y)) + (2 * pct * (p3y - p2y));\n return Math.atan2(tangentY, tangentX);\n };\n }\n\n\n // this will run over a path segment ( a cubic or quadratic segment) and approximate it\n // with 100 segemnts. This will good enough to calculate the length of the curve\n function pathIterator(iterator, x1, y1) {\n var tempP = { x: x1, y: y1 }, p, tmpLen = 0, perc;\n for (perc = 1; perc <= 100; perc += 1) {\n p = iterator(perc / 100);\n tmpLen += calcLineLength(tempP.x, tempP.y, p.x, p.y);\n tempP = p;\n }\n return tmpLen;\n }\n\n /**\n * Given a pathInfo, and a distance in pixels, find the percentage from 0 to 1\n * that correspond to that pixels run over the path.\n * The percentage will be then used to find the correct point on the canvas for the path.\n * @param {Array} segInfo fabricJS collection of information on a parsed path\n * @param {Number} distance from starting point, in pixels.\n * @return {Object} info object with x and y ( the point on canvas ) and angle, the tangent on that point;\n */\n function findPercentageForDistance(segInfo, distance) {\n var perc = 0, tmpLen = 0, iterator = segInfo.iterator, tempP = { x: segInfo.x, y: segInfo.y },\n p, nextLen, nextStep = 0.01, angleFinder = segInfo.angleFinder, lastPerc;\n // nextStep > 0.0001 covers 0.00015625 that 1/64th of 1/100\n // the path\n while (tmpLen < distance && nextStep > 0.0001) {\n p = iterator(perc);\n lastPerc = perc;\n nextLen = calcLineLength(tempP.x, tempP.y, p.x, p.y);\n // compare tmpLen each cycle with distance, decide next perc to test.\n if ((nextLen + tmpLen) > distance) {\n // we discard this step and we make smaller steps.\n perc -= nextStep;\n nextStep /= 2;\n }\n else {\n tempP = p;\n perc += nextStep;\n tmpLen += nextLen;\n }\n }\n p.angle = angleFinder(lastPerc);\n return p;\n }\n\n /**\n * Run over a parsed and simplifed path and extrac some informations.\n * informations are length of each command and starting point\n * @param {Array} path fabricJS parsed path commands\n * @return {Array} path commands informations\n */\n function getPathSegmentsInfo(path) {\n var totalLength = 0, len = path.length, current,\n //x2 and y2 are the coords of segment start\n //x1 and y1 are the coords of the current point\n x1 = 0, y1 = 0, x2 = 0, y2 = 0, info = [], iterator, tempInfo, angleFinder;\n for (var i = 0; i < len; i++) {\n current = path[i];\n tempInfo = {\n x: x1,\n y: y1,\n command: current[0],\n };\n switch (current[0]) { //first letter\n case 'M':\n tempInfo.length = 0;\n x2 = x1 = current[1];\n y2 = y1 = current[2];\n break;\n case 'L':\n tempInfo.length = calcLineLength(x1, y1, current[1], current[2]);\n x1 = current[1];\n y1 = current[2];\n break;\n case 'C':\n iterator = getPointOnCubicBezierIterator(\n x1,\n y1,\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6]\n );\n angleFinder = getTangentCubicIterator(\n x1,\n y1,\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6]\n );\n tempInfo.iterator = iterator;\n tempInfo.angleFinder = angleFinder;\n tempInfo.length = pathIterator(iterator, x1, y1);\n x1 = current[5];\n y1 = current[6];\n break;\n case 'Q':\n iterator = getPointOnQuadraticBezierIterator(\n x1,\n y1,\n current[1],\n current[2],\n current[3],\n current[4]\n );\n angleFinder = getTangentQuadraticIterator(\n x1,\n y1,\n current[1],\n current[2],\n current[3],\n current[4]\n );\n tempInfo.iterator = iterator;\n tempInfo.angleFinder = angleFinder;\n tempInfo.length = pathIterator(iterator, x1, y1);\n x1 = current[3];\n y1 = current[4];\n break;\n case 'Z':\n case 'z':\n // we add those in order to ease calculations later\n tempInfo.destX = x2;\n tempInfo.destY = y2;\n tempInfo.length = calcLineLength(x1, y1, x2, y2);\n x1 = x2;\n y1 = y2;\n break;\n }\n totalLength += tempInfo.length;\n info.push(tempInfo);\n }\n info.push({ length: totalLength, x: x1, y: y1 });\n return info;\n }\n\n function getPointOnPath(path, distance, infos) {\n if (!infos) {\n infos = getPathSegmentsInfo(path);\n }\n var i = 0;\n while ((distance - infos[i].length > 0) && i < (infos.length - 2)) {\n distance -= infos[i].length;\n i++;\n }\n // var distance = infos[infos.length - 1] * perc;\n var segInfo = infos[i], segPercent = distance / segInfo.length,\n command = segInfo.command, segment = path[i], info;\n\n switch (command) {\n case 'M':\n return { x: segInfo.x, y: segInfo.y, angle: 0 };\n case 'Z':\n case 'z':\n info = new fabric.Point(segInfo.x, segInfo.y).lerp(\n new fabric.Point(segInfo.destX, segInfo.destY),\n segPercent\n );\n info.angle = Math.atan2(segInfo.destY - segInfo.y, segInfo.destX - segInfo.x);\n return info;\n case 'L':\n info = new fabric.Point(segInfo.x, segInfo.y).lerp(\n new fabric.Point(segment[1], segment[2]),\n segPercent\n );\n info.angle = Math.atan2(segment[2] - segInfo.y, segment[1] - segInfo.x);\n return info;\n case 'C':\n return findPercentageForDistance(segInfo, distance);\n case 'Q':\n return findPercentageForDistance(segInfo, distance);\n }\n }\n\n /**\n *\n * @param {string} pathString\n * @return {(string|number)[][]} An array of SVG path commands\n * @example Usage\n * parsePath('M 3 4 Q 3 5 2 1 4 0 Q 9 12 2 1 4 0') === [\n * ['M', 3, 4],\n * ['Q', 3, 5, 2, 1, 4, 0],\n * ['Q', 9, 12, 2, 1, 4, 0],\n * ];\n *\n */\n function parsePath(pathString) {\n var result = [],\n coords = [],\n currentPath,\n parsed,\n re = fabric.rePathCommand,\n rNumber = '[-+]?(?:\\\\d*\\\\.\\\\d+|\\\\d+\\\\.?)(?:[eE][-+]?\\\\d+)?\\\\s*',\n rNumberCommaWsp = '(' + rNumber + ')' + fabric.commaWsp,\n rFlagCommaWsp = '([01])' + fabric.commaWsp + '?',\n rArcSeq = rNumberCommaWsp + '?' + rNumberCommaWsp + '?' + rNumberCommaWsp + rFlagCommaWsp + rFlagCommaWsp +\n rNumberCommaWsp + '?(' + rNumber + ')',\n regArcArgumentSequence = new RegExp(rArcSeq, 'g'),\n match,\n coordsStr,\n // one of commands (m,M,l,L,q,Q,c,C,etc.) followed by non-command characters (i.e. command values)\n path;\n if (!pathString || !pathString.match) {\n return result;\n }\n path = pathString.match(/[mzlhvcsqta][^mzlhvcsqta]*/gi);\n\n for (var i = 0, coordsParsed, len = path.length; i < len; i++) {\n currentPath = path[i];\n\n coordsStr = currentPath.slice(1).trim();\n coords.length = 0;\n\n var command = currentPath.charAt(0);\n coordsParsed = [command];\n\n if (command.toLowerCase() === 'a') {\n // arcs have special flags that apparently don't require spaces so handle special\n for (var args; (args = regArcArgumentSequence.exec(coordsStr));) {\n for (var j = 1; j < args.length; j++) {\n coords.push(args[j]);\n }\n }\n }\n else {\n while ((match = re.exec(coordsStr))) {\n coords.push(match[0]);\n }\n }\n\n for (var j = 0, jlen = coords.length; j < jlen; j++) {\n parsed = parseFloat(coords[j]);\n if (!isNaN(parsed)) {\n coordsParsed.push(parsed);\n }\n }\n\n var commandLength = commandLengths[command.toLowerCase()],\n repeatedCommand = repeatedCommands[command] || command;\n\n if (coordsParsed.length - 1 > commandLength) {\n for (var k = 1, klen = coordsParsed.length; k < klen; k += commandLength) {\n result.push([command].concat(coordsParsed.slice(k, k + commandLength)));\n command = repeatedCommand;\n }\n }\n else {\n result.push(coordsParsed);\n }\n }\n\n return result;\n };\n\n /**\n *\n * Converts points to a smooth SVG path\n * @param {{ x: number,y: number }[]} points Array of points\n * @param {number} [correction] Apply a correction to the path (usually we use `width / 1000`). If value is undefined 0 is used as the correction value.\n * @return {(string|number)[][]} An array of SVG path commands\n */\n function getSmoothPathFromPoints(points, correction) {\n var path = [], i,\n p1 = new fabric.Point(points[0].x, points[0].y),\n p2 = new fabric.Point(points[1].x, points[1].y),\n len = points.length, multSignX = 1, multSignY = 0, manyPoints = len > 2;\n correction = correction || 0;\n\n if (manyPoints) {\n multSignX = points[2].x < p2.x ? -1 : points[2].x === p2.x ? 0 : 1;\n multSignY = points[2].y < p2.y ? -1 : points[2].y === p2.y ? 0 : 1;\n }\n path.push(['M', p1.x - multSignX * correction, p1.y - multSignY * correction]);\n for (i = 1; i < len; i++) {\n if (!p1.eq(p2)) {\n var midPoint = p1.midPointFrom(p2);\n // p1 is our bezier control point\n // midpoint is our endpoint\n // start point is p(i-1) value.\n path.push(['Q', p1.x, p1.y, midPoint.x, midPoint.y]);\n }\n p1 = points[i];\n if ((i + 1) < points.length) {\n p2 = points[i + 1];\n }\n }\n if (manyPoints) {\n multSignX = p1.x > points[i - 2].x ? 1 : p1.x === points[i - 2].x ? 0 : -1;\n multSignY = p1.y > points[i - 2].y ? 1 : p1.y === points[i - 2].y ? 0 : -1;\n }\n path.push(['L', p1.x + multSignX * correction, p1.y + multSignY * correction]);\n return path;\n }\n /**\n * Transform a path by transforming each segment.\n * it has to be a simplified path or it won't work.\n * WARNING: this depends from pathOffset for correct operation\n * @param {Array} path fabricJS parsed and simplified path commands\n * @param {Array} transform matrix that represent the transformation\n * @param {Object} [pathOffset] the fabric.Path pathOffset\n * @param {Number} pathOffset.x\n * @param {Number} pathOffset.y\n * @returns {Array} the transformed path\n */\n function transformPath(path, transform, pathOffset) {\n if (pathOffset) {\n transform = fabric.util.multiplyTransformMatrices(\n transform,\n [1, 0, 0, 1, -pathOffset.x, -pathOffset.y]\n );\n }\n return path.map(function(pathSegment) {\n var newSegment = pathSegment.slice(0), point = {};\n for (var i = 1; i < pathSegment.length - 1; i += 2) {\n point.x = pathSegment[i];\n point.y = pathSegment[i + 1];\n point = fabric.util.transformPoint(point, transform);\n newSegment[i] = point.x;\n newSegment[i + 1] = point.y;\n }\n return newSegment;\n });\n }\n\n /**\n * Join path commands to go back to svg format\n * @param {Array} pathData fabricJS parsed path commands\n * @return {String} joined path 'M 0 0 L 20 30'\n */\n fabric.util.joinPath = function(pathData) {\n return pathData.map(function (segment) { return segment.join(' '); }).join(' ');\n };\n fabric.util.parsePath = parsePath;\n fabric.util.makePathSimpler = makePathSimpler;\n fabric.util.getSmoothPathFromPoints = getSmoothPathFromPoints;\n fabric.util.getPathSegmentsInfo = getPathSegmentsInfo;\n fabric.util.getBoundsOfCurve = getBoundsOfCurve;\n fabric.util.getPointOnPath = getPointOnPath;\n fabric.util.transformPath = transformPath;\n})();\n\n\n(function() {\n\n var slice = Array.prototype.slice;\n\n /**\n * Invokes method on all items in a given array\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} method Name of a method to invoke\n * @return {Array}\n */\n function invoke(array, method) {\n var args = slice.call(arguments, 2), result = [];\n for (var i = 0, len = array.length; i < len; i++) {\n result[i] = args.length ? array[i][method].apply(array[i], args) : array[i][method].call(array[i]);\n }\n return result;\n }\n\n /**\n * Finds maximum value in array (not necessarily \"first\" one)\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} byProperty\n * @return {*}\n */\n function max(array, byProperty) {\n return find(array, byProperty, function(value1, value2) {\n return value1 >= value2;\n });\n }\n\n /**\n * Finds minimum value in array (not necessarily \"first\" one)\n * @memberOf fabric.util.array\n * @param {Array} array Array to iterate over\n * @param {String} byProperty\n * @return {*}\n */\n function min(array, byProperty) {\n return find(array, byProperty, function(value1, value2) {\n return value1 < value2;\n });\n }\n\n /**\n * @private\n */\n function fill(array, value) {\n var k = array.length;\n while (k--) {\n array[k] = value;\n }\n return array;\n }\n\n /**\n * @private\n */\n function find(array, byProperty, condition) {\n if (!array || array.length === 0) {\n return;\n }\n\n var i = array.length - 1,\n result = byProperty ? array[i][byProperty] : array[i];\n if (byProperty) {\n while (i--) {\n if (condition(array[i][byProperty], result)) {\n result = array[i][byProperty];\n }\n }\n }\n else {\n while (i--) {\n if (condition(array[i], result)) {\n result = array[i];\n }\n }\n }\n return result;\n }\n\n /**\n * @namespace fabric.util.array\n */\n fabric.util.array = {\n fill: fill,\n invoke: invoke,\n min: min,\n max: max\n };\n\n})();\n\n\n(function() {\n /**\n * Copies all enumerable properties of one js object to another\n * this does not and cannot compete with generic utils.\n * Does not clone or extend fabric.Object subclasses.\n * This is mostly for internal use and has extra handling for fabricJS objects\n * it skips the canvas and group properties in deep cloning.\n * @memberOf fabric.util.object\n * @param {Object} destination Where to copy to\n * @param {Object} source Where to copy from\n * @param {Boolean} [deep] Whether to extend nested objects\n * @return {Object}\n */\n\n function extend(destination, source, deep) {\n // JScript DontEnum bug is not taken care of\n // the deep clone is for internal use, is not meant to avoid\n // javascript traps or cloning html element or self referenced objects.\n if (deep) {\n if (!fabric.isLikelyNode && source instanceof Element) {\n // avoid cloning deep images, canvases,\n destination = source;\n }\n else if (source instanceof Array) {\n destination = [];\n for (var i = 0, len = source.length; i < len; i++) {\n destination[i] = extend({ }, source[i], deep);\n }\n }\n else if (source && typeof source === 'object') {\n for (var property in source) {\n if (property === 'canvas' || property === 'group') {\n // we do not want to clone this props at all.\n // we want to keep the keys in the copy\n destination[property] = null;\n }\n else if (source.hasOwnProperty(property)) {\n destination[property] = extend({ }, source[property], deep);\n }\n }\n }\n else {\n // this sounds odd for an extend but is ok for recursive use\n destination = source;\n }\n }\n else {\n for (var property in source) {\n destination[property] = source[property];\n }\n }\n return destination;\n }\n\n /**\n * Creates an empty object and copies all enumerable properties of another object to it\n * This method is mostly for internal use, and not intended for duplicating shapes in canvas. \n * @memberOf fabric.util.object\n * @param {Object} object Object to clone\n * @param {Boolean} [deep] Whether to clone nested objects\n * @return {Object}\n */\n\n //TODO: this function return an empty object if you try to clone null\n function clone(object, deep) {\n return extend({ }, object, deep);\n }\n\n /** @namespace fabric.util.object */\n fabric.util.object = {\n extend: extend,\n clone: clone\n };\n fabric.util.object.extend(fabric.util, fabric.Observable);\n})();\n\n\n(function() {\n\n /**\n * Camelizes a string\n * @memberOf fabric.util.string\n * @param {String} string String to camelize\n * @return {String} Camelized version of a string\n */\n function camelize(string) {\n return string.replace(/-+(.)?/g, function(match, character) {\n return character ? character.toUpperCase() : '';\n });\n }\n\n /**\n * Capitalizes a string\n * @memberOf fabric.util.string\n * @param {String} string String to capitalize\n * @param {Boolean} [firstLetterOnly] If true only first letter is capitalized\n * and other letters stay untouched, if false first letter is capitalized\n * and other letters are converted to lowercase.\n * @return {String} Capitalized version of a string\n */\n function capitalize(string, firstLetterOnly) {\n return string.charAt(0).toUpperCase() +\n (firstLetterOnly ? string.slice(1) : string.slice(1).toLowerCase());\n }\n\n /**\n * Escapes XML in a string\n * @memberOf fabric.util.string\n * @param {String} string String to escape\n * @return {String} Escaped version of a string\n */\n function escapeXml(string) {\n return string.replace(/&/g, '&')\n .replace(/\"/g, '"')\n .replace(/'/g, ''')\n .replace(//g, '>');\n }\n\n /**\n * Divide a string in the user perceived single units\n * @memberOf fabric.util.string\n * @param {String} textstring String to escape\n * @return {Array} array containing the graphemes\n */\n function graphemeSplit(textstring) {\n var i = 0, chr, graphemes = [];\n for (i = 0, chr; i < textstring.length; i++) {\n if ((chr = getWholeChar(textstring, i)) === false) {\n continue;\n }\n graphemes.push(chr);\n }\n return graphemes;\n }\n\n // taken from mdn in the charAt doc page.\n function getWholeChar(str, i) {\n var code = str.charCodeAt(i);\n\n if (isNaN(code)) {\n return ''; // Position not found\n }\n if (code < 0xD800 || code > 0xDFFF) {\n return str.charAt(i);\n }\n\n // High surrogate (could change last hex to 0xDB7F to treat high private\n // surrogates as single characters)\n if (0xD800 <= code && code <= 0xDBFF) {\n if (str.length <= (i + 1)) {\n throw 'High surrogate without following low surrogate';\n }\n var next = str.charCodeAt(i + 1);\n if (0xDC00 > next || next > 0xDFFF) {\n throw 'High surrogate without following low surrogate';\n }\n return str.charAt(i) + str.charAt(i + 1);\n }\n // Low surrogate (0xDC00 <= code && code <= 0xDFFF)\n if (i === 0) {\n throw 'Low surrogate without preceding high surrogate';\n }\n var prev = str.charCodeAt(i - 1);\n\n // (could change last hex to 0xDB7F to treat high private\n // surrogates as single characters)\n if (0xD800 > prev || prev > 0xDBFF) {\n throw 'Low surrogate without preceding high surrogate';\n }\n // We can pass over low surrogates now as the second component\n // in a pair which we have already processed\n return false;\n }\n\n\n /**\n * String utilities\n * @namespace fabric.util.string\n */\n fabric.util.string = {\n camelize: camelize,\n capitalize: capitalize,\n escapeXml: escapeXml,\n graphemeSplit: graphemeSplit\n };\n})();\n\n\n(function() {\n\n var slice = Array.prototype.slice, emptyFunction = function() { },\n\n IS_DONTENUM_BUGGY = (function() {\n for (var p in { toString: 1 }) {\n if (p === 'toString') {\n return false;\n }\n }\n return true;\n })(),\n\n /** @ignore */\n addMethods = function(klass, source, parent) {\n for (var property in source) {\n\n if (property in klass.prototype &&\n typeof klass.prototype[property] === 'function' &&\n (source[property] + '').indexOf('callSuper') > -1) {\n\n klass.prototype[property] = (function(property) {\n return function() {\n\n var superclass = this.constructor.superclass;\n this.constructor.superclass = parent;\n var returnValue = source[property].apply(this, arguments);\n this.constructor.superclass = superclass;\n\n if (property !== 'initialize') {\n return returnValue;\n }\n };\n })(property);\n }\n else {\n klass.prototype[property] = source[property];\n }\n\n if (IS_DONTENUM_BUGGY) {\n if (source.toString !== Object.prototype.toString) {\n klass.prototype.toString = source.toString;\n }\n if (source.valueOf !== Object.prototype.valueOf) {\n klass.prototype.valueOf = source.valueOf;\n }\n }\n }\n };\n\n function Subclass() { }\n\n function callSuper(methodName) {\n var parentMethod = null,\n _this = this;\n\n // climb prototype chain to find method not equal to callee's method\n while (_this.constructor.superclass) {\n var superClassMethod = _this.constructor.superclass.prototype[methodName];\n if (_this[methodName] !== superClassMethod) {\n parentMethod = superClassMethod;\n break;\n }\n // eslint-disable-next-line\n _this = _this.constructor.superclass.prototype;\n }\n\n if (!parentMethod) {\n return console.log('tried to callSuper ' + methodName + ', method not found in prototype chain', this);\n }\n\n return (arguments.length > 1)\n ? parentMethod.apply(this, slice.call(arguments, 1))\n : parentMethod.call(this);\n }\n\n /**\n * Helper for creation of \"classes\".\n * @memberOf fabric.util\n * @param {Function} [parent] optional \"Class\" to inherit from\n * @param {Object} [properties] Properties shared by all instances of this class\n * (be careful modifying objects defined here as this would affect all instances)\n */\n function createClass() {\n var parent = null,\n properties = slice.call(arguments, 0);\n\n if (typeof properties[0] === 'function') {\n parent = properties.shift();\n }\n function klass() {\n this.initialize.apply(this, arguments);\n }\n\n klass.superclass = parent;\n klass.subclasses = [];\n\n if (parent) {\n Subclass.prototype = parent.prototype;\n klass.prototype = new Subclass();\n parent.subclasses.push(klass);\n }\n for (var i = 0, length = properties.length; i < length; i++) {\n addMethods(klass, properties[i], parent);\n }\n if (!klass.prototype.initialize) {\n klass.prototype.initialize = emptyFunction;\n }\n klass.prototype.constructor = klass;\n klass.prototype.callSuper = callSuper;\n return klass;\n }\n\n fabric.util.createClass = createClass;\n})();\n\n\n(function () {\n // since ie11 can use addEventListener but they do not support options, i need to check\n var couldUseAttachEvent = !!fabric.document.createElement('div').attachEvent,\n touchEvents = ['touchstart', 'touchmove', 'touchend'];\n /**\n * Adds an event listener to an element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {String} eventName\n * @param {Function} handler\n */\n fabric.util.addListener = function(element, eventName, handler, options) {\n element && element.addEventListener(eventName, handler, couldUseAttachEvent ? false : options);\n };\n\n /**\n * Removes an event listener from an element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {String} eventName\n * @param {Function} handler\n */\n fabric.util.removeListener = function(element, eventName, handler, options) {\n element && element.removeEventListener(eventName, handler, couldUseAttachEvent ? false : options);\n };\n\n function getTouchInfo(event) {\n var touchProp = event.changedTouches;\n if (touchProp && touchProp[0]) {\n return touchProp[0];\n }\n return event;\n }\n\n fabric.util.getPointer = function(event) {\n var element = event.target,\n scroll = fabric.util.getScrollLeftTop(element),\n _evt = getTouchInfo(event);\n return {\n x: _evt.clientX + scroll.left,\n y: _evt.clientY + scroll.top\n };\n };\n\n fabric.util.isTouchEvent = function(event) {\n return touchEvents.indexOf(event.type) > -1 || event.pointerType === 'touch';\n };\n})();\n\n\n(function () {\n\n /**\n * Cross-browser wrapper for setting element's style\n * @memberOf fabric.util\n * @param {HTMLElement} element\n * @param {Object} styles\n * @return {HTMLElement} Element that was passed as a first argument\n */\n function setStyle(element, styles) {\n var elementStyle = element.style;\n if (!elementStyle) {\n return element;\n }\n if (typeof styles === 'string') {\n element.style.cssText += ';' + styles;\n return styles.indexOf('opacity') > -1\n ? setOpacity(element, styles.match(/opacity:\\s*(\\d?\\.?\\d*)/)[1])\n : element;\n }\n for (var property in styles) {\n if (property === 'opacity') {\n setOpacity(element, styles[property]);\n }\n else {\n var normalizedProperty = (property === 'float' || property === 'cssFloat')\n ? (typeof elementStyle.styleFloat === 'undefined' ? 'cssFloat' : 'styleFloat')\n : property;\n elementStyle.setProperty(normalizedProperty, styles[property]);\n }\n }\n return element;\n }\n\n var parseEl = fabric.document.createElement('div'),\n supportsOpacity = typeof parseEl.style.opacity === 'string',\n supportsFilters = typeof parseEl.style.filter === 'string',\n reOpacity = /alpha\\s*\\(\\s*opacity\\s*=\\s*([^\\)]+)\\)/,\n\n /** @ignore */\n setOpacity = function (element) { return element; };\n\n if (supportsOpacity) {\n /** @ignore */\n setOpacity = function(element, value) {\n element.style.opacity = value;\n return element;\n };\n }\n else if (supportsFilters) {\n /** @ignore */\n setOpacity = function(element, value) {\n var es = element.style;\n if (element.currentStyle && !element.currentStyle.hasLayout) {\n es.zoom = 1;\n }\n if (reOpacity.test(es.filter)) {\n value = value >= 0.9999 ? '' : ('alpha(opacity=' + (value * 100) + ')');\n es.filter = es.filter.replace(reOpacity, value);\n }\n else {\n es.filter += ' alpha(opacity=' + (value * 100) + ')';\n }\n return element;\n };\n }\n\n fabric.util.setStyle = setStyle;\n\n})();\n\n\n(function() {\n\n var _slice = Array.prototype.slice;\n\n /**\n * Takes id and returns an element with that id (if one exists in a document)\n * @memberOf fabric.util\n * @param {String|HTMLElement} id\n * @return {HTMLElement|null}\n */\n function getById(id) {\n return typeof id === 'string' ? fabric.document.getElementById(id) : id;\n }\n\n var sliceCanConvertNodelists,\n /**\n * Converts an array-like object (e.g. arguments or NodeList) to an array\n * @memberOf fabric.util\n * @param {Object} arrayLike\n * @return {Array}\n */\n toArray = function(arrayLike) {\n return _slice.call(arrayLike, 0);\n };\n\n try {\n sliceCanConvertNodelists = toArray(fabric.document.childNodes) instanceof Array;\n }\n catch (err) { }\n\n if (!sliceCanConvertNodelists) {\n toArray = function(arrayLike) {\n var arr = new Array(arrayLike.length), i = arrayLike.length;\n while (i--) {\n arr[i] = arrayLike[i];\n }\n return arr;\n };\n }\n\n /**\n * Creates specified element with specified attributes\n * @memberOf fabric.util\n * @param {String} tagName Type of an element to create\n * @param {Object} [attributes] Attributes to set on an element\n * @return {HTMLElement} Newly created element\n */\n function makeElement(tagName, attributes) {\n var el = fabric.document.createElement(tagName);\n for (var prop in attributes) {\n if (prop === 'class') {\n el.className = attributes[prop];\n }\n else if (prop === 'for') {\n el.htmlFor = attributes[prop];\n }\n else {\n el.setAttribute(prop, attributes[prop]);\n }\n }\n return el;\n }\n\n /**\n * Adds class to an element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to add class to\n * @param {String} className Class to add to an element\n */\n function addClass(element, className) {\n if (element && (' ' + element.className + ' ').indexOf(' ' + className + ' ') === -1) {\n element.className += (element.className ? ' ' : '') + className;\n }\n }\n\n /**\n * Wraps element with another element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to wrap\n * @param {HTMLElement|String} wrapper Element to wrap with\n * @param {Object} [attributes] Attributes to set on a wrapper\n * @return {HTMLElement} wrapper\n */\n function wrapElement(element, wrapper, attributes) {\n if (typeof wrapper === 'string') {\n wrapper = makeElement(wrapper, attributes);\n }\n if (element.parentNode) {\n element.parentNode.replaceChild(wrapper, element);\n }\n wrapper.appendChild(element);\n return wrapper;\n }\n\n /**\n * Returns element scroll offsets\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to operate on\n * @return {Object} Object with left/top values\n */\n function getScrollLeftTop(element) {\n\n var left = 0,\n top = 0,\n docElement = fabric.document.documentElement,\n body = fabric.document.body || {\n scrollLeft: 0, scrollTop: 0\n };\n\n // While loop checks (and then sets element to) .parentNode OR .host\n // to account for ShadowDOM. We still want to traverse up out of ShadowDOM,\n // but the .parentNode of a root ShadowDOM node will always be null, instead\n // it should be accessed through .host. See http://stackoverflow.com/a/24765528/4383938\n while (element && (element.parentNode || element.host)) {\n\n // Set element to element parent, or 'host' in case of ShadowDOM\n element = element.parentNode || element.host;\n\n if (element === fabric.document) {\n left = body.scrollLeft || docElement.scrollLeft || 0;\n top = body.scrollTop || docElement.scrollTop || 0;\n }\n else {\n left += element.scrollLeft || 0;\n top += element.scrollTop || 0;\n }\n\n if (element.nodeType === 1 && element.style.position === 'fixed') {\n break;\n }\n }\n\n return { left: left, top: top };\n }\n\n /**\n * Returns offset for a given element\n * @function\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to get offset for\n * @return {Object} Object with \"left\" and \"top\" properties\n */\n function getElementOffset(element) {\n var docElem,\n doc = element && element.ownerDocument,\n box = { left: 0, top: 0 },\n offset = { left: 0, top: 0 },\n scrollLeftTop,\n offsetAttributes = {\n borderLeftWidth: 'left',\n borderTopWidth: 'top',\n paddingLeft: 'left',\n paddingTop: 'top'\n };\n\n if (!doc) {\n return offset;\n }\n\n for (var attr in offsetAttributes) {\n offset[offsetAttributes[attr]] += parseInt(getElementStyle(element, attr), 10) || 0;\n }\n\n docElem = doc.documentElement;\n if ( typeof element.getBoundingClientRect !== 'undefined' ) {\n box = element.getBoundingClientRect();\n }\n\n scrollLeftTop = getScrollLeftTop(element);\n\n return {\n left: box.left + scrollLeftTop.left - (docElem.clientLeft || 0) + offset.left,\n top: box.top + scrollLeftTop.top - (docElem.clientTop || 0) + offset.top\n };\n }\n\n /**\n * Returns style attribute value of a given element\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to get style attribute for\n * @param {String} attr Style attribute to get for element\n * @return {String} Style attribute value of the given element.\n */\n var getElementStyle;\n if (fabric.document.defaultView && fabric.document.defaultView.getComputedStyle) {\n getElementStyle = function(element, attr) {\n var style = fabric.document.defaultView.getComputedStyle(element, null);\n return style ? style[attr] : undefined;\n };\n }\n else {\n getElementStyle = function(element, attr) {\n var value = element.style[attr];\n if (!value && element.currentStyle) {\n value = element.currentStyle[attr];\n }\n return value;\n };\n }\n\n (function () {\n var style = fabric.document.documentElement.style,\n selectProp = 'userSelect' in style\n ? 'userSelect'\n : 'MozUserSelect' in style\n ? 'MozUserSelect'\n : 'WebkitUserSelect' in style\n ? 'WebkitUserSelect'\n : 'KhtmlUserSelect' in style\n ? 'KhtmlUserSelect'\n : '';\n\n /**\n * Makes element unselectable\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to make unselectable\n * @return {HTMLElement} Element that was passed in\n */\n function makeElementUnselectable(element) {\n if (typeof element.onselectstart !== 'undefined') {\n element.onselectstart = fabric.util.falseFunction;\n }\n if (selectProp) {\n element.style[selectProp] = 'none';\n }\n else if (typeof element.unselectable === 'string') {\n element.unselectable = 'on';\n }\n return element;\n }\n\n /**\n * Makes element selectable\n * @memberOf fabric.util\n * @param {HTMLElement} element Element to make selectable\n * @return {HTMLElement} Element that was passed in\n */\n function makeElementSelectable(element) {\n if (typeof element.onselectstart !== 'undefined') {\n element.onselectstart = null;\n }\n if (selectProp) {\n element.style[selectProp] = '';\n }\n else if (typeof element.unselectable === 'string') {\n element.unselectable = '';\n }\n return element;\n }\n\n fabric.util.makeElementUnselectable = makeElementUnselectable;\n fabric.util.makeElementSelectable = makeElementSelectable;\n })();\n\n function getNodeCanvas(element) {\n var impl = fabric.jsdomImplForWrapper(element);\n return impl._canvas || impl._image;\n };\n\n function cleanUpJsdomNode(element) {\n if (!fabric.isLikelyNode) {\n return;\n }\n var impl = fabric.jsdomImplForWrapper(element);\n if (impl) {\n impl._image = null;\n impl._canvas = null;\n // unsure if necessary\n impl._currentSrc = null;\n impl._attributes = null;\n impl._classList = null;\n }\n }\n\n function setImageSmoothing(ctx, value) {\n ctx.imageSmoothingEnabled = ctx.imageSmoothingEnabled || ctx.webkitImageSmoothingEnabled\n || ctx.mozImageSmoothingEnabled || ctx.msImageSmoothingEnabled || ctx.oImageSmoothingEnabled;\n ctx.imageSmoothingEnabled = value;\n }\n\n /**\n * setImageSmoothing sets the context imageSmoothingEnabled property.\n * Used by canvas and by ImageObject.\n * @memberOf fabric.util\n * @since 4.0.0\n * @param {HTMLRenderingContext2D} ctx to set on\n * @param {Boolean} value true or false\n */\n fabric.util.setImageSmoothing = setImageSmoothing;\n fabric.util.getById = getById;\n fabric.util.toArray = toArray;\n fabric.util.addClass = addClass;\n fabric.util.makeElement = makeElement;\n fabric.util.wrapElement = wrapElement;\n fabric.util.getScrollLeftTop = getScrollLeftTop;\n fabric.util.getElementOffset = getElementOffset;\n fabric.util.getNodeCanvas = getNodeCanvas;\n fabric.util.cleanUpJsdomNode = cleanUpJsdomNode;\n\n})();\n\n\n(function() {\n\n function addParamToUrl(url, param) {\n return url + (/\\?/.test(url) ? '&' : '?') + param;\n }\n\n function emptyFn() { }\n\n /**\n * Cross-browser abstraction for sending XMLHttpRequest\n * @memberOf fabric.util\n * @param {String} url URL to send XMLHttpRequest to\n * @param {Object} [options] Options object\n * @param {String} [options.method=\"GET\"]\n * @param {String} [options.parameters] parameters to append to url in GET or in body\n * @param {String} [options.body] body to send with POST or PUT request\n * @param {Function} options.onComplete Callback to invoke when request is completed\n * @return {XMLHttpRequest} request\n */\n function request(url, options) {\n options || (options = { });\n\n var method = options.method ? options.method.toUpperCase() : 'GET',\n onComplete = options.onComplete || function() { },\n xhr = new fabric.window.XMLHttpRequest(),\n body = options.body || options.parameters;\n\n /** @ignore */\n xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) {\n onComplete(xhr);\n xhr.onreadystatechange = emptyFn;\n }\n };\n\n if (method === 'GET') {\n body = null;\n if (typeof options.parameters === 'string') {\n url = addParamToUrl(url, options.parameters);\n }\n }\n\n xhr.open(method, url, true);\n\n if (method === 'POST' || method === 'PUT') {\n xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');\n }\n\n xhr.send(body);\n return xhr;\n }\n\n fabric.util.request = request;\n})();\n\n\n/**\n * Wrapper around `console.log` (when available)\n * @param {*} [values] Values to log\n */\nfabric.log = console.log;\n\n/**\n * Wrapper around `console.warn` (when available)\n * @param {*} [values] Values to log as a warning\n */\nfabric.warn = console.warn;\n\n\n(function () {\n\n var extend = fabric.util.object.extend,\n clone = fabric.util.object.clone;\n\n /**\n * @typedef {Object} AnimationOptions\n * Animation of a value or list of values.\n * When using lists, think of something like this:\n * fabric.util.animate({\n * startValue: [1, 2, 3],\n * endValue: [2, 4, 6],\n * onChange: function([a, b, c]) {\n * canvas.zoomToPoint({x: b, y: c}, a)\n * canvas.renderAll()\n * }\n * });\n * @example\n * @property {Function} [onChange] Callback; invoked on every value change\n * @property {Function} [onComplete] Callback; invoked when value change is completed\n * @example\n * // Note: startValue, endValue, and byValue must match the type\n * var animationOptions = { startValue: 0, endValue: 1, byValue: 0.25 }\n * var animationOptions = { startValue: [0, 1], endValue: [1, 2], byValue: [0.25, 0.25] }\n * @property {number | number[]} [startValue=0] Starting value\n * @property {number | number[]} [endValue=100] Ending value\n * @property {number | number[]} [byValue=100] Value to modify the property by\n * @property {Function} [easing] Easing function\n * @property {Number} [duration=500] Duration of change (in ms)\n * @property {Function} [abort] Additional function with logic. If returns true, animation aborts.\n *\n * @typedef {() => void} CancelFunction\n *\n * @typedef {Object} AnimationCurrentState\n * @property {number | number[]} currentValue value in range [`startValue`, `endValue`]\n * @property {number} completionRate value in range [0, 1]\n * @property {number} durationRate value in range [0, 1]\n *\n * @typedef {(AnimationOptions & AnimationCurrentState & { cancel: CancelFunction }} AnimationContext\n */\n\n /**\n * Array holding all running animations\n * @memberof fabric\n * @type {AnimationContext[]}\n */\n var RUNNING_ANIMATIONS = [];\n fabric.util.object.extend(RUNNING_ANIMATIONS, {\n\n /**\n * cancel all running animations at the next requestAnimFrame\n * @returns {AnimationContext[]}\n */\n cancelAll: function () {\n var animations = this.splice(0);\n animations.forEach(function (animation) {\n animation.cancel();\n });\n return animations;\n },\n\n /**\n * cancel all running animations attached to canvas at the next requestAnimFrame\n * @param {fabric.Canvas} canvas\n * @returns {AnimationContext[]}\n */\n cancelByCanvas: function (canvas) {\n if (!canvas) {\n return [];\n }\n var cancelled = this.filter(function (animation) {\n return typeof animation.target === 'object' && animation.target.canvas === canvas;\n });\n cancelled.forEach(function (animation) {\n animation.cancel();\n });\n return cancelled;\n },\n\n /**\n * cancel all running animations for target at the next requestAnimFrame\n * @param {*} target\n * @returns {AnimationContext[]}\n */\n cancelByTarget: function (target) {\n var cancelled = this.findAnimationsByTarget(target);\n cancelled.forEach(function (animation) {\n animation.cancel();\n });\n return cancelled;\n },\n\n /**\n *\n * @param {CancelFunction} cancelFunc the function returned by animate\n * @returns {number}\n */\n findAnimationIndex: function (cancelFunc) {\n return this.indexOf(this.findAnimation(cancelFunc));\n },\n\n /**\n *\n * @param {CancelFunction} cancelFunc the function returned by animate\n * @returns {AnimationContext | undefined} animation's options object\n */\n findAnimation: function (cancelFunc) {\n return this.find(function (animation) {\n return animation.cancel === cancelFunc;\n });\n },\n\n /**\n *\n * @param {*} target the object that is assigned to the target property of the animation context\n * @returns {AnimationContext[]} array of animation options object associated with target\n */\n findAnimationsByTarget: function (target) {\n if (!target) {\n return [];\n }\n return this.filter(function (animation) {\n return animation.target === target;\n });\n }\n });\n\n function noop() {\n return false;\n }\n\n function defaultEasing(t, b, c, d) {\n return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n }\n\n /**\n * Changes value from one to another within certain period of time, invoking callbacks as value is being changed.\n * @memberOf fabric.util\n * @param {AnimationOptions} [options] Animation options\n * @example\n * // Note: startValue, endValue, and byValue must match the type\n * fabric.util.animate({ startValue: 0, endValue: 1, byValue: 0.25 })\n * fabric.util.animate({ startValue: [0, 1], endValue: [1, 2], byValue: [0.25, 0.25] })\n * @returns {CancelFunction} cancel function\n */\n function animate(options) {\n options || (options = {});\n var cancel = false,\n context,\n removeFromRegistry = function () {\n var index = fabric.runningAnimations.indexOf(context);\n return index > -1 && fabric.runningAnimations.splice(index, 1)[0];\n };\n\n context = extend(clone(options), {\n cancel: function () {\n cancel = true;\n return removeFromRegistry();\n },\n currentValue: 'startValue' in options ? options.startValue : 0,\n completionRate: 0,\n durationRate: 0\n });\n fabric.runningAnimations.push(context);\n\n requestAnimFrame(function(timestamp) {\n var start = timestamp || +new Date(),\n duration = options.duration || 500,\n finish = start + duration, time,\n onChange = options.onChange || noop,\n abort = options.abort || noop,\n onComplete = options.onComplete || noop,\n easing = options.easing || defaultEasing,\n isMany = 'startValue' in options ? options.startValue.length > 0 : false,\n startValue = 'startValue' in options ? options.startValue : 0,\n endValue = 'endValue' in options ? options.endValue : 100,\n byValue = options.byValue || (isMany ? startValue.map(function(value, i) {\n return endValue[i] - startValue[i];\n }) : endValue - startValue);\n\n options.onStart && options.onStart();\n\n (function tick(ticktime) {\n time = ticktime || +new Date();\n var currentTime = time > finish ? duration : (time - start),\n timePerc = currentTime / duration,\n current = isMany ? startValue.map(function(_value, i) {\n return easing(currentTime, startValue[i], byValue[i], duration);\n }) : easing(currentTime, startValue, byValue, duration),\n valuePerc = isMany ? Math.abs((current[0] - startValue[0]) / byValue[0])\n : Math.abs((current - startValue) / byValue);\n // update context\n context.currentValue = isMany ? current.slice() : current;\n context.completionRate = valuePerc;\n context.durationRate = timePerc;\n if (cancel) {\n return;\n }\n if (abort(current, valuePerc, timePerc)) {\n removeFromRegistry();\n return;\n }\n if (time > finish) {\n // update context\n context.currentValue = isMany ? endValue.slice() : endValue;\n context.completionRate = 1;\n context.durationRate = 1;\n // execute callbacks\n onChange(isMany ? endValue.slice() : endValue, 1, 1);\n onComplete(endValue, 1, 1);\n removeFromRegistry();\n return;\n }\n else {\n onChange(current, valuePerc, timePerc);\n requestAnimFrame(tick);\n }\n })(start);\n });\n\n return context.cancel;\n }\n\n var _requestAnimFrame = fabric.window.requestAnimationFrame ||\n fabric.window.webkitRequestAnimationFrame ||\n fabric.window.mozRequestAnimationFrame ||\n fabric.window.oRequestAnimationFrame ||\n fabric.window.msRequestAnimationFrame ||\n function(callback) {\n return fabric.window.setTimeout(callback, 1000 / 60);\n };\n\n var _cancelAnimFrame = fabric.window.cancelAnimationFrame || fabric.window.clearTimeout;\n\n /**\n * requestAnimationFrame polyfill based on http://paulirish.com/2011/requestanimationframe-for-smart-animating/\n * In order to get a precise start time, `requestAnimFrame` should be called as an entry into the method\n * @memberOf fabric.util\n * @param {Function} callback Callback to invoke\n * @param {DOMElement} element optional Element to associate with animation\n */\n function requestAnimFrame() {\n return _requestAnimFrame.apply(fabric.window, arguments);\n }\n\n function cancelAnimFrame() {\n return _cancelAnimFrame.apply(fabric.window, arguments);\n }\n\n fabric.util.animate = animate;\n fabric.util.requestAnimFrame = requestAnimFrame;\n fabric.util.cancelAnimFrame = cancelAnimFrame;\n fabric.runningAnimations = RUNNING_ANIMATIONS;\n})();\n\n\n(function() {\n // Calculate an in-between color. Returns a \"rgba()\" string.\n // Credit: Edwin Martin \n // http://www.bitstorm.org/jquery/color-animation/jquery.animate-colors.js\n function calculateColor(begin, end, pos) {\n var color = 'rgba('\n + parseInt((begin[0] + pos * (end[0] - begin[0])), 10) + ','\n + parseInt((begin[1] + pos * (end[1] - begin[1])), 10) + ','\n + parseInt((begin[2] + pos * (end[2] - begin[2])), 10);\n\n color += ',' + (begin && end ? parseFloat(begin[3] + pos * (end[3] - begin[3])) : 1);\n color += ')';\n return color;\n }\n\n /**\n * Changes the color from one to another within certain period of time, invoking callbacks as value is being changed.\n * @memberOf fabric.util\n * @param {String} fromColor The starting color in hex or rgb(a) format.\n * @param {String} toColor The starting color in hex or rgb(a) format.\n * @param {Number} [duration] Duration of change (in ms).\n * @param {Object} [options] Animation options\n * @param {Function} [options.onChange] Callback; invoked on every value change\n * @param {Function} [options.onComplete] Callback; invoked when value change is completed\n * @param {Function} [options.colorEasing] Easing function. Note that this function only take two arguments (currentTime, duration). Thus the regular animation easing functions cannot be used.\n * @param {Function} [options.abort] Additional function with logic. If returns true, onComplete is called.\n * @returns {Function} abort function\n */\n function animateColor(fromColor, toColor, duration, options) {\n var startColor = new fabric.Color(fromColor).getSource(),\n endColor = new fabric.Color(toColor).getSource(),\n originalOnComplete = options.onComplete,\n originalOnChange = options.onChange;\n options = options || {};\n\n return fabric.util.animate(fabric.util.object.extend(options, {\n duration: duration || 500,\n startValue: startColor,\n endValue: endColor,\n byValue: endColor,\n easing: function (currentTime, startValue, byValue, duration) {\n var posValue = options.colorEasing\n ? options.colorEasing(currentTime, duration)\n : 1 - Math.cos(currentTime / duration * (Math.PI / 2));\n return calculateColor(startValue, byValue, posValue);\n },\n // has to take in account for color restoring;\n onComplete: function(current, valuePerc, timePerc) {\n if (originalOnComplete) {\n return originalOnComplete(\n calculateColor(endColor, endColor, 0),\n valuePerc,\n timePerc\n );\n }\n },\n onChange: function(current, valuePerc, timePerc) {\n if (originalOnChange) {\n if (Array.isArray(current)) {\n return originalOnChange(\n calculateColor(current, current, 0),\n valuePerc,\n timePerc\n );\n }\n originalOnChange(current, valuePerc, timePerc);\n }\n }\n }));\n }\n\n fabric.util.animateColor = animateColor;\n\n})();\n\n\n(function() {\n\n function normalize(a, c, p, s) {\n if (a < Math.abs(c)) {\n a = c;\n s = p / 4;\n }\n else {\n //handle the 0/0 case:\n if (c === 0 && a === 0) {\n s = p / (2 * Math.PI) * Math.asin(1);\n }\n else {\n s = p / (2 * Math.PI) * Math.asin(c / a);\n }\n }\n return { a: a, c: c, p: p, s: s };\n }\n\n function elastic(opts, t, d) {\n return opts.a *\n Math.pow(2, 10 * (t -= 1)) *\n Math.sin( (t * d - opts.s) * (2 * Math.PI) / opts.p );\n }\n\n /**\n * Cubic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutCubic(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t + 1) + b;\n }\n\n /**\n * Cubic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutCubic(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t + b;\n }\n return c / 2 * ((t -= 2) * t * t + 2) + b;\n }\n\n /**\n * Quartic easing in\n * @memberOf fabric.util.ease\n */\n function easeInQuart(t, b, c, d) {\n return c * (t /= d) * t * t * t + b;\n }\n\n /**\n * Quartic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutQuart(t, b, c, d) {\n return -c * ((t = t / d - 1) * t * t * t - 1) + b;\n }\n\n /**\n * Quartic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutQuart(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t * t + b;\n }\n return -c / 2 * ((t -= 2) * t * t * t - 2) + b;\n }\n\n /**\n * Quintic easing in\n * @memberOf fabric.util.ease\n */\n function easeInQuint(t, b, c, d) {\n return c * (t /= d) * t * t * t * t + b;\n }\n\n /**\n * Quintic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutQuint(t, b, c, d) {\n return c * ((t = t / d - 1) * t * t * t * t + 1) + b;\n }\n\n /**\n * Quintic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutQuint(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t * t * t + b;\n }\n return c / 2 * ((t -= 2) * t * t * t * t + 2) + b;\n }\n\n /**\n * Sinusoidal easing in\n * @memberOf fabric.util.ease\n */\n function easeInSine(t, b, c, d) {\n return -c * Math.cos(t / d * (Math.PI / 2)) + c + b;\n }\n\n /**\n * Sinusoidal easing out\n * @memberOf fabric.util.ease\n */\n function easeOutSine(t, b, c, d) {\n return c * Math.sin(t / d * (Math.PI / 2)) + b;\n }\n\n /**\n * Sinusoidal easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutSine(t, b, c, d) {\n return -c / 2 * (Math.cos(Math.PI * t / d) - 1) + b;\n }\n\n /**\n * Exponential easing in\n * @memberOf fabric.util.ease\n */\n function easeInExpo(t, b, c, d) {\n return (t === 0) ? b : c * Math.pow(2, 10 * (t / d - 1)) + b;\n }\n\n /**\n * Exponential easing out\n * @memberOf fabric.util.ease\n */\n function easeOutExpo(t, b, c, d) {\n return (t === d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n }\n\n /**\n * Exponential easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutExpo(t, b, c, d) {\n if (t === 0) {\n return b;\n }\n if (t === d) {\n return b + c;\n }\n t /= d / 2;\n if (t < 1) {\n return c / 2 * Math.pow(2, 10 * (t - 1)) + b;\n }\n return c / 2 * (-Math.pow(2, -10 * --t) + 2) + b;\n }\n\n /**\n * Circular easing in\n * @memberOf fabric.util.ease\n */\n function easeInCirc(t, b, c, d) {\n return -c * (Math.sqrt(1 - (t /= d) * t) - 1) + b;\n }\n\n /**\n * Circular easing out\n * @memberOf fabric.util.ease\n */\n function easeOutCirc(t, b, c, d) {\n return c * Math.sqrt(1 - (t = t / d - 1) * t) + b;\n }\n\n /**\n * Circular easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutCirc(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return -c / 2 * (Math.sqrt(1 - t * t) - 1) + b;\n }\n return c / 2 * (Math.sqrt(1 - (t -= 2) * t) + 1) + b;\n }\n\n /**\n * Elastic easing in\n * @memberOf fabric.util.ease\n */\n function easeInElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d;\n if (t === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n var opts = normalize(a, c, p, s);\n return -elastic(opts, t, d) + b;\n }\n\n /**\n * Elastic easing out\n * @memberOf fabric.util.ease\n */\n function easeOutElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d;\n if (t === 1) {\n return b + c;\n }\n if (!p) {\n p = d * 0.3;\n }\n var opts = normalize(a, c, p, s);\n return opts.a * Math.pow(2, -10 * t) * Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) + opts.c + b;\n }\n\n /**\n * Elastic easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutElastic(t, b, c, d) {\n var s = 1.70158, p = 0, a = c;\n if (t === 0) {\n return b;\n }\n t /= d / 2;\n if (t === 2) {\n return b + c;\n }\n if (!p) {\n p = d * (0.3 * 1.5);\n }\n var opts = normalize(a, c, p, s);\n if (t < 1) {\n return -0.5 * elastic(opts, t, d) + b;\n }\n return opts.a * Math.pow(2, -10 * (t -= 1)) *\n Math.sin((t * d - opts.s) * (2 * Math.PI) / opts.p ) * 0.5 + opts.c + b;\n }\n\n /**\n * Backwards easing in\n * @memberOf fabric.util.ease\n */\n function easeInBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n return c * (t /= d) * t * ((s + 1) * t - s) + b;\n }\n\n /**\n * Backwards easing out\n * @memberOf fabric.util.ease\n */\n function easeOutBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n return c * ((t = t / d - 1) * t * ((s + 1) * t + s) + 1) + b;\n }\n\n /**\n * Backwards easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutBack(t, b, c, d, s) {\n if (s === undefined) {\n s = 1.70158;\n }\n t /= d / 2;\n if (t < 1) {\n return c / 2 * (t * t * (((s *= (1.525)) + 1) * t - s)) + b;\n }\n return c / 2 * ((t -= 2) * t * (((s *= (1.525)) + 1) * t + s) + 2) + b;\n }\n\n /**\n * Bouncing easing in\n * @memberOf fabric.util.ease\n */\n function easeInBounce(t, b, c, d) {\n return c - easeOutBounce (d - t, 0, c, d) + b;\n }\n\n /**\n * Bouncing easing out\n * @memberOf fabric.util.ease\n */\n function easeOutBounce(t, b, c, d) {\n if ((t /= d) < (1 / 2.75)) {\n return c * (7.5625 * t * t) + b;\n }\n else if (t < (2 / 2.75)) {\n return c * (7.5625 * (t -= (1.5 / 2.75)) * t + 0.75) + b;\n }\n else if (t < (2.5 / 2.75)) {\n return c * (7.5625 * (t -= (2.25 / 2.75)) * t + 0.9375) + b;\n }\n else {\n return c * (7.5625 * (t -= (2.625 / 2.75)) * t + 0.984375) + b;\n }\n }\n\n /**\n * Bouncing easing in and out\n * @memberOf fabric.util.ease\n */\n function easeInOutBounce(t, b, c, d) {\n if (t < d / 2) {\n return easeInBounce (t * 2, 0, c, d) * 0.5 + b;\n }\n return easeOutBounce(t * 2 - d, 0, c, d) * 0.5 + c * 0.5 + b;\n }\n\n /**\n * Easing functions\n * See Easing Equations by Robert Penner\n * @namespace fabric.util.ease\n */\n fabric.util.ease = {\n\n /**\n * Quadratic easing in\n * @memberOf fabric.util.ease\n */\n easeInQuad: function(t, b, c, d) {\n return c * (t /= d) * t + b;\n },\n\n /**\n * Quadratic easing out\n * @memberOf fabric.util.ease\n */\n easeOutQuad: function(t, b, c, d) {\n return -c * (t /= d) * (t - 2) + b;\n },\n\n /**\n * Quadratic easing in and out\n * @memberOf fabric.util.ease\n */\n easeInOutQuad: function(t, b, c, d) {\n t /= (d / 2);\n if (t < 1) {\n return c / 2 * t * t + b;\n }\n return -c / 2 * ((--t) * (t - 2) - 1) + b;\n },\n\n /**\n * Cubic easing in\n * @memberOf fabric.util.ease\n */\n easeInCubic: function(t, b, c, d) {\n return c * (t /= d) * t * t + b;\n },\n\n easeOutCubic: easeOutCubic,\n easeInOutCubic: easeInOutCubic,\n easeInQuart: easeInQuart,\n easeOutQuart: easeOutQuart,\n easeInOutQuart: easeInOutQuart,\n easeInQuint: easeInQuint,\n easeOutQuint: easeOutQuint,\n easeInOutQuint: easeInOutQuint,\n easeInSine: easeInSine,\n easeOutSine: easeOutSine,\n easeInOutSine: easeInOutSine,\n easeInExpo: easeInExpo,\n easeOutExpo: easeOutExpo,\n easeInOutExpo: easeInOutExpo,\n easeInCirc: easeInCirc,\n easeOutCirc: easeOutCirc,\n easeInOutCirc: easeInOutCirc,\n easeInElastic: easeInElastic,\n easeOutElastic: easeOutElastic,\n easeInOutElastic: easeInOutElastic,\n easeInBack: easeInBack,\n easeOutBack: easeOutBack,\n easeInOutBack: easeInOutBack,\n easeInBounce: easeInBounce,\n easeOutBounce: easeOutBounce,\n easeInOutBounce: easeInOutBounce\n };\n\n})();\n\n\n(function(global) {\n\n 'use strict';\n\n /**\n * @name fabric\n * @namespace\n */\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n clone = fabric.util.object.clone,\n toFixed = fabric.util.toFixed,\n parseUnit = fabric.util.parseUnit,\n multiplyTransformMatrices = fabric.util.multiplyTransformMatrices,\n\n svgValidTagNames = ['path', 'circle', 'polygon', 'polyline', 'ellipse', 'rect', 'line',\n 'image', 'text'],\n svgViewBoxElements = ['symbol', 'image', 'marker', 'pattern', 'view', 'svg'],\n svgInvalidAncestors = ['pattern', 'defs', 'symbol', 'metadata', 'clipPath', 'mask', 'desc'],\n svgValidParents = ['symbol', 'g', 'a', 'svg', 'clipPath', 'defs'],\n\n attributesMap = {\n cx: 'left',\n x: 'left',\n r: 'radius',\n cy: 'top',\n y: 'top',\n display: 'visible',\n visibility: 'visible',\n transform: 'transformMatrix',\n 'fill-opacity': 'fillOpacity',\n 'fill-rule': 'fillRule',\n 'font-family': 'fontFamily',\n 'font-size': 'fontSize',\n 'font-style': 'fontStyle',\n 'font-weight': 'fontWeight',\n 'letter-spacing': 'charSpacing',\n 'paint-order': 'paintFirst',\n 'stroke-dasharray': 'strokeDashArray',\n 'stroke-dashoffset': 'strokeDashOffset',\n 'stroke-linecap': 'strokeLineCap',\n 'stroke-linejoin': 'strokeLineJoin',\n 'stroke-miterlimit': 'strokeMiterLimit',\n 'stroke-opacity': 'strokeOpacity',\n 'stroke-width': 'strokeWidth',\n 'text-decoration': 'textDecoration',\n 'text-anchor': 'textAnchor',\n opacity: 'opacity',\n 'clip-path': 'clipPath',\n 'clip-rule': 'clipRule',\n 'vector-effect': 'strokeUniform',\n 'image-rendering': 'imageSmoothing',\n },\n\n colorAttributes = {\n stroke: 'strokeOpacity',\n fill: 'fillOpacity'\n },\n\n fSize = 'font-size', cPath = 'clip-path';\n\n fabric.svgValidTagNamesRegEx = getSvgRegex(svgValidTagNames);\n fabric.svgViewBoxElementsRegEx = getSvgRegex(svgViewBoxElements);\n fabric.svgInvalidAncestorsRegEx = getSvgRegex(svgInvalidAncestors);\n fabric.svgValidParentsRegEx = getSvgRegex(svgValidParents);\n\n fabric.cssRules = { };\n fabric.gradientDefs = { };\n fabric.clipPaths = { };\n\n function normalizeAttr(attr) {\n // transform attribute names\n if (attr in attributesMap) {\n return attributesMap[attr];\n }\n return attr;\n }\n\n function normalizeValue(attr, value, parentAttributes, fontSize) {\n var isArray = Array.isArray(value), parsed;\n\n if ((attr === 'fill' || attr === 'stroke') && value === 'none') {\n value = '';\n }\n else if (attr === 'strokeUniform') {\n return (value === 'non-scaling-stroke');\n }\n else if (attr === 'strokeDashArray') {\n if (value === 'none') {\n value = null;\n }\n else {\n value = value.replace(/,/g, ' ').split(/\\s+/).map(parseFloat);\n }\n }\n else if (attr === 'transformMatrix') {\n if (parentAttributes && parentAttributes.transformMatrix) {\n value = multiplyTransformMatrices(\n parentAttributes.transformMatrix, fabric.parseTransformAttribute(value));\n }\n else {\n value = fabric.parseTransformAttribute(value);\n }\n }\n else if (attr === 'visible') {\n value = value !== 'none' && value !== 'hidden';\n // display=none on parent element always takes precedence over child element\n if (parentAttributes && parentAttributes.visible === false) {\n value = false;\n }\n }\n else if (attr === 'opacity') {\n value = parseFloat(value);\n if (parentAttributes && typeof parentAttributes.opacity !== 'undefined') {\n value *= parentAttributes.opacity;\n }\n }\n else if (attr === 'textAnchor' /* text-anchor */) {\n value = value === 'start' ? 'left' : value === 'end' ? 'right' : 'center';\n }\n else if (attr === 'charSpacing') {\n // parseUnit returns px and we convert it to em\n parsed = parseUnit(value, fontSize) / fontSize * 1000;\n }\n else if (attr === 'paintFirst') {\n var fillIndex = value.indexOf('fill');\n var strokeIndex = value.indexOf('stroke');\n var value = 'fill';\n if (fillIndex > -1 && strokeIndex > -1 && strokeIndex < fillIndex) {\n value = 'stroke';\n }\n else if (fillIndex === -1 && strokeIndex > -1) {\n value = 'stroke';\n }\n }\n else if (attr === 'href' || attr === 'xlink:href' || attr === 'font') {\n return value;\n }\n else if (attr === 'imageSmoothing') {\n return (value === 'optimizeQuality');\n }\n else {\n parsed = isArray ? value.map(parseUnit) : parseUnit(value, fontSize);\n }\n\n return (!isArray && isNaN(parsed) ? value : parsed);\n }\n\n /**\n * @private\n */\n function getSvgRegex(arr) {\n return new RegExp('^(' + arr.join('|') + ')\\\\b', 'i');\n }\n\n /**\n * @private\n * @param {Object} attributes Array of attributes to parse\n */\n function _setStrokeFillOpacity(attributes) {\n for (var attr in colorAttributes) {\n\n if (typeof attributes[colorAttributes[attr]] === 'undefined' || attributes[attr] === '') {\n continue;\n }\n\n if (typeof attributes[attr] === 'undefined') {\n if (!fabric.Object.prototype[attr]) {\n continue;\n }\n attributes[attr] = fabric.Object.prototype[attr];\n }\n\n if (attributes[attr].indexOf('url(') === 0) {\n continue;\n }\n\n var color = new fabric.Color(attributes[attr]);\n attributes[attr] = color.setAlpha(toFixed(color.getAlpha() * attributes[colorAttributes[attr]], 2)).toRgba();\n }\n return attributes;\n }\n\n /**\n * @private\n */\n function _getMultipleNodes(doc, nodeNames) {\n var nodeName, nodeArray = [], nodeList, i, len;\n for (i = 0, len = nodeNames.length; i < len; i++) {\n nodeName = nodeNames[i];\n nodeList = doc.getElementsByTagName(nodeName);\n nodeArray = nodeArray.concat(Array.prototype.slice.call(nodeList));\n }\n return nodeArray;\n }\n\n /**\n * Parses \"transform\" attribute, returning an array of values\n * @static\n * @function\n * @memberOf fabric\n * @param {String} attributeValue String containing attribute value\n * @return {Array} Array of 6 elements representing transformation matrix\n */\n fabric.parseTransformAttribute = (function() {\n function rotateMatrix(matrix, args) {\n var cos = fabric.util.cos(args[0]), sin = fabric.util.sin(args[0]),\n x = 0, y = 0;\n if (args.length === 3) {\n x = args[1];\n y = args[2];\n }\n\n matrix[0] = cos;\n matrix[1] = sin;\n matrix[2] = -sin;\n matrix[3] = cos;\n matrix[4] = x - (cos * x - sin * y);\n matrix[5] = y - (sin * x + cos * y);\n }\n\n function scaleMatrix(matrix, args) {\n var multiplierX = args[0],\n multiplierY = (args.length === 2) ? args[1] : args[0];\n\n matrix[0] = multiplierX;\n matrix[3] = multiplierY;\n }\n\n function skewMatrix(matrix, args, pos) {\n matrix[pos] = Math.tan(fabric.util.degreesToRadians(args[0]));\n }\n\n function translateMatrix(matrix, args) {\n matrix[4] = args[0];\n if (args.length === 2) {\n matrix[5] = args[1];\n }\n }\n\n // identity matrix\n var iMatrix = fabric.iMatrix,\n\n // == begin transform regexp\n number = fabric.reNum,\n\n commaWsp = fabric.commaWsp,\n\n skewX = '(?:(skewX)\\\\s*\\\\(\\\\s*(' + number + ')\\\\s*\\\\))',\n\n skewY = '(?:(skewY)\\\\s*\\\\(\\\\s*(' + number + ')\\\\s*\\\\))',\n\n rotate = '(?:(rotate)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + ')' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n scale = '(?:(scale)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n translate = '(?:(translate)\\\\s*\\\\(\\\\s*(' + number + ')(?:' +\n commaWsp + '(' + number + '))?\\\\s*\\\\))',\n\n matrix = '(?:(matrix)\\\\s*\\\\(\\\\s*' +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' + commaWsp +\n '(' + number + ')' +\n '\\\\s*\\\\))',\n\n transform = '(?:' +\n matrix + '|' +\n translate + '|' +\n scale + '|' +\n rotate + '|' +\n skewX + '|' +\n skewY +\n ')',\n\n transforms = '(?:' + transform + '(?:' + commaWsp + '*' + transform + ')*' + ')',\n\n transformList = '^\\\\s*(?:' + transforms + '?)\\\\s*$',\n\n // http://www.w3.org/TR/SVG/coords.html#TransformAttribute\n reTransformList = new RegExp(transformList),\n // == end transform regexp\n\n reTransform = new RegExp(transform, 'g');\n\n return function(attributeValue) {\n\n // start with identity matrix\n var matrix = iMatrix.concat(),\n matrices = [];\n\n // return if no argument was given or\n // an argument does not match transform attribute regexp\n if (!attributeValue || (attributeValue && !reTransformList.test(attributeValue))) {\n return matrix;\n }\n\n attributeValue.replace(reTransform, function(match) {\n\n var m = new RegExp(transform).exec(match).filter(function (match) {\n // match !== '' && match != null\n return (!!match);\n }),\n operation = m[1],\n args = m.slice(2).map(parseFloat);\n\n switch (operation) {\n case 'translate':\n translateMatrix(matrix, args);\n break;\n case 'rotate':\n args[0] = fabric.util.degreesToRadians(args[0]);\n rotateMatrix(matrix, args);\n break;\n case 'scale':\n scaleMatrix(matrix, args);\n break;\n case 'skewX':\n skewMatrix(matrix, args, 2);\n break;\n case 'skewY':\n skewMatrix(matrix, args, 1);\n break;\n case 'matrix':\n matrix = args;\n break;\n }\n\n // snapshot current matrix into matrices array\n matrices.push(matrix.concat());\n // reset\n matrix = iMatrix.concat();\n });\n\n var combinedMatrix = matrices[0];\n while (matrices.length > 1) {\n matrices.shift();\n combinedMatrix = fabric.util.multiplyTransformMatrices(combinedMatrix, matrices[0]);\n }\n return combinedMatrix;\n };\n })();\n\n /**\n * @private\n */\n function parseStyleString(style, oStyle) {\n var attr, value;\n style.replace(/;\\s*$/, '').split(';').forEach(function (chunk) {\n var pair = chunk.split(':');\n\n attr = pair[0].trim().toLowerCase();\n value = pair[1].trim();\n\n oStyle[attr] = value;\n });\n }\n\n /**\n * @private\n */\n function parseStyleObject(style, oStyle) {\n var attr, value;\n for (var prop in style) {\n if (typeof style[prop] === 'undefined') {\n continue;\n }\n\n attr = prop.toLowerCase();\n value = style[prop];\n\n oStyle[attr] = value;\n }\n }\n\n /**\n * @private\n */\n function getGlobalStylesForElement(element, svgUid) {\n var styles = { };\n for (var rule in fabric.cssRules[svgUid]) {\n if (elementMatchesRule(element, rule.split(' '))) {\n for (var property in fabric.cssRules[svgUid][rule]) {\n styles[property] = fabric.cssRules[svgUid][rule][property];\n }\n }\n }\n return styles;\n }\n\n /**\n * @private\n */\n function elementMatchesRule(element, selectors) {\n var firstMatching, parentMatching = true;\n //start from rightmost selector.\n firstMatching = selectorMatches(element, selectors.pop());\n if (firstMatching && selectors.length) {\n parentMatching = doesSomeParentMatch(element, selectors);\n }\n return firstMatching && parentMatching && (selectors.length === 0);\n }\n\n function doesSomeParentMatch(element, selectors) {\n var selector, parentMatching = true;\n while (element.parentNode && element.parentNode.nodeType === 1 && selectors.length) {\n if (parentMatching) {\n selector = selectors.pop();\n }\n element = element.parentNode;\n parentMatching = selectorMatches(element, selector);\n }\n return selectors.length === 0;\n }\n\n /**\n * @private\n */\n function selectorMatches(element, selector) {\n var nodeName = element.nodeName,\n classNames = element.getAttribute('class'),\n id = element.getAttribute('id'), matcher, i;\n // i check if a selector matches slicing away part from it.\n // if i get empty string i should match\n matcher = new RegExp('^' + nodeName, 'i');\n selector = selector.replace(matcher, '');\n if (id && selector.length) {\n matcher = new RegExp('#' + id + '(?![a-zA-Z\\\\-]+)', 'i');\n selector = selector.replace(matcher, '');\n }\n if (classNames && selector.length) {\n classNames = classNames.split(' ');\n for (i = classNames.length; i--;) {\n matcher = new RegExp('\\\\.' + classNames[i] + '(?![a-zA-Z\\\\-]+)', 'i');\n selector = selector.replace(matcher, '');\n }\n }\n return selector.length === 0;\n }\n\n /**\n * @private\n * to support IE8 missing getElementById on SVGdocument and on node xmlDOM\n */\n function elementById(doc, id) {\n var el;\n doc.getElementById && (el = doc.getElementById(id));\n if (el) {\n return el;\n }\n var node, i, len, nodelist = doc.getElementsByTagName('*');\n for (i = 0, len = nodelist.length; i < len; i++) {\n node = nodelist[i];\n if (id === node.getAttribute('id')) {\n return node;\n }\n }\n }\n\n /**\n * @private\n */\n function parseUseDirectives(doc) {\n var nodelist = _getMultipleNodes(doc, ['use', 'svg:use']), i = 0;\n while (nodelist.length && i < nodelist.length) {\n var el = nodelist[i],\n xlinkAttribute = el.getAttribute('xlink:href') || el.getAttribute('href');\n\n if (xlinkAttribute === null) {\n return;\n }\n\n var xlink = xlinkAttribute.slice(1),\n x = el.getAttribute('x') || 0,\n y = el.getAttribute('y') || 0,\n el2 = elementById(doc, xlink).cloneNode(true),\n currentTrans = (el2.getAttribute('transform') || '') + ' translate(' + x + ', ' + y + ')',\n parentNode,\n oldLength = nodelist.length, attr,\n j,\n attrs,\n len,\n namespace = fabric.svgNS;\n\n applyViewboxTransform(el2);\n if (/^svg$/i.test(el2.nodeName)) {\n var el3 = el2.ownerDocument.createElementNS(namespace, 'g');\n for (j = 0, attrs = el2.attributes, len = attrs.length; j < len; j++) {\n attr = attrs.item(j);\n el3.setAttributeNS(namespace, attr.nodeName, attr.nodeValue);\n }\n // el2.firstChild != null\n while (el2.firstChild) {\n el3.appendChild(el2.firstChild);\n }\n el2 = el3;\n }\n\n for (j = 0, attrs = el.attributes, len = attrs.length; j < len; j++) {\n attr = attrs.item(j);\n if (attr.nodeName === 'x' || attr.nodeName === 'y' ||\n attr.nodeName === 'xlink:href' || attr.nodeName === 'href') {\n continue;\n }\n\n if (attr.nodeName === 'transform') {\n currentTrans = attr.nodeValue + ' ' + currentTrans;\n }\n else {\n el2.setAttribute(attr.nodeName, attr.nodeValue);\n }\n }\n\n el2.setAttribute('transform', currentTrans);\n el2.setAttribute('instantiated_by_use', '1');\n el2.removeAttribute('id');\n parentNode = el.parentNode;\n parentNode.replaceChild(el2, el);\n // some browsers do not shorten nodelist after replaceChild (IE8)\n if (nodelist.length === oldLength) {\n i++;\n }\n }\n }\n\n // http://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute\n // matches, e.g.: +14.56e-12, etc.\n var reViewBoxAttrValue = new RegExp(\n '^' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*,?' +\n '\\\\s*(' + fabric.reNum + '+)\\\\s*' +\n '$'\n );\n\n /**\n * Add a element that envelop all child elements and makes the viewbox transformMatrix descend on all elements\n */\n function applyViewboxTransform(element) {\n if (!fabric.svgViewBoxElementsRegEx.test(element.nodeName)) {\n return {};\n }\n var viewBoxAttr = element.getAttribute('viewBox'),\n scaleX = 1,\n scaleY = 1,\n minX = 0,\n minY = 0,\n viewBoxWidth, viewBoxHeight, matrix, el,\n widthAttr = element.getAttribute('width'),\n heightAttr = element.getAttribute('height'),\n x = element.getAttribute('x') || 0,\n y = element.getAttribute('y') || 0,\n preserveAspectRatio = element.getAttribute('preserveAspectRatio') || '',\n missingViewBox = (!viewBoxAttr || !(viewBoxAttr = viewBoxAttr.match(reViewBoxAttrValue))),\n missingDimAttr = (!widthAttr || !heightAttr || widthAttr === '100%' || heightAttr === '100%'),\n toBeParsed = missingViewBox && missingDimAttr,\n parsedDim = { }, translateMatrix = '', widthDiff = 0, heightDiff = 0;\n\n parsedDim.width = 0;\n parsedDim.height = 0;\n parsedDim.toBeParsed = toBeParsed;\n\n if (missingViewBox) {\n if (((x || y) && element.parentNode && element.parentNode.nodeName !== '#document')) {\n translateMatrix = ' translate(' + parseUnit(x) + ' ' + parseUnit(y) + ') ';\n matrix = (element.getAttribute('transform') || '') + translateMatrix;\n element.setAttribute('transform', matrix);\n element.removeAttribute('x');\n element.removeAttribute('y');\n }\n }\n\n if (toBeParsed) {\n return parsedDim;\n }\n\n if (missingViewBox) {\n parsedDim.width = parseUnit(widthAttr);\n parsedDim.height = parseUnit(heightAttr);\n // set a transform for elements that have x y and are inner(only) SVGs\n return parsedDim;\n }\n minX = -parseFloat(viewBoxAttr[1]);\n minY = -parseFloat(viewBoxAttr[2]);\n viewBoxWidth = parseFloat(viewBoxAttr[3]);\n viewBoxHeight = parseFloat(viewBoxAttr[4]);\n parsedDim.minX = minX;\n parsedDim.minY = minY;\n parsedDim.viewBoxWidth = viewBoxWidth;\n parsedDim.viewBoxHeight = viewBoxHeight;\n if (!missingDimAttr) {\n parsedDim.width = parseUnit(widthAttr);\n parsedDim.height = parseUnit(heightAttr);\n scaleX = parsedDim.width / viewBoxWidth;\n scaleY = parsedDim.height / viewBoxHeight;\n }\n else {\n parsedDim.width = viewBoxWidth;\n parsedDim.height = viewBoxHeight;\n }\n\n // default is to preserve aspect ratio\n preserveAspectRatio = fabric.util.parsePreserveAspectRatioAttribute(preserveAspectRatio);\n if (preserveAspectRatio.alignX !== 'none') {\n //translate all container for the effect of Mid, Min, Max\n if (preserveAspectRatio.meetOrSlice === 'meet') {\n scaleY = scaleX = (scaleX > scaleY ? scaleY : scaleX);\n // calculate additional translation to move the viewbox\n }\n if (preserveAspectRatio.meetOrSlice === 'slice') {\n scaleY = scaleX = (scaleX > scaleY ? scaleX : scaleY);\n // calculate additional translation to move the viewbox\n }\n widthDiff = parsedDim.width - viewBoxWidth * scaleX;\n heightDiff = parsedDim.height - viewBoxHeight * scaleX;\n if (preserveAspectRatio.alignX === 'Mid') {\n widthDiff /= 2;\n }\n if (preserveAspectRatio.alignY === 'Mid') {\n heightDiff /= 2;\n }\n if (preserveAspectRatio.alignX === 'Min') {\n widthDiff = 0;\n }\n if (preserveAspectRatio.alignY === 'Min') {\n heightDiff = 0;\n }\n }\n\n if (scaleX === 1 && scaleY === 1 && minX === 0 && minY === 0 && x === 0 && y === 0) {\n return parsedDim;\n }\n if ((x || y) && element.parentNode.nodeName !== '#document') {\n translateMatrix = ' translate(' + parseUnit(x) + ' ' + parseUnit(y) + ') ';\n }\n\n matrix = translateMatrix + ' matrix(' + scaleX +\n ' 0' +\n ' 0 ' +\n scaleY + ' ' +\n (minX * scaleX + widthDiff) + ' ' +\n (minY * scaleY + heightDiff) + ') ';\n // seems unused.\n // parsedDim.viewboxTransform = fabric.parseTransformAttribute(matrix);\n if (element.nodeName === 'svg') {\n el = element.ownerDocument.createElementNS(fabric.svgNS, 'g');\n // element.firstChild != null\n while (element.firstChild) {\n el.appendChild(element.firstChild);\n }\n element.appendChild(el);\n }\n else {\n el = element;\n el.removeAttribute('x');\n el.removeAttribute('y');\n matrix = el.getAttribute('transform') + matrix;\n }\n el.setAttribute('transform', matrix);\n return parsedDim;\n }\n\n function hasAncestorWithNodeName(element, nodeName) {\n while (element && (element = element.parentNode)) {\n if (element.nodeName && nodeName.test(element.nodeName.replace('svg:', ''))\n && !element.getAttribute('instantiated_by_use')) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Parses an SVG document, converts it to an array of corresponding fabric.* instances and passes them to a callback\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @param {Function} callback Callback to call when parsing is finished;\n * It's being passed an array of elements (parsed from a document).\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n * @param {Object} [parsingOptions] options for parsing document\n * @param {String} [parsingOptions.crossOrigin] crossOrigin settings\n */\n fabric.parseSVGDocument = function(doc, callback, reviver, parsingOptions) {\n if (!doc) {\n return;\n }\n\n parseUseDirectives(doc);\n\n var svgUid = fabric.Object.__uid++, i, len,\n options = applyViewboxTransform(doc),\n descendants = fabric.util.toArray(doc.getElementsByTagName('*'));\n options.crossOrigin = parsingOptions && parsingOptions.crossOrigin;\n options.svgUid = svgUid;\n\n if (descendants.length === 0 && fabric.isLikelyNode) {\n // we're likely in node, where \"o3-xml\" library fails to gEBTN(\"*\")\n // https://github.com/ajaxorg/node-o3-xml/issues/21\n descendants = doc.selectNodes('//*[name(.)!=\"svg\"]');\n var arr = [];\n for (i = 0, len = descendants.length; i < len; i++) {\n arr[i] = descendants[i];\n }\n descendants = arr;\n }\n\n var elements = descendants.filter(function(el) {\n applyViewboxTransform(el);\n return fabric.svgValidTagNamesRegEx.test(el.nodeName.replace('svg:', '')) &&\n !hasAncestorWithNodeName(el, fabric.svgInvalidAncestorsRegEx); // http://www.w3.org/TR/SVG/struct.html#DefsElement\n });\n if (!elements || (elements && !elements.length)) {\n callback && callback([], {});\n return;\n }\n var clipPaths = { };\n descendants.filter(function(el) {\n return el.nodeName.replace('svg:', '') === 'clipPath';\n }).forEach(function(el) {\n var id = el.getAttribute('id');\n clipPaths[id] = fabric.util.toArray(el.getElementsByTagName('*')).filter(function(el) {\n return fabric.svgValidTagNamesRegEx.test(el.nodeName.replace('svg:', ''));\n });\n });\n fabric.gradientDefs[svgUid] = fabric.getGradientDefs(doc);\n fabric.cssRules[svgUid] = fabric.getCSSRules(doc);\n fabric.clipPaths[svgUid] = clipPaths;\n // Precedence of rules: style > class > attribute\n fabric.parseElements(elements, function(instances, elements) {\n if (callback) {\n callback(instances, options, elements, descendants);\n delete fabric.gradientDefs[svgUid];\n delete fabric.cssRules[svgUid];\n delete fabric.clipPaths[svgUid];\n }\n }, clone(options), reviver, parsingOptions);\n };\n\n function recursivelyParseGradientsXlink(doc, gradient) {\n var gradientsAttrs = ['gradientTransform', 'x1', 'x2', 'y1', 'y2', 'gradientUnits', 'cx', 'cy', 'r', 'fx', 'fy'],\n xlinkAttr = 'xlink:href',\n xLink = gradient.getAttribute(xlinkAttr).slice(1),\n referencedGradient = elementById(doc, xLink);\n if (referencedGradient && referencedGradient.getAttribute(xlinkAttr)) {\n recursivelyParseGradientsXlink(doc, referencedGradient);\n }\n gradientsAttrs.forEach(function(attr) {\n if (referencedGradient && !gradient.hasAttribute(attr) && referencedGradient.hasAttribute(attr)) {\n gradient.setAttribute(attr, referencedGradient.getAttribute(attr));\n }\n });\n if (!gradient.children.length) {\n var referenceClone = referencedGradient.cloneNode(true);\n while (referenceClone.firstChild) {\n gradient.appendChild(referenceClone.firstChild);\n }\n }\n gradient.removeAttribute(xlinkAttr);\n }\n\n var reFontDeclaration = new RegExp(\n '(normal|italic)?\\\\s*(normal|small-caps)?\\\\s*' +\n '(normal|bold|bolder|lighter|100|200|300|400|500|600|700|800|900)?\\\\s*(' +\n fabric.reNum +\n '(?:px|cm|mm|em|pt|pc|in)*)(?:\\\\/(normal|' + fabric.reNum + '))?\\\\s+(.*)');\n\n extend(fabric, {\n /**\n * Parses a short font declaration, building adding its properties to a style object\n * @static\n * @function\n * @memberOf fabric\n * @param {String} value font declaration\n * @param {Object} oStyle definition\n */\n parseFontDeclaration: function(value, oStyle) {\n var match = value.match(reFontDeclaration);\n\n if (!match) {\n return;\n }\n var fontStyle = match[1],\n // font variant is not used\n // fontVariant = match[2],\n fontWeight = match[3],\n fontSize = match[4],\n lineHeight = match[5],\n fontFamily = match[6];\n\n if (fontStyle) {\n oStyle.fontStyle = fontStyle;\n }\n if (fontWeight) {\n oStyle.fontWeight = isNaN(parseFloat(fontWeight)) ? fontWeight : parseFloat(fontWeight);\n }\n if (fontSize) {\n oStyle.fontSize = parseUnit(fontSize);\n }\n if (fontFamily) {\n oStyle.fontFamily = fontFamily;\n }\n if (lineHeight) {\n oStyle.lineHeight = lineHeight === 'normal' ? 1 : lineHeight;\n }\n },\n\n /**\n * Parses an SVG document, returning all of the gradient declarations found in it\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @return {Object} Gradient definitions; key corresponds to element id, value -- to gradient definition element\n */\n getGradientDefs: function(doc) {\n var tagArray = [\n 'linearGradient',\n 'radialGradient',\n 'svg:linearGradient',\n 'svg:radialGradient'],\n elList = _getMultipleNodes(doc, tagArray),\n el, j = 0, gradientDefs = { };\n j = elList.length;\n while (j--) {\n el = elList[j];\n if (el.getAttribute('xlink:href')) {\n recursivelyParseGradientsXlink(doc, el);\n }\n gradientDefs[el.getAttribute('id')] = el;\n }\n return gradientDefs;\n },\n\n /**\n * Returns an object of attributes' name/value, given element and an array of attribute names;\n * Parses parent \"g\" nodes recursively upwards.\n * @static\n * @memberOf fabric\n * @param {DOMElement} element Element to parse\n * @param {Array} attributes Array of attributes to parse\n * @return {Object} object containing parsed attributes' names/values\n */\n parseAttributes: function(element, attributes, svgUid) {\n\n if (!element) {\n return;\n }\n\n var value,\n parentAttributes = { },\n fontSize, parentFontSize;\n\n if (typeof svgUid === 'undefined') {\n svgUid = element.getAttribute('svgUid');\n }\n // if there's a parent container (`g` or `a` or `symbol` node), parse its attributes recursively upwards\n if (element.parentNode && fabric.svgValidParentsRegEx.test(element.parentNode.nodeName)) {\n parentAttributes = fabric.parseAttributes(element.parentNode, attributes, svgUid);\n }\n\n var ownAttributes = attributes.reduce(function(memo, attr) {\n value = element.getAttribute(attr);\n if (value) { // eslint-disable-line\n memo[attr] = value;\n }\n return memo;\n }, { });\n // add values parsed from style, which take precedence over attributes\n // (see: http://www.w3.org/TR/SVG/styling.html#UsingPresentationAttributes)\n var cssAttrs = extend(\n getGlobalStylesForElement(element, svgUid),\n fabric.parseStyleAttribute(element)\n );\n ownAttributes = extend(\n ownAttributes,\n cssAttrs\n );\n if (cssAttrs[cPath]) {\n element.setAttribute(cPath, cssAttrs[cPath]);\n }\n fontSize = parentFontSize = parentAttributes.fontSize || fabric.Text.DEFAULT_SVG_FONT_SIZE;\n if (ownAttributes[fSize]) {\n // looks like the minimum should be 9px when dealing with ems. this is what looks like in browsers.\n ownAttributes[fSize] = fontSize = parseUnit(ownAttributes[fSize], parentFontSize);\n }\n\n var normalizedAttr, normalizedValue, normalizedStyle = {};\n for (var attr in ownAttributes) {\n normalizedAttr = normalizeAttr(attr);\n normalizedValue = normalizeValue(normalizedAttr, ownAttributes[attr], parentAttributes, fontSize);\n normalizedStyle[normalizedAttr] = normalizedValue;\n }\n if (normalizedStyle && normalizedStyle.font) {\n fabric.parseFontDeclaration(normalizedStyle.font, normalizedStyle);\n }\n var mergedAttrs = extend(parentAttributes, normalizedStyle);\n return fabric.svgValidParentsRegEx.test(element.nodeName) ? mergedAttrs : _setStrokeFillOpacity(mergedAttrs);\n },\n\n /**\n * Transforms an array of svg elements to corresponding fabric.* instances\n * @static\n * @memberOf fabric\n * @param {Array} elements Array of elements to parse\n * @param {Function} callback Being passed an array of fabric instances (transformed from SVG elements)\n * @param {Object} [options] Options object\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n */\n parseElements: function(elements, callback, options, reviver, parsingOptions) {\n new fabric.ElementsParser(elements, callback, options, reviver, parsingOptions).parse();\n },\n\n /**\n * Parses \"style\" attribute, retuning an object with values\n * @static\n * @memberOf fabric\n * @param {SVGElement} element Element to parse\n * @return {Object} Objects with values parsed from style attribute of an element\n */\n parseStyleAttribute: function(element) {\n var oStyle = { },\n style = element.getAttribute('style');\n\n if (!style) {\n return oStyle;\n }\n\n if (typeof style === 'string') {\n parseStyleString(style, oStyle);\n }\n else {\n parseStyleObject(style, oStyle);\n }\n\n return oStyle;\n },\n\n /**\n * Parses \"points\" attribute, returning an array of values\n * @static\n * @memberOf fabric\n * @param {String} points points attribute string\n * @return {Array} array of points\n */\n parsePointsAttribute: function(points) {\n\n // points attribute is required and must not be empty\n if (!points) {\n return null;\n }\n\n // replace commas with whitespace and remove bookending whitespace\n points = points.replace(/,/g, ' ').trim();\n\n points = points.split(/\\s+/);\n var parsedPoints = [], i, len;\n\n for (i = 0, len = points.length; i < len; i += 2) {\n parsedPoints.push({\n x: parseFloat(points[i]),\n y: parseFloat(points[i + 1])\n });\n }\n\n // odd number of points is an error\n // if (parsedPoints.length % 2 !== 0) {\n // return null;\n // }\n\n return parsedPoints;\n },\n\n /**\n * Returns CSS rules for a given SVG document\n * @static\n * @function\n * @memberOf fabric\n * @param {SVGDocument} doc SVG document to parse\n * @return {Object} CSS rules of this document\n */\n getCSSRules: function(doc) {\n var styles = doc.getElementsByTagName('style'), i, len,\n allRules = { }, rules;\n\n // very crude parsing of style contents\n for (i = 0, len = styles.length; i < len; i++) {\n var styleContents = styles[i].textContent;\n\n // remove comments\n styleContents = styleContents.replace(/\\/\\*[\\s\\S]*?\\*\\//g, '');\n if (styleContents.trim() === '') {\n continue;\n }\n // recovers all the rule in this form `body { style code... }`\n // rules = styleContents.match(/[^{]*\\{[\\s\\S]*?\\}/g);\n rules = styleContents.split('}');\n // remove empty rules.\n rules = rules.filter(function(rule) { return rule.trim(); });\n // at this point we have hopefully an array of rules `body { style code... `\n // eslint-disable-next-line no-loop-func\n rules.forEach(function(rule) {\n\n var match = rule.split('{'),\n ruleObj = { }, declaration = match[1].trim(),\n propertyValuePairs = declaration.split(';').filter(function(pair) { return pair.trim(); });\n\n for (i = 0, len = propertyValuePairs.length; i < len; i++) {\n var pair = propertyValuePairs[i].split(':'),\n property = pair[0].trim(),\n value = pair[1].trim();\n ruleObj[property] = value;\n }\n rule = match[0].trim();\n rule.split(',').forEach(function(_rule) {\n _rule = _rule.replace(/^svg/i, '').trim();\n if (_rule === '') {\n return;\n }\n if (allRules[_rule]) {\n fabric.util.object.extend(allRules[_rule], ruleObj);\n }\n else {\n allRules[_rule] = fabric.util.object.clone(ruleObj);\n }\n });\n });\n }\n return allRules;\n },\n\n /**\n * Takes url corresponding to an SVG document, and parses it into a set of fabric objects.\n * Note that SVG is fetched via XMLHttpRequest, so it needs to conform to SOP (Same Origin Policy)\n * @memberOf fabric\n * @param {String} url\n * @param {Function} callback\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n * @param {Object} [options] Object containing options for parsing\n * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources\n */\n loadSVGFromURL: function(url, callback, reviver, options) {\n\n url = url.replace(/^\\n\\s*/, '').trim();\n new fabric.util.request(url, {\n method: 'get',\n onComplete: onComplete\n });\n\n function onComplete(r) {\n\n var xml = r.responseXML;\n if (!xml || !xml.documentElement) {\n callback && callback(null);\n return false;\n }\n\n fabric.parseSVGDocument(xml.documentElement, function (results, _options, elements, allElements) {\n callback && callback(results, _options, elements, allElements);\n }, reviver, options);\n }\n },\n\n /**\n * Takes string corresponding to an SVG document, and parses it into a set of fabric objects\n * @memberOf fabric\n * @param {String} string\n * @param {Function} callback\n * @param {Function} [reviver] Method for further parsing of SVG elements, called after each fabric object created.\n * @param {Object} [options] Object containing options for parsing\n * @param {String} [options.crossOrigin] crossOrigin crossOrigin setting to use for external resources\n */\n loadSVGFromString: function(string, callback, reviver, options) {\n var parser = new fabric.window.DOMParser(),\n doc = parser.parseFromString(string.trim(), 'text/xml');\n fabric.parseSVGDocument(doc.documentElement, function (results, _options, elements, allElements) {\n callback(results, _options, elements, allElements);\n }, reviver, options);\n }\n });\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\nfabric.ElementsParser = function(elements, callback, options, reviver, parsingOptions, doc) {\n this.elements = elements;\n this.callback = callback;\n this.options = options;\n this.reviver = reviver;\n this.svgUid = (options && options.svgUid) || 0;\n this.parsingOptions = parsingOptions;\n this.regexUrl = /^url\\(['\"]?#([^'\"]+)['\"]?\\)/g;\n this.doc = doc;\n};\n\n(function(proto) {\n proto.parse = function() {\n this.instances = new Array(this.elements.length);\n this.numElements = this.elements.length;\n this.createObjects();\n };\n\n proto.createObjects = function() {\n var _this = this;\n this.elements.forEach(function(element, i) {\n element.setAttribute('svgUid', _this.svgUid);\n _this.createObject(element, i);\n });\n };\n\n proto.findTag = function(el) {\n return fabric[fabric.util.string.capitalize(el.tagName.replace('svg:', ''))];\n };\n\n proto.createObject = function(el, index) {\n var klass = this.findTag(el);\n if (klass && klass.fromElement) {\n try {\n klass.fromElement(el, this.createCallback(index, el), this.options);\n }\n catch (err) {\n fabric.log(err);\n }\n }\n else {\n this.checkIfDone();\n }\n };\n\n proto.createCallback = function(index, el) {\n var _this = this;\n return function(obj) {\n var _options;\n _this.resolveGradient(obj, el, 'fill');\n _this.resolveGradient(obj, el, 'stroke');\n if (obj instanceof fabric.Image && obj._originalElement) {\n _options = obj.parsePreserveAspectRatioAttribute(el);\n }\n obj._removeTransformMatrix(_options);\n _this.resolveClipPath(obj, el);\n _this.reviver && _this.reviver(el, obj);\n _this.instances[index] = obj;\n _this.checkIfDone();\n };\n };\n\n proto.extractPropertyDefinition = function(obj, property, storage) {\n var value = obj[property], regex = this.regexUrl;\n if (!regex.test(value)) {\n return;\n }\n regex.lastIndex = 0;\n var id = regex.exec(value)[1];\n regex.lastIndex = 0;\n return fabric[storage][this.svgUid][id];\n };\n\n proto.resolveGradient = function(obj, el, property) {\n var gradientDef = this.extractPropertyDefinition(obj, property, 'gradientDefs');\n if (gradientDef) {\n var opacityAttr = el.getAttribute(property + '-opacity');\n var gradient = fabric.Gradient.fromElement(gradientDef, obj, opacityAttr, this.options);\n obj.set(property, gradient);\n }\n };\n\n proto.createClipPathCallback = function(obj, container) {\n return function(_newObj) {\n _newObj._removeTransformMatrix();\n _newObj.fillRule = _newObj.clipRule;\n container.push(_newObj);\n };\n };\n\n proto.resolveClipPath = function(obj, usingElement) {\n var clipPath = this.extractPropertyDefinition(obj, 'clipPath', 'clipPaths'),\n element, klass, objTransformInv, container, gTransform, options;\n if (clipPath) {\n container = [];\n objTransformInv = fabric.util.invertTransform(obj.calcTransformMatrix());\n // move the clipPath tag as sibling to the real element that is using it\n var clipPathTag = clipPath[0].parentNode;\n var clipPathOwner = usingElement;\n while (clipPathOwner.parentNode && clipPathOwner.getAttribute('clip-path') !== obj.clipPath) {\n clipPathOwner = clipPathOwner.parentNode;\n }\n clipPathOwner.parentNode.appendChild(clipPathTag);\n for (var i = 0; i < clipPath.length; i++) {\n element = clipPath[i];\n klass = this.findTag(element);\n klass.fromElement(\n element,\n this.createClipPathCallback(obj, container),\n this.options\n );\n }\n if (container.length === 1) {\n clipPath = container[0];\n }\n else {\n clipPath = new fabric.Group(container);\n }\n gTransform = fabric.util.multiplyTransformMatrices(\n objTransformInv,\n clipPath.calcTransformMatrix()\n );\n if (clipPath.clipPath) {\n this.resolveClipPath(clipPath, clipPathOwner);\n }\n var options = fabric.util.qrDecompose(gTransform);\n clipPath.flipX = false;\n clipPath.flipY = false;\n clipPath.set('scaleX', options.scaleX);\n clipPath.set('scaleY', options.scaleY);\n clipPath.angle = options.angle;\n clipPath.skewX = options.skewX;\n clipPath.skewY = 0;\n clipPath.setPositionByOrigin({ x: options.translateX, y: options.translateY }, 'center', 'center');\n obj.clipPath = clipPath;\n }\n else {\n // if clip-path does not resolve to any element, delete the property.\n delete obj.clipPath;\n }\n };\n\n proto.checkIfDone = function() {\n if (--this.numElements === 0) {\n this.instances = this.instances.filter(function(el) {\n // eslint-disable-next-line no-eq-null, eqeqeq\n return el != null;\n });\n this.callback(this.instances, this.elements);\n }\n };\n})(fabric.ElementsParser.prototype);\n\n\n(function(global) {\n\n 'use strict';\n\n /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Point) {\n fabric.warn('fabric.Point is already defined');\n return;\n }\n\n fabric.Point = Point;\n\n /**\n * Point class\n * @class fabric.Point\n * @memberOf fabric\n * @constructor\n * @param {Number} x\n * @param {Number} y\n * @return {fabric.Point} thisArg\n */\n function Point(x, y) {\n this.x = x;\n this.y = y;\n }\n\n Point.prototype = /** @lends fabric.Point.prototype */ {\n\n type: 'point',\n\n constructor: Point,\n\n /**\n * Adds another point to this one and returns another one\n * @param {fabric.Point} that\n * @return {fabric.Point} new Point instance with added values\n */\n add: function (that) {\n return new Point(this.x + that.x, this.y + that.y);\n },\n\n /**\n * Adds another point to this one\n * @param {fabric.Point} that\n * @return {fabric.Point} thisArg\n * @chainable\n */\n addEquals: function (that) {\n this.x += that.x;\n this.y += that.y;\n return this;\n },\n\n /**\n * Adds value to this point and returns a new one\n * @param {Number} scalar\n * @return {fabric.Point} new Point with added value\n */\n scalarAdd: function (scalar) {\n return new Point(this.x + scalar, this.y + scalar);\n },\n\n /**\n * Adds value to this point\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n scalarAddEquals: function (scalar) {\n this.x += scalar;\n this.y += scalar;\n return this;\n },\n\n /**\n * Subtracts another point from this point and returns a new one\n * @param {fabric.Point} that\n * @return {fabric.Point} new Point object with subtracted values\n */\n subtract: function (that) {\n return new Point(this.x - that.x, this.y - that.y);\n },\n\n /**\n * Subtracts another point from this point\n * @param {fabric.Point} that\n * @return {fabric.Point} thisArg\n * @chainable\n */\n subtractEquals: function (that) {\n this.x -= that.x;\n this.y -= that.y;\n return this;\n },\n\n /**\n * Subtracts value from this point and returns a new one\n * @param {Number} scalar\n * @return {fabric.Point}\n */\n scalarSubtract: function (scalar) {\n return new Point(this.x - scalar, this.y - scalar);\n },\n\n /**\n * Subtracts value from this point\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n scalarSubtractEquals: function (scalar) {\n this.x -= scalar;\n this.y -= scalar;\n return this;\n },\n\n /**\n * Multiplies this point by a value and returns a new one\n * TODO: rename in scalarMultiply in 2.0\n * @param {Number} scalar\n * @return {fabric.Point}\n */\n multiply: function (scalar) {\n return new Point(this.x * scalar, this.y * scalar);\n },\n\n /**\n * Multiplies this point by a value\n * TODO: rename in scalarMultiplyEquals in 2.0\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n multiplyEquals: function (scalar) {\n this.x *= scalar;\n this.y *= scalar;\n return this;\n },\n\n /**\n * Divides this point by a value and returns a new one\n * TODO: rename in scalarDivide in 2.0\n * @param {Number} scalar\n * @return {fabric.Point}\n */\n divide: function (scalar) {\n return new Point(this.x / scalar, this.y / scalar);\n },\n\n /**\n * Divides this point by a value\n * TODO: rename in scalarDivideEquals in 2.0\n * @param {Number} scalar\n * @return {fabric.Point} thisArg\n * @chainable\n */\n divideEquals: function (scalar) {\n this.x /= scalar;\n this.y /= scalar;\n return this;\n },\n\n /**\n * Returns true if this point is equal to another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n eq: function (that) {\n return (this.x === that.x && this.y === that.y);\n },\n\n /**\n * Returns true if this point is less than another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n lt: function (that) {\n return (this.x < that.x && this.y < that.y);\n },\n\n /**\n * Returns true if this point is less than or equal to another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n lte: function (that) {\n return (this.x <= that.x && this.y <= that.y);\n },\n\n /**\n\n * Returns true if this point is greater another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n gt: function (that) {\n return (this.x > that.x && this.y > that.y);\n },\n\n /**\n * Returns true if this point is greater than or equal to another one\n * @param {fabric.Point} that\n * @return {Boolean}\n */\n gte: function (that) {\n return (this.x >= that.x && this.y >= that.y);\n },\n\n /**\n * Returns new point which is the result of linear interpolation with this one and another one\n * @param {fabric.Point} that\n * @param {Number} t , position of interpolation, between 0 and 1 default 0.5\n * @return {fabric.Point}\n */\n lerp: function (that, t) {\n if (typeof t === 'undefined') {\n t = 0.5;\n }\n t = Math.max(Math.min(1, t), 0);\n return new Point(this.x + (that.x - this.x) * t, this.y + (that.y - this.y) * t);\n },\n\n /**\n * Returns distance from this point and another one\n * @param {fabric.Point} that\n * @return {Number}\n */\n distanceFrom: function (that) {\n var dx = this.x - that.x,\n dy = this.y - that.y;\n return Math.sqrt(dx * dx + dy * dy);\n },\n\n /**\n * Returns the point between this point and another one\n * @param {fabric.Point} that\n * @return {fabric.Point}\n */\n midPointFrom: function (that) {\n return this.lerp(that);\n },\n\n /**\n * Returns a new point which is the min of this and another one\n * @param {fabric.Point} that\n * @return {fabric.Point}\n */\n min: function (that) {\n return new Point(Math.min(this.x, that.x), Math.min(this.y, that.y));\n },\n\n /**\n * Returns a new point which is the max of this and another one\n * @param {fabric.Point} that\n * @return {fabric.Point}\n */\n max: function (that) {\n return new Point(Math.max(this.x, that.x), Math.max(this.y, that.y));\n },\n\n /**\n * Returns string representation of this point\n * @return {String}\n */\n toString: function () {\n return this.x + ',' + this.y;\n },\n\n /**\n * Sets x/y of this point\n * @param {Number} x\n * @param {Number} y\n * @chainable\n */\n setXY: function (x, y) {\n this.x = x;\n this.y = y;\n return this;\n },\n\n /**\n * Sets x of this point\n * @param {Number} x\n * @chainable\n */\n setX: function (x) {\n this.x = x;\n return this;\n },\n\n /**\n * Sets y of this point\n * @param {Number} y\n * @chainable\n */\n setY: function (y) {\n this.y = y;\n return this;\n },\n\n /**\n * Sets x/y of this point from another point\n * @param {fabric.Point} that\n * @chainable\n */\n setFromPoint: function (that) {\n this.x = that.x;\n this.y = that.y;\n return this;\n },\n\n /**\n * Swaps x/y of this point and another point\n * @param {fabric.Point} that\n */\n swap: function (that) {\n var x = this.x,\n y = this.y;\n this.x = that.x;\n this.y = that.y;\n that.x = x;\n that.y = y;\n },\n\n /**\n * return a cloned instance of the point\n * @return {fabric.Point}\n */\n clone: function () {\n return new Point(this.x, this.y);\n }\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n /* Adaptation of work of Kevin Lindsey (kevin@kevlindev.com) */\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Intersection) {\n fabric.warn('fabric.Intersection is already defined');\n return;\n }\n\n /**\n * Intersection class\n * @class fabric.Intersection\n * @memberOf fabric\n * @constructor\n */\n function Intersection(status) {\n this.status = status;\n this.points = [];\n }\n\n fabric.Intersection = Intersection;\n\n fabric.Intersection.prototype = /** @lends fabric.Intersection.prototype */ {\n\n constructor: Intersection,\n\n /**\n * Appends a point to intersection\n * @param {fabric.Point} point\n * @return {fabric.Intersection} thisArg\n * @chainable\n */\n appendPoint: function (point) {\n this.points.push(point);\n return this;\n },\n\n /**\n * Appends points to intersection\n * @param {Array} points\n * @return {fabric.Intersection} thisArg\n * @chainable\n */\n appendPoints: function (points) {\n this.points = this.points.concat(points);\n return this;\n }\n };\n\n /**\n * Checks if one line intersects another\n * TODO: rename in intersectSegmentSegment\n * @static\n * @param {fabric.Point} a1\n * @param {fabric.Point} a2\n * @param {fabric.Point} b1\n * @param {fabric.Point} b2\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectLineLine = function (a1, a2, b1, b2) {\n var result,\n uaT = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x),\n ubT = (a2.x - a1.x) * (a1.y - b1.y) - (a2.y - a1.y) * (a1.x - b1.x),\n uB = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n if (uB !== 0) {\n var ua = uaT / uB,\n ub = ubT / uB;\n if (0 <= ua && ua <= 1 && 0 <= ub && ub <= 1) {\n result = new Intersection('Intersection');\n result.appendPoint(new fabric.Point(a1.x + ua * (a2.x - a1.x), a1.y + ua * (a2.y - a1.y)));\n }\n else {\n result = new Intersection();\n }\n }\n else {\n if (uaT === 0 || ubT === 0) {\n result = new Intersection('Coincident');\n }\n else {\n result = new Intersection('Parallel');\n }\n }\n return result;\n };\n\n /**\n * Checks if line intersects polygon\n * TODO: rename in intersectSegmentPolygon\n * fix detection of coincident\n * @static\n * @param {fabric.Point} a1\n * @param {fabric.Point} a2\n * @param {Array} points\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectLinePolygon = function(a1, a2, points) {\n var result = new Intersection(),\n length = points.length,\n b1, b2, inter, i;\n\n for (i = 0; i < length; i++) {\n b1 = points[i];\n b2 = points[(i + 1) % length];\n inter = Intersection.intersectLineLine(a1, a2, b1, b2);\n\n result.appendPoints(inter.points);\n }\n if (result.points.length > 0) {\n result.status = 'Intersection';\n }\n return result;\n };\n\n /**\n * Checks if polygon intersects another polygon\n * @static\n * @param {Array} points1\n * @param {Array} points2\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectPolygonPolygon = function (points1, points2) {\n var result = new Intersection(),\n length = points1.length, i;\n\n for (i = 0; i < length; i++) {\n var a1 = points1[i],\n a2 = points1[(i + 1) % length],\n inter = Intersection.intersectLinePolygon(a1, a2, points2);\n\n result.appendPoints(inter.points);\n }\n if (result.points.length > 0) {\n result.status = 'Intersection';\n }\n return result;\n };\n\n /**\n * Checks if polygon intersects rectangle\n * @static\n * @param {Array} points\n * @param {fabric.Point} r1\n * @param {fabric.Point} r2\n * @return {fabric.Intersection}\n */\n fabric.Intersection.intersectPolygonRectangle = function (points, r1, r2) {\n var min = r1.min(r2),\n max = r1.max(r2),\n topRight = new fabric.Point(max.x, min.y),\n bottomLeft = new fabric.Point(min.x, max.y),\n inter1 = Intersection.intersectLinePolygon(min, topRight, points),\n inter2 = Intersection.intersectLinePolygon(topRight, max, points),\n inter3 = Intersection.intersectLinePolygon(max, bottomLeft, points),\n inter4 = Intersection.intersectLinePolygon(bottomLeft, min, points),\n result = new Intersection();\n\n result.appendPoints(inter1.points);\n result.appendPoints(inter2.points);\n result.appendPoints(inter3.points);\n result.appendPoints(inter4.points);\n\n if (result.points.length > 0) {\n result.status = 'Intersection';\n }\n return result;\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Color) {\n fabric.warn('fabric.Color is already defined.');\n return;\n }\n\n /**\n * Color class\n * The purpose of {@link fabric.Color} is to abstract and encapsulate common color operations;\n * {@link fabric.Color} is a constructor and creates instances of {@link fabric.Color} objects.\n *\n * @class fabric.Color\n * @param {String} color optional in hex or rgb(a) or hsl format or from known color list\n * @return {fabric.Color} thisArg\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2/#colors}\n */\n function Color(color) {\n if (!color) {\n this.setSource([0, 0, 0, 1]);\n }\n else {\n this._tryParsingColor(color);\n }\n }\n\n fabric.Color = Color;\n\n fabric.Color.prototype = /** @lends fabric.Color.prototype */ {\n\n /**\n * @private\n * @param {String|Array} color Color value to parse\n */\n _tryParsingColor: function(color) {\n var source;\n\n if (color in Color.colorNameMap) {\n color = Color.colorNameMap[color];\n }\n\n if (color === 'transparent') {\n source = [255, 255, 255, 0];\n }\n\n if (!source) {\n source = Color.sourceFromHex(color);\n }\n if (!source) {\n source = Color.sourceFromRgb(color);\n }\n if (!source) {\n source = Color.sourceFromHsl(color);\n }\n if (!source) {\n //if color is not recognize let's make black as canvas does\n source = [0, 0, 0, 1];\n }\n if (source) {\n this.setSource(source);\n }\n },\n\n /**\n * Adapted from https://github.com/mjijackson\n * @private\n * @param {Number} r Red color value\n * @param {Number} g Green color value\n * @param {Number} b Blue color value\n * @return {Array} Hsl color\n */\n _rgbToHsl: function(r, g, b) {\n r /= 255; g /= 255; b /= 255;\n\n var h, s, l,\n max = fabric.util.array.max([r, g, b]),\n min = fabric.util.array.min([r, g, b]);\n\n l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0; // achromatic\n }\n else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n\n return [\n Math.round(h * 360),\n Math.round(s * 100),\n Math.round(l * 100)\n ];\n },\n\n /**\n * Returns source of this color (where source is an array representation; ex: [200, 200, 100, 1])\n * @return {Array}\n */\n getSource: function() {\n return this._source;\n },\n\n /**\n * Sets source of this color (where source is an array representation; ex: [200, 200, 100, 1])\n * @param {Array} source\n */\n setSource: function(source) {\n this._source = source;\n },\n\n /**\n * Returns color representation in RGB format\n * @return {String} ex: rgb(0-255,0-255,0-255)\n */\n toRgb: function() {\n var source = this.getSource();\n return 'rgb(' + source[0] + ',' + source[1] + ',' + source[2] + ')';\n },\n\n /**\n * Returns color representation in RGBA format\n * @return {String} ex: rgba(0-255,0-255,0-255,0-1)\n */\n toRgba: function() {\n var source = this.getSource();\n return 'rgba(' + source[0] + ',' + source[1] + ',' + source[2] + ',' + source[3] + ')';\n },\n\n /**\n * Returns color representation in HSL format\n * @return {String} ex: hsl(0-360,0%-100%,0%-100%)\n */\n toHsl: function() {\n var source = this.getSource(),\n hsl = this._rgbToHsl(source[0], source[1], source[2]);\n\n return 'hsl(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%)';\n },\n\n /**\n * Returns color representation in HSLA format\n * @return {String} ex: hsla(0-360,0%-100%,0%-100%,0-1)\n */\n toHsla: function() {\n var source = this.getSource(),\n hsl = this._rgbToHsl(source[0], source[1], source[2]);\n\n return 'hsla(' + hsl[0] + ',' + hsl[1] + '%,' + hsl[2] + '%,' + source[3] + ')';\n },\n\n /**\n * Returns color representation in HEX format\n * @return {String} ex: FF5555\n */\n toHex: function() {\n var source = this.getSource(), r, g, b;\n\n r = source[0].toString(16);\n r = (r.length === 1) ? ('0' + r) : r;\n\n g = source[1].toString(16);\n g = (g.length === 1) ? ('0' + g) : g;\n\n b = source[2].toString(16);\n b = (b.length === 1) ? ('0' + b) : b;\n\n return r.toUpperCase() + g.toUpperCase() + b.toUpperCase();\n },\n\n /**\n * Returns color representation in HEXA format\n * @return {String} ex: FF5555CC\n */\n toHexa: function() {\n var source = this.getSource(), a;\n\n a = Math.round(source[3] * 255);\n a = a.toString(16);\n a = (a.length === 1) ? ('0' + a) : a;\n\n return this.toHex() + a.toUpperCase();\n },\n\n /**\n * Gets value of alpha channel for this color\n * @return {Number} 0-1\n */\n getAlpha: function() {\n return this.getSource()[3];\n },\n\n /**\n * Sets value of alpha channel for this color\n * @param {Number} alpha Alpha value 0-1\n * @return {fabric.Color} thisArg\n */\n setAlpha: function(alpha) {\n var source = this.getSource();\n source[3] = alpha;\n this.setSource(source);\n return this;\n },\n\n /**\n * Transforms color to its grayscale representation\n * @return {fabric.Color} thisArg\n */\n toGrayscale: function() {\n var source = this.getSource(),\n average = parseInt((source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0), 10),\n currentAlpha = source[3];\n this.setSource([average, average, average, currentAlpha]);\n return this;\n },\n\n /**\n * Transforms color to its black and white representation\n * @param {Number} threshold\n * @return {fabric.Color} thisArg\n */\n toBlackWhite: function(threshold) {\n var source = this.getSource(),\n average = (source[0] * 0.3 + source[1] * 0.59 + source[2] * 0.11).toFixed(0),\n currentAlpha = source[3];\n\n threshold = threshold || 127;\n\n average = (Number(average) < Number(threshold)) ? 0 : 255;\n this.setSource([average, average, average, currentAlpha]);\n return this;\n },\n\n /**\n * Overlays color with another color\n * @param {String|fabric.Color} otherColor\n * @return {fabric.Color} thisArg\n */\n overlayWith: function(otherColor) {\n if (!(otherColor instanceof Color)) {\n otherColor = new Color(otherColor);\n }\n\n var result = [],\n alpha = this.getAlpha(),\n otherAlpha = 0.5,\n source = this.getSource(),\n otherSource = otherColor.getSource(), i;\n\n for (i = 0; i < 3; i++) {\n result.push(Math.round((source[i] * (1 - otherAlpha)) + (otherSource[i] * otherAlpha)));\n }\n\n result[3] = alpha;\n this.setSource(result);\n return this;\n }\n };\n\n /**\n * Regex matching color in RGB or RGBA formats (ex: rgb(0, 0, 0), rgba(255, 100, 10, 0.5), rgba( 255 , 100 , 10 , 0.5 ), rgb(1,1,1), rgba(100%, 60%, 10%, 0.5))\n * @static\n * @field\n * @memberOf fabric.Color\n */\n // eslint-disable-next-line max-len\n fabric.Color.reRGBa = /^rgba?\\(\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*,\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*,\\s*(\\d{1,3}(?:\\.\\d+)?\\%?)\\s*(?:\\s*,\\s*((?:\\d*\\.?\\d+)?)\\s*)?\\)$/i;\n\n /**\n * Regex matching color in HSL or HSLA formats (ex: hsl(200, 80%, 10%), hsla(300, 50%, 80%, 0.5), hsla( 300 , 50% , 80% , 0.5 ))\n * @static\n * @field\n * @memberOf fabric.Color\n */\n fabric.Color.reHSLa = /^hsla?\\(\\s*(\\d{1,3})\\s*,\\s*(\\d{1,3}\\%)\\s*,\\s*(\\d{1,3}\\%)\\s*(?:\\s*,\\s*(\\d+(?:\\.\\d+)?)\\s*)?\\)$/i;\n\n /**\n * Regex matching color in HEX format (ex: #FF5544CC, #FF5555, 010155, aff)\n * @static\n * @field\n * @memberOf fabric.Color\n */\n fabric.Color.reHex = /^#?([0-9a-f]{8}|[0-9a-f]{6}|[0-9a-f]{4}|[0-9a-f]{3})$/i;\n\n /**\n * Map of the 148 color names with HEX code\n * @static\n * @field\n * @memberOf fabric.Color\n * @see: https://www.w3.org/TR/css3-color/#svg-color\n */\n fabric.Color.colorNameMap = {\n aliceblue: '#F0F8FF',\n antiquewhite: '#FAEBD7',\n aqua: '#00FFFF',\n aquamarine: '#7FFFD4',\n azure: '#F0FFFF',\n beige: '#F5F5DC',\n bisque: '#FFE4C4',\n black: '#000000',\n blanchedalmond: '#FFEBCD',\n blue: '#0000FF',\n blueviolet: '#8A2BE2',\n brown: '#A52A2A',\n burlywood: '#DEB887',\n cadetblue: '#5F9EA0',\n chartreuse: '#7FFF00',\n chocolate: '#D2691E',\n coral: '#FF7F50',\n cornflowerblue: '#6495ED',\n cornsilk: '#FFF8DC',\n crimson: '#DC143C',\n cyan: '#00FFFF',\n darkblue: '#00008B',\n darkcyan: '#008B8B',\n darkgoldenrod: '#B8860B',\n darkgray: '#A9A9A9',\n darkgrey: '#A9A9A9',\n darkgreen: '#006400',\n darkkhaki: '#BDB76B',\n darkmagenta: '#8B008B',\n darkolivegreen: '#556B2F',\n darkorange: '#FF8C00',\n darkorchid: '#9932CC',\n darkred: '#8B0000',\n darksalmon: '#E9967A',\n darkseagreen: '#8FBC8F',\n darkslateblue: '#483D8B',\n darkslategray: '#2F4F4F',\n darkslategrey: '#2F4F4F',\n darkturquoise: '#00CED1',\n darkviolet: '#9400D3',\n deeppink: '#FF1493',\n deepskyblue: '#00BFFF',\n dimgray: '#696969',\n dimgrey: '#696969',\n dodgerblue: '#1E90FF',\n firebrick: '#B22222',\n floralwhite: '#FFFAF0',\n forestgreen: '#228B22',\n fuchsia: '#FF00FF',\n gainsboro: '#DCDCDC',\n ghostwhite: '#F8F8FF',\n gold: '#FFD700',\n goldenrod: '#DAA520',\n gray: '#808080',\n grey: '#808080',\n green: '#008000',\n greenyellow: '#ADFF2F',\n honeydew: '#F0FFF0',\n hotpink: '#FF69B4',\n indianred: '#CD5C5C',\n indigo: '#4B0082',\n ivory: '#FFFFF0',\n khaki: '#F0E68C',\n lavender: '#E6E6FA',\n lavenderblush: '#FFF0F5',\n lawngreen: '#7CFC00',\n lemonchiffon: '#FFFACD',\n lightblue: '#ADD8E6',\n lightcoral: '#F08080',\n lightcyan: '#E0FFFF',\n lightgoldenrodyellow: '#FAFAD2',\n lightgray: '#D3D3D3',\n lightgrey: '#D3D3D3',\n lightgreen: '#90EE90',\n lightpink: '#FFB6C1',\n lightsalmon: '#FFA07A',\n lightseagreen: '#20B2AA',\n lightskyblue: '#87CEFA',\n lightslategray: '#778899',\n lightslategrey: '#778899',\n lightsteelblue: '#B0C4DE',\n lightyellow: '#FFFFE0',\n lime: '#00FF00',\n limegreen: '#32CD32',\n linen: '#FAF0E6',\n magenta: '#FF00FF',\n maroon: '#800000',\n mediumaquamarine: '#66CDAA',\n mediumblue: '#0000CD',\n mediumorchid: '#BA55D3',\n mediumpurple: '#9370DB',\n mediumseagreen: '#3CB371',\n mediumslateblue: '#7B68EE',\n mediumspringgreen: '#00FA9A',\n mediumturquoise: '#48D1CC',\n mediumvioletred: '#C71585',\n midnightblue: '#191970',\n mintcream: '#F5FFFA',\n mistyrose: '#FFE4E1',\n moccasin: '#FFE4B5',\n navajowhite: '#FFDEAD',\n navy: '#000080',\n oldlace: '#FDF5E6',\n olive: '#808000',\n olivedrab: '#6B8E23',\n orange: '#FFA500',\n orangered: '#FF4500',\n orchid: '#DA70D6',\n palegoldenrod: '#EEE8AA',\n palegreen: '#98FB98',\n paleturquoise: '#AFEEEE',\n palevioletred: '#DB7093',\n papayawhip: '#FFEFD5',\n peachpuff: '#FFDAB9',\n peru: '#CD853F',\n pink: '#FFC0CB',\n plum: '#DDA0DD',\n powderblue: '#B0E0E6',\n purple: '#800080',\n rebeccapurple: '#663399',\n red: '#FF0000',\n rosybrown: '#BC8F8F',\n royalblue: '#4169E1',\n saddlebrown: '#8B4513',\n salmon: '#FA8072',\n sandybrown: '#F4A460',\n seagreen: '#2E8B57',\n seashell: '#FFF5EE',\n sienna: '#A0522D',\n silver: '#C0C0C0',\n skyblue: '#87CEEB',\n slateblue: '#6A5ACD',\n slategray: '#708090',\n slategrey: '#708090',\n snow: '#FFFAFA',\n springgreen: '#00FF7F',\n steelblue: '#4682B4',\n tan: '#D2B48C',\n teal: '#008080',\n thistle: '#D8BFD8',\n tomato: '#FF6347',\n turquoise: '#40E0D0',\n violet: '#EE82EE',\n wheat: '#F5DEB3',\n white: '#FFFFFF',\n whitesmoke: '#F5F5F5',\n yellow: '#FFFF00',\n yellowgreen: '#9ACD32'\n };\n\n /**\n * @private\n * @param {Number} p\n * @param {Number} q\n * @param {Number} t\n * @return {Number}\n */\n function hue2rgb(p, q, t) {\n if (t < 0) {\n t += 1;\n }\n if (t > 1) {\n t -= 1;\n }\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n if (t < 1 / 2) {\n return q;\n }\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n return p;\n }\n\n /**\n * Returns new color object, when given a color in RGB format\n * @memberOf fabric.Color\n * @param {String} color Color value ex: rgb(0-255,0-255,0-255)\n * @return {fabric.Color}\n */\n fabric.Color.fromRgb = function(color) {\n return Color.fromSource(Color.sourceFromRgb(color));\n };\n\n /**\n * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in RGB or RGBA format\n * @memberOf fabric.Color\n * @param {String} color Color value ex: rgb(0-255,0-255,0-255), rgb(0%-100%,0%-100%,0%-100%)\n * @return {Array} source\n */\n fabric.Color.sourceFromRgb = function(color) {\n var match = color.match(Color.reRGBa);\n if (match) {\n var r = parseInt(match[1], 10) / (/%$/.test(match[1]) ? 100 : 1) * (/%$/.test(match[1]) ? 255 : 1),\n g = parseInt(match[2], 10) / (/%$/.test(match[2]) ? 100 : 1) * (/%$/.test(match[2]) ? 255 : 1),\n b = parseInt(match[3], 10) / (/%$/.test(match[3]) ? 100 : 1) * (/%$/.test(match[3]) ? 255 : 1);\n\n return [\n parseInt(r, 10),\n parseInt(g, 10),\n parseInt(b, 10),\n match[4] ? parseFloat(match[4]) : 1\n ];\n }\n };\n\n /**\n * Returns new color object, when given a color in RGBA format\n * @static\n * @function\n * @memberOf fabric.Color\n * @param {String} color\n * @return {fabric.Color}\n */\n fabric.Color.fromRgba = Color.fromRgb;\n\n /**\n * Returns new color object, when given a color in HSL format\n * @param {String} color Color value ex: hsl(0-260,0%-100%,0%-100%)\n * @memberOf fabric.Color\n * @return {fabric.Color}\n */\n fabric.Color.fromHsl = function(color) {\n return Color.fromSource(Color.sourceFromHsl(color));\n };\n\n /**\n * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in HSL or HSLA format.\n * Adapted from https://github.com/mjijackson\n * @memberOf fabric.Color\n * @param {String} color Color value ex: hsl(0-360,0%-100%,0%-100%) or hsla(0-360,0%-100%,0%-100%, 0-1)\n * @return {Array} source\n * @see http://http://www.w3.org/TR/css3-color/#hsl-color\n */\n fabric.Color.sourceFromHsl = function(color) {\n var match = color.match(Color.reHSLa);\n if (!match) {\n return;\n }\n\n var h = (((parseFloat(match[1]) % 360) + 360) % 360) / 360,\n s = parseFloat(match[2]) / (/%$/.test(match[2]) ? 100 : 1),\n l = parseFloat(match[3]) / (/%$/.test(match[3]) ? 100 : 1),\n r, g, b;\n\n if (s === 0) {\n r = g = b = l;\n }\n else {\n var q = l <= 0.5 ? l * (s + 1) : l + s - l * s,\n p = l * 2 - q;\n\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return [\n Math.round(r * 255),\n Math.round(g * 255),\n Math.round(b * 255),\n match[4] ? parseFloat(match[4]) : 1\n ];\n };\n\n /**\n * Returns new color object, when given a color in HSLA format\n * @static\n * @function\n * @memberOf fabric.Color\n * @param {String} color\n * @return {fabric.Color}\n */\n fabric.Color.fromHsla = Color.fromHsl;\n\n /**\n * Returns new color object, when given a color in HEX format\n * @static\n * @memberOf fabric.Color\n * @param {String} color Color value ex: FF5555\n * @return {fabric.Color}\n */\n fabric.Color.fromHex = function(color) {\n return Color.fromSource(Color.sourceFromHex(color));\n };\n\n /**\n * Returns array representation (ex: [100, 100, 200, 1]) of a color that's in HEX format\n * @static\n * @memberOf fabric.Color\n * @param {String} color ex: FF5555 or FF5544CC (RGBa)\n * @return {Array} source\n */\n fabric.Color.sourceFromHex = function(color) {\n if (color.match(Color.reHex)) {\n var value = color.slice(color.indexOf('#') + 1),\n isShortNotation = (value.length === 3 || value.length === 4),\n isRGBa = (value.length === 8 || value.length === 4),\n r = isShortNotation ? (value.charAt(0) + value.charAt(0)) : value.substring(0, 2),\n g = isShortNotation ? (value.charAt(1) + value.charAt(1)) : value.substring(2, 4),\n b = isShortNotation ? (value.charAt(2) + value.charAt(2)) : value.substring(4, 6),\n a = isRGBa ? (isShortNotation ? (value.charAt(3) + value.charAt(3)) : value.substring(6, 8)) : 'FF';\n\n return [\n parseInt(r, 16),\n parseInt(g, 16),\n parseInt(b, 16),\n parseFloat((parseInt(a, 16) / 255).toFixed(2))\n ];\n }\n };\n\n /**\n * Returns new color object, when given color in array representation (ex: [200, 100, 100, 0.5])\n * @static\n * @memberOf fabric.Color\n * @param {Array} source\n * @return {fabric.Color}\n */\n fabric.Color.fromSource = function(source) {\n var oColor = new Color();\n oColor.setSource(source);\n return oColor;\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n scaleMap = ['e', 'se', 's', 'sw', 'w', 'nw', 'n', 'ne', 'e'],\n skewMap = ['ns', 'nesw', 'ew', 'nwse'],\n controls = {},\n LEFT = 'left', TOP = 'top', RIGHT = 'right', BOTTOM = 'bottom', CENTER = 'center',\n opposite = {\n top: BOTTOM,\n bottom: TOP,\n left: RIGHT,\n right: LEFT,\n center: CENTER,\n }, radiansToDegrees = fabric.util.radiansToDegrees,\n sign = (Math.sign || function(x) { return ((x > 0) - (x < 0)) || +x; });\n\n /**\n * Combine control position and object angle to find the control direction compared\n * to the object center.\n * @param {fabric.Object} fabricObject the fabric object for which we are rendering controls\n * @param {fabric.Control} control the control class\n * @return {Number} 0 - 7 a quadrant number\n */\n function findCornerQuadrant(fabricObject, control) {\n var cornerAngle = fabricObject.angle + radiansToDegrees(Math.atan2(control.y, control.x)) + 360;\n return Math.round((cornerAngle % 360) / 45);\n }\n\n function fireEvent(eventName, options) {\n var target = options.transform.target,\n canvas = target.canvas,\n canvasOptions = fabric.util.object.clone(options);\n canvasOptions.target = target;\n canvas && canvas.fire('object:' + eventName, canvasOptions);\n target.fire(eventName, options);\n }\n\n /**\n * Inspect event and fabricObject properties to understand if the scaling action\n * @param {Event} eventData from the user action\n * @param {fabric.Object} fabricObject the fabric object about to scale\n * @return {Boolean} true if scale is proportional\n */\n function scaleIsProportional(eventData, fabricObject) {\n var canvas = fabricObject.canvas, uniScaleKey = canvas.uniScaleKey,\n uniformIsToggled = eventData[uniScaleKey];\n return (canvas.uniformScaling && !uniformIsToggled) ||\n (!canvas.uniformScaling && uniformIsToggled);\n }\n\n /**\n * Checks if transform is centered\n * @param {Object} transform transform data\n * @return {Boolean} true if transform is centered\n */\n function isTransformCentered(transform) {\n return transform.originX === CENTER && transform.originY === CENTER;\n }\n\n /**\n * Inspect fabricObject to understand if the current scaling action is allowed\n * @param {fabric.Object} fabricObject the fabric object about to scale\n * @param {String} by 'x' or 'y' or ''\n * @param {Boolean} scaleProportionally true if we are trying to scale proportionally\n * @return {Boolean} true if scaling is not allowed at current conditions\n */\n function scalingIsForbidden(fabricObject, by, scaleProportionally) {\n var lockX = fabricObject.lockScalingX, lockY = fabricObject.lockScalingY;\n if (lockX && lockY) {\n return true;\n }\n if (!by && (lockX || lockY) && scaleProportionally) {\n return true;\n }\n if (lockX && by === 'x') {\n return true;\n }\n if (lockY && by === 'y') {\n return true;\n }\n return false;\n }\n\n /**\n * return the correct cursor style for the scale action\n * @param {Event} eventData the javascript event that is causing the scale\n * @param {fabric.Control} control the control that is interested in the action\n * @param {fabric.Object} fabricObject the fabric object that is interested in the action\n * @return {String} a valid css string for the cursor\n */\n function scaleCursorStyleHandler(eventData, control, fabricObject) {\n var notAllowed = 'not-allowed',\n scaleProportionally = scaleIsProportional(eventData, fabricObject),\n by = '';\n if (control.x !== 0 && control.y === 0) {\n by = 'x';\n }\n else if (control.x === 0 && control.y !== 0) {\n by = 'y';\n }\n if (scalingIsForbidden(fabricObject, by, scaleProportionally)) {\n return notAllowed;\n }\n var n = findCornerQuadrant(fabricObject, control);\n return scaleMap[n] + '-resize';\n }\n\n /**\n * return the correct cursor style for the skew action\n * @param {Event} eventData the javascript event that is causing the scale\n * @param {fabric.Control} control the control that is interested in the action\n * @param {fabric.Object} fabricObject the fabric object that is interested in the action\n * @return {String} a valid css string for the cursor\n */\n function skewCursorStyleHandler(eventData, control, fabricObject) {\n var notAllowed = 'not-allowed';\n if (control.x !== 0 && fabricObject.lockSkewingY) {\n return notAllowed;\n }\n if (control.y !== 0 && fabricObject.lockSkewingX) {\n return notAllowed;\n }\n var n = findCornerQuadrant(fabricObject, control) % 4;\n return skewMap[n] + '-resize';\n }\n\n /**\n * Combine skew and scale style handlers to cover fabric standard use case\n * @param {Event} eventData the javascript event that is causing the scale\n * @param {fabric.Control} control the control that is interested in the action\n * @param {fabric.Object} fabricObject the fabric object that is interested in the action\n * @return {String} a valid css string for the cursor\n */\n function scaleSkewCursorStyleHandler(eventData, control, fabricObject) {\n if (eventData[fabricObject.canvas.altActionKey]) {\n return controls.skewCursorStyleHandler(eventData, control, fabricObject);\n }\n return controls.scaleCursorStyleHandler(eventData, control, fabricObject);\n }\n\n /**\n * Inspect event, control and fabricObject to return the correct action name\n * @param {Event} eventData the javascript event that is causing the scale\n * @param {fabric.Control} control the control that is interested in the action\n * @param {fabric.Object} fabricObject the fabric object that is interested in the action\n * @return {String} an action name\n */\n function scaleOrSkewActionName(eventData, control, fabricObject) {\n var isAlternative = eventData[fabricObject.canvas.altActionKey];\n if (control.x === 0) {\n // then is scaleY or skewX\n return isAlternative ? 'skewX' : 'scaleY';\n }\n if (control.y === 0) {\n // then is scaleY or skewX\n return isAlternative ? 'skewY' : 'scaleX';\n }\n }\n\n /**\n * Find the correct style for the control that is used for rotation.\n * this function is very simple and it just take care of not-allowed or standard cursor\n * @param {Event} eventData the javascript event that is causing the scale\n * @param {fabric.Control} control the control that is interested in the action\n * @param {fabric.Object} fabricObject the fabric object that is interested in the action\n * @return {String} a valid css string for the cursor\n */\n function rotationStyleHandler(eventData, control, fabricObject) {\n if (fabricObject.lockRotation) {\n return 'not-allowed';\n }\n return control.cursorStyle;\n }\n\n function commonEventInfo(eventData, transform, x, y) {\n return {\n e: eventData,\n transform: transform,\n pointer: {\n x: x,\n y: y,\n }\n };\n }\n\n /**\n * Wrap an action handler with saving/restoring object position on the transform.\n * this is the code that permits to objects to keep their position while transforming.\n * @param {Function} actionHandler the function to wrap\n * @return {Function} a function with an action handler signature\n */\n function wrapWithFixedAnchor(actionHandler) {\n return function(eventData, transform, x, y) {\n var target = transform.target, centerPoint = target.getCenterPoint(),\n constraint = target.translateToOriginPoint(centerPoint, transform.originX, transform.originY),\n actionPerformed = actionHandler(eventData, transform, x, y);\n target.setPositionByOrigin(constraint, transform.originX, transform.originY);\n return actionPerformed;\n };\n }\n\n /**\n * Wrap an action handler with firing an event if the action is performed\n * @param {Function} actionHandler the function to wrap\n * @return {Function} a function with an action handler signature\n */\n function wrapWithFireEvent(eventName, actionHandler) {\n return function(eventData, transform, x, y) {\n var actionPerformed = actionHandler(eventData, transform, x, y);\n if (actionPerformed) {\n fireEvent(eventName, commonEventInfo(eventData, transform, x, y));\n }\n return actionPerformed;\n };\n }\n\n /**\n * Transforms a point described by x and y in a distance from the top left corner of the object\n * bounding box.\n * @param {Object} transform\n * @param {String} originX\n * @param {String} originY\n * @param {number} x\n * @param {number} y\n * @return {Fabric.Point} the normalized point\n */\n function getLocalPoint(transform, originX, originY, x, y) {\n var target = transform.target,\n control = target.controls[transform.corner],\n zoom = target.canvas.getZoom(),\n padding = target.padding / zoom,\n localPoint = target.toLocalPoint(new fabric.Point(x, y), originX, originY);\n if (localPoint.x >= padding) {\n localPoint.x -= padding;\n }\n if (localPoint.x <= -padding) {\n localPoint.x += padding;\n }\n if (localPoint.y >= padding) {\n localPoint.y -= padding;\n }\n if (localPoint.y <= padding) {\n localPoint.y += padding;\n }\n localPoint.x -= control.offsetX;\n localPoint.y -= control.offsetY;\n return localPoint;\n }\n\n /**\n * Detect if the fabric object is flipped on one side.\n * @param {fabric.Object} target\n * @return {Boolean} true if one flip, but not two.\n */\n function targetHasOneFlip(target) {\n return target.flipX !== target.flipY;\n }\n\n /**\n * Utility function to compensate the scale factor when skew is applied on both axes\n * @private\n */\n function compensateScaleForSkew(target, oppositeSkew, scaleToCompensate, axis, reference) {\n if (target[oppositeSkew] !== 0) {\n var newDim = target._getTransformedDimensions()[axis];\n var newValue = reference / newDim * target[scaleToCompensate];\n target.set(scaleToCompensate, newValue);\n }\n }\n\n /**\n * Action handler for skewing on the X axis\n * @private\n */\n function skewObjectX(eventData, transform, x, y) {\n var target = transform.target,\n // find how big the object would be, if there was no skewX. takes in account scaling\n dimNoSkew = target._getTransformedDimensions(0, target.skewY),\n localPoint = getLocalPoint(transform, transform.originX, transform.originY, x, y),\n // the mouse is in the center of the object, and we want it to stay there.\n // so the object will grow twice as much as the mouse.\n // this makes the skew growth to localPoint * 2 - dimNoSkew.\n totalSkewSize = Math.abs(localPoint.x * 2) - dimNoSkew.x,\n currentSkew = target.skewX, newSkew;\n if (totalSkewSize < 2) {\n // let's make it easy to go back to position 0.\n newSkew = 0;\n }\n else {\n newSkew = radiansToDegrees(\n Math.atan2((totalSkewSize / target.scaleX), (dimNoSkew.y / target.scaleY))\n );\n // now we have to find the sign of the skew.\n // it mostly depend on the origin of transformation.\n if (transform.originX === LEFT && transform.originY === BOTTOM) {\n newSkew = -newSkew;\n }\n if (transform.originX === RIGHT && transform.originY === TOP) {\n newSkew = -newSkew;\n }\n if (targetHasOneFlip(target)) {\n newSkew = -newSkew;\n }\n }\n var hasSkewed = currentSkew !== newSkew;\n if (hasSkewed) {\n var dimBeforeSkewing = target._getTransformedDimensions().y;\n target.set('skewX', newSkew);\n compensateScaleForSkew(target, 'skewY', 'scaleY', 'y', dimBeforeSkewing);\n }\n return hasSkewed;\n }\n\n /**\n * Action handler for skewing on the Y axis\n * @private\n */\n function skewObjectY(eventData, transform, x, y) {\n var target = transform.target,\n // find how big the object would be, if there was no skewX. takes in account scaling\n dimNoSkew = target._getTransformedDimensions(target.skewX, 0),\n localPoint = getLocalPoint(transform, transform.originX, transform.originY, x, y),\n // the mouse is in the center of the object, and we want it to stay there.\n // so the object will grow twice as much as the mouse.\n // this makes the skew growth to localPoint * 2 - dimNoSkew.\n totalSkewSize = Math.abs(localPoint.y * 2) - dimNoSkew.y,\n currentSkew = target.skewY, newSkew;\n if (totalSkewSize < 2) {\n // let's make it easy to go back to position 0.\n newSkew = 0;\n }\n else {\n newSkew = radiansToDegrees(\n Math.atan2((totalSkewSize / target.scaleY), (dimNoSkew.x / target.scaleX))\n );\n // now we have to find the sign of the skew.\n // it mostly depend on the origin of transformation.\n if (transform.originX === LEFT && transform.originY === BOTTOM) {\n newSkew = -newSkew;\n }\n if (transform.originX === RIGHT && transform.originY === TOP) {\n newSkew = -newSkew;\n }\n if (targetHasOneFlip(target)) {\n newSkew = -newSkew;\n }\n }\n var hasSkewed = currentSkew !== newSkew;\n if (hasSkewed) {\n var dimBeforeSkewing = target._getTransformedDimensions().x;\n target.set('skewY', newSkew);\n compensateScaleForSkew(target, 'skewX', 'scaleX', 'x', dimBeforeSkewing);\n }\n return hasSkewed;\n }\n\n /**\n * Wrapped Action handler for skewing on the Y axis, takes care of the\n * skew direction and determine the correct transform origin for the anchor point\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\n function skewHandlerX(eventData, transform, x, y) {\n // step1 figure out and change transform origin.\n // if skewX > 0 and originY bottom we anchor on right\n // if skewX > 0 and originY top we anchor on left\n // if skewX < 0 and originY bottom we anchor on left\n // if skewX < 0 and originY top we anchor on right\n // if skewX is 0, we look for mouse position to understand where are we going.\n var target = transform.target, currentSkew = target.skewX, originX, originY = transform.originY;\n if (target.lockSkewingX) {\n return false;\n }\n if (currentSkew === 0) {\n var localPointFromCenter = getLocalPoint(transform, CENTER, CENTER, x, y);\n if (localPointFromCenter.x > 0) {\n // we are pulling right, anchor left;\n originX = LEFT;\n }\n else {\n // we are pulling right, anchor right\n originX = RIGHT;\n }\n }\n else {\n if (currentSkew > 0) {\n originX = originY === TOP ? LEFT : RIGHT;\n }\n if (currentSkew < 0) {\n originX = originY === TOP ? RIGHT : LEFT;\n }\n // is the object flipped on one side only? swap the origin.\n if (targetHasOneFlip(target)) {\n originX = originX === LEFT ? RIGHT : LEFT;\n }\n }\n\n // once we have the origin, we find the anchor point\n transform.originX = originX;\n var finalHandler = wrapWithFireEvent('skewing', wrapWithFixedAnchor(skewObjectX));\n return finalHandler(eventData, transform, x, y);\n }\n\n /**\n * Wrapped Action handler for skewing on the Y axis, takes care of the\n * skew direction and determine the correct transform origin for the anchor point\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\n function skewHandlerY(eventData, transform, x, y) {\n // step1 figure out and change transform origin.\n // if skewY > 0 and originX left we anchor on top\n // if skewY > 0 and originX right we anchor on bottom\n // if skewY < 0 and originX left we anchor on bottom\n // if skewY < 0 and originX right we anchor on top\n // if skewY is 0, we look for mouse position to understand where are we going.\n var target = transform.target, currentSkew = target.skewY, originY, originX = transform.originX;\n if (target.lockSkewingY) {\n return false;\n }\n if (currentSkew === 0) {\n var localPointFromCenter = getLocalPoint(transform, CENTER, CENTER, x, y);\n if (localPointFromCenter.y > 0) {\n // we are pulling down, anchor up;\n originY = TOP;\n }\n else {\n // we are pulling up, anchor down\n originY = BOTTOM;\n }\n }\n else {\n if (currentSkew > 0) {\n originY = originX === LEFT ? TOP : BOTTOM;\n }\n if (currentSkew < 0) {\n originY = originX === LEFT ? BOTTOM : TOP;\n }\n // is the object flipped on one side only? swap the origin.\n if (targetHasOneFlip(target)) {\n originY = originY === TOP ? BOTTOM : TOP;\n }\n }\n\n // once we have the origin, we find the anchor point\n transform.originY = originY;\n var finalHandler = wrapWithFireEvent('skewing', wrapWithFixedAnchor(skewObjectY));\n return finalHandler(eventData, transform, x, y);\n }\n\n /**\n * Action handler for rotation and snapping, without anchor point.\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n * @private\n */\n function rotationWithSnapping(eventData, transform, x, y) {\n var t = transform,\n target = t.target,\n pivotPoint = target.translateToOriginPoint(target.getCenterPoint(), t.originX, t.originY);\n\n if (target.lockRotation) {\n return false;\n }\n\n var lastAngle = Math.atan2(t.ey - pivotPoint.y, t.ex - pivotPoint.x),\n curAngle = Math.atan2(y - pivotPoint.y, x - pivotPoint.x),\n angle = radiansToDegrees(curAngle - lastAngle + t.theta),\n hasRotated = true;\n\n if (target.snapAngle > 0) {\n var snapAngle = target.snapAngle,\n snapThreshold = target.snapThreshold || snapAngle,\n rightAngleLocked = Math.ceil(angle / snapAngle) * snapAngle,\n leftAngleLocked = Math.floor(angle / snapAngle) * snapAngle;\n\n if (Math.abs(angle - leftAngleLocked) < snapThreshold) {\n angle = leftAngleLocked;\n }\n else if (Math.abs(angle - rightAngleLocked) < snapThreshold) {\n angle = rightAngleLocked;\n }\n }\n\n // normalize angle to positive value\n if (angle < 0) {\n angle = 360 + angle;\n }\n angle %= 360;\n\n hasRotated = target.angle !== angle;\n target.angle = angle;\n return hasRotated;\n }\n\n /**\n * Basic scaling logic, reused with different constrain for scaling X,Y, freely or equally.\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @param {Object} options additional information for scaling\n * @param {String} options.by 'x', 'y', 'equally' or '' to indicate type of scaling\n * @return {Boolean} true if some change happened\n * @private\n */\n function scaleObject(eventData, transform, x, y, options) {\n options = options || {};\n var target = transform.target,\n lockScalingX = target.lockScalingX, lockScalingY = target.lockScalingY,\n by = options.by, newPoint, scaleX, scaleY, dim,\n scaleProportionally = scaleIsProportional(eventData, target),\n forbidScaling = scalingIsForbidden(target, by, scaleProportionally),\n signX, signY, gestureScale = transform.gestureScale;\n\n if (forbidScaling) {\n return false;\n }\n if (gestureScale) {\n scaleX = transform.scaleX * gestureScale;\n scaleY = transform.scaleY * gestureScale;\n }\n else {\n newPoint = getLocalPoint(transform, transform.originX, transform.originY, x, y);\n // use of sign: We use sign to detect change of direction of an action. sign usually change when\n // we cross the origin point with the mouse. So a scale flip for example. There is an issue when scaling\n // by center and scaling using one middle control ( default: mr, mt, ml, mb), the mouse movement can easily\n // cross many time the origin point and flip the object. so we need a way to filter out the noise.\n // This ternary here should be ok to filter out X scaling when we want Y only and vice versa.\n signX = by !== 'y' ? sign(newPoint.x) : 1;\n signY = by !== 'x' ? sign(newPoint.y) : 1;\n if (!transform.signX) {\n transform.signX = signX;\n }\n if (!transform.signY) {\n transform.signY = signY;\n }\n\n if (target.lockScalingFlip &&\n (transform.signX !== signX || transform.signY !== signY)\n ) {\n return false;\n }\n\n dim = target._getTransformedDimensions();\n // missing detection of flip and logic to switch the origin\n if (scaleProportionally && !by) {\n // uniform scaling\n var distance = Math.abs(newPoint.x) + Math.abs(newPoint.y),\n original = transform.original,\n originalDistance = Math.abs(dim.x * original.scaleX / target.scaleX) +\n Math.abs(dim.y * original.scaleY / target.scaleY),\n scale = distance / originalDistance;\n scaleX = original.scaleX * scale;\n scaleY = original.scaleY * scale;\n }\n else {\n scaleX = Math.abs(newPoint.x * target.scaleX / dim.x);\n scaleY = Math.abs(newPoint.y * target.scaleY / dim.y);\n }\n // if we are scaling by center, we need to double the scale\n if (isTransformCentered(transform)) {\n scaleX *= 2;\n scaleY *= 2;\n }\n if (transform.signX !== signX && by !== 'y') {\n transform.originX = opposite[transform.originX];\n scaleX *= -1;\n transform.signX = signX;\n }\n if (transform.signY !== signY && by !== 'x') {\n transform.originY = opposite[transform.originY];\n scaleY *= -1;\n transform.signY = signY;\n }\n }\n // minScale is taken are in the setter.\n var oldScaleX = target.scaleX, oldScaleY = target.scaleY;\n if (!by) {\n !lockScalingX && target.set('scaleX', scaleX);\n !lockScalingY && target.set('scaleY', scaleY);\n }\n else {\n // forbidden cases already handled on top here.\n by === 'x' && target.set('scaleX', scaleX);\n by === 'y' && target.set('scaleY', scaleY);\n }\n return oldScaleX !== target.scaleX || oldScaleY !== target.scaleY;\n }\n\n /**\n * Generic scaling logic, to scale from corners either equally or freely.\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\n function scaleObjectFromCorner(eventData, transform, x, y) {\n return scaleObject(eventData, transform, x, y);\n }\n\n /**\n * Scaling logic for the X axis.\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\n function scaleObjectX(eventData, transform, x, y) {\n return scaleObject(eventData, transform, x, y , { by: 'x' });\n }\n\n /**\n * Scaling logic for the Y axis.\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\n function scaleObjectY(eventData, transform, x, y) {\n return scaleObject(eventData, transform, x, y , { by: 'y' });\n }\n\n /**\n * Composed action handler to either scale Y or skew X\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\n function scalingYOrSkewingX(eventData, transform, x, y) {\n // ok some safety needed here.\n if (eventData[transform.target.canvas.altActionKey]) {\n return controls.skewHandlerX(eventData, transform, x, y);\n }\n return controls.scalingY(eventData, transform, x, y);\n }\n\n /**\n * Composed action handler to either scale X or skew Y\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\n function scalingXOrSkewingY(eventData, transform, x, y) {\n // ok some safety needed here.\n if (eventData[transform.target.canvas.altActionKey]) {\n return controls.skewHandlerY(eventData, transform, x, y);\n }\n return controls.scalingX(eventData, transform, x, y);\n }\n\n /**\n * Action handler to change textbox width\n * Needs to be wrapped with `wrapWithFixedAnchor` to be effective\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if some change happened\n */\n function changeWidth(eventData, transform, x, y) {\n var target = transform.target, localPoint = getLocalPoint(transform, transform.originX, transform.originY, x, y),\n strokePadding = target.strokeWidth / (target.strokeUniform ? target.scaleX : 1),\n multiplier = isTransformCentered(transform) ? 2 : 1,\n oldWidth = target.width,\n newWidth = Math.abs(localPoint.x * multiplier / target.scaleX) - strokePadding;\n target.set('width', Math.max(newWidth, 0));\n return oldWidth !== newWidth;\n }\n\n /**\n * Action handler\n * @private\n * @param {Event} eventData javascript event that is doing the transform\n * @param {Object} transform javascript object containing a series of information around the current transform\n * @param {number} x current mouse x position, canvas normalized\n * @param {number} y current mouse y position, canvas normalized\n * @return {Boolean} true if the translation occurred\n */\n function dragHandler(eventData, transform, x, y) {\n var target = transform.target,\n newLeft = x - transform.offsetX,\n newTop = y - transform.offsetY,\n moveX = !target.get('lockMovementX') && target.left !== newLeft,\n moveY = !target.get('lockMovementY') && target.top !== newTop;\n moveX && target.set('left', newLeft);\n moveY && target.set('top', newTop);\n if (moveX || moveY) {\n fireEvent('moving', commonEventInfo(eventData, transform, x, y));\n }\n return moveX || moveY;\n }\n\n controls.scaleCursorStyleHandler = scaleCursorStyleHandler;\n controls.skewCursorStyleHandler = skewCursorStyleHandler;\n controls.scaleSkewCursorStyleHandler = scaleSkewCursorStyleHandler;\n controls.rotationWithSnapping = wrapWithFireEvent('rotating', wrapWithFixedAnchor(rotationWithSnapping));\n controls.scalingEqually = wrapWithFireEvent('scaling', wrapWithFixedAnchor( scaleObjectFromCorner));\n controls.scalingX = wrapWithFireEvent('scaling', wrapWithFixedAnchor(scaleObjectX));\n controls.scalingY = wrapWithFireEvent('scaling', wrapWithFixedAnchor(scaleObjectY));\n controls.scalingYOrSkewingX = scalingYOrSkewingX;\n controls.scalingXOrSkewingY = scalingXOrSkewingY;\n controls.changeWidth = wrapWithFireEvent('resizing', wrapWithFixedAnchor(changeWidth));\n controls.skewHandlerX = skewHandlerX;\n controls.skewHandlerY = skewHandlerY;\n controls.dragHandler = dragHandler;\n controls.scaleOrSkewActionName = scaleOrSkewActionName;\n controls.rotationStyleHandler = rotationStyleHandler;\n controls.fireEvent = fireEvent;\n controls.wrapWithFixedAnchor = wrapWithFixedAnchor;\n controls.wrapWithFireEvent = wrapWithFireEvent;\n controls.getLocalPoint = getLocalPoint;\n fabric.controlsUtils = controls;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n degreesToRadians = fabric.util.degreesToRadians,\n controls = fabric.controlsUtils;\n\n /**\n * Render a round control, as per fabric features.\n * This function is written to respect object properties like transparentCorners, cornerSize\n * cornerColor, cornerStrokeColor\n * plus the addition of offsetY and offsetX.\n * @param {CanvasRenderingContext2D} ctx context to render on\n * @param {Number} left x coordinate where the control center should be\n * @param {Number} top y coordinate where the control center should be\n * @param {Object} styleOverride override for fabric.Object controls style\n * @param {fabric.Object} fabricObject the fabric object for which we are rendering controls\n */\n function renderCircleControl (ctx, left, top, styleOverride, fabricObject) {\n styleOverride = styleOverride || {};\n var xSize = this.sizeX || styleOverride.cornerSize || fabricObject.cornerSize,\n ySize = this.sizeY || styleOverride.cornerSize || fabricObject.cornerSize,\n transparentCorners = typeof styleOverride.transparentCorners !== 'undefined' ?\n styleOverride.transparentCorners : fabricObject.transparentCorners,\n methodName = transparentCorners ? 'stroke' : 'fill',\n stroke = !transparentCorners && (styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor),\n myLeft = left,\n myTop = top, size;\n ctx.save();\n ctx.fillStyle = styleOverride.cornerColor || fabricObject.cornerColor;\n ctx.strokeStyle = styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor;\n // as soon as fabric react v5, remove ie11, use proper ellipse code.\n if (xSize > ySize) {\n size = xSize;\n ctx.scale(1.0, ySize / xSize);\n myTop = top * xSize / ySize;\n }\n else if (ySize > xSize) {\n size = ySize;\n ctx.scale(xSize / ySize, 1.0);\n myLeft = left * ySize / xSize;\n }\n else {\n size = xSize;\n }\n // this is still wrong\n ctx.lineWidth = 1;\n ctx.beginPath();\n ctx.arc(myLeft, myTop, size / 2, 0, 2 * Math.PI, false);\n ctx[methodName]();\n if (stroke) {\n ctx.stroke();\n }\n ctx.restore();\n }\n\n /**\n * Render a square control, as per fabric features.\n * This function is written to respect object properties like transparentCorners, cornerSize\n * cornerColor, cornerStrokeColor\n * plus the addition of offsetY and offsetX.\n * @param {CanvasRenderingContext2D} ctx context to render on\n * @param {Number} left x coordinate where the control center should be\n * @param {Number} top y coordinate where the control center should be\n * @param {Object} styleOverride override for fabric.Object controls style\n * @param {fabric.Object} fabricObject the fabric object for which we are rendering controls\n */\n function renderSquareControl(ctx, left, top, styleOverride, fabricObject) {\n styleOverride = styleOverride || {};\n var xSize = this.sizeX || styleOverride.cornerSize || fabricObject.cornerSize,\n ySize = this.sizeY || styleOverride.cornerSize || fabricObject.cornerSize,\n transparentCorners = typeof styleOverride.transparentCorners !== 'undefined' ?\n styleOverride.transparentCorners : fabricObject.transparentCorners,\n methodName = transparentCorners ? 'stroke' : 'fill',\n stroke = !transparentCorners && (\n styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor\n ), xSizeBy2 = xSize / 2, ySizeBy2 = ySize / 2;\n ctx.save();\n ctx.fillStyle = styleOverride.cornerColor || fabricObject.cornerColor;\n ctx.strokeStyle = styleOverride.cornerStrokeColor || fabricObject.cornerStrokeColor;\n // this is still wrong\n ctx.lineWidth = 1;\n ctx.translate(left, top);\n ctx.rotate(degreesToRadians(fabricObject.angle));\n // this does not work, and fixed with ( && ) does not make sense.\n // to have real transparent corners we need the controls on upperCanvas\n // transparentCorners || ctx.clearRect(-xSizeBy2, -ySizeBy2, xSize, ySize);\n ctx[methodName + 'Rect'](-xSizeBy2, -ySizeBy2, xSize, ySize);\n if (stroke) {\n ctx.strokeRect(-xSizeBy2, -ySizeBy2, xSize, ySize);\n }\n ctx.restore();\n }\n\n controls.renderCircleControl = renderCircleControl;\n controls.renderSquareControl = renderSquareControl;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n function Control(options) {\n for (var i in options) {\n this[i] = options[i];\n }\n }\n\n fabric.Control = Control;\n\n fabric.Control.prototype = /** @lends fabric.Control.prototype */ {\n\n /**\n * keep track of control visibility.\n * mainly for backward compatibility.\n * if you do not want to see a control, you can remove it\n * from the controlset.\n * @type {Boolean}\n * @default true\n */\n visible: true,\n\n /**\n * Name of the action that the control will likely execute.\n * This is optional. FabricJS uses to identify what the user is doing for some\n * extra optimizations. If you are writing a custom control and you want to know\n * somewhere else in the code what is going on, you can use this string here.\n * you can also provide a custom getActionName if your control run multiple actions\n * depending on some external state.\n * default to scale since is the most common, used on 4 corners by default\n * @type {String}\n * @default 'scale'\n */\n actionName: 'scale',\n\n /**\n * Drawing angle of the control.\n * NOT used for now, but name marked as needed for internal logic\n * example: to reuse the same drawing function for different rotated controls\n * @type {Number}\n * @default 0\n */\n angle: 0,\n\n /**\n * Relative position of the control. X\n * 0,0 is the center of the Object, while -0.5 (left) or 0.5 (right) are the extremities\n * of the bounding box.\n * @type {Number}\n * @default 0\n */\n x: 0,\n\n /**\n * Relative position of the control. Y\n * 0,0 is the center of the Object, while -0.5 (top) or 0.5 (bottom) are the extremities\n * of the bounding box.\n * @type {Number}\n * @default 0\n */\n y: 0,\n\n /**\n * Horizontal offset of the control from the defined position. In pixels\n * Positive offset moves the control to the right, negative to the left.\n * It used when you want to have position of control that does not scale with\n * the bounding box. Example: rotation control is placed at x:0, y: 0.5 on\n * the boundindbox, with an offset of 30 pixels vertically. Those 30 pixels will\n * stay 30 pixels no matter how the object is big. Another example is having 2\n * controls in the corner, that stay in the same position when the object scale.\n * of the bounding box.\n * @type {Number}\n * @default 0\n */\n offsetX: 0,\n\n /**\n * Vertical offset of the control from the defined position. In pixels\n * Positive offset moves the control to the bottom, negative to the top.\n * @type {Number}\n * @default 0\n */\n offsetY: 0,\n\n /**\n * Sets the length of the control. If null, defaults to object's cornerSize.\n * Expects both sizeX and sizeY to be set when set.\n * @type {?Number}\n * @default null\n */\n sizeX: null,\n\n /**\n * Sets the height of the control. If null, defaults to object's cornerSize.\n * Expects both sizeX and sizeY to be set when set.\n * @type {?Number}\n * @default null\n */\n sizeY: null,\n\n /**\n * Sets the length of the touch area of the control. If null, defaults to object's touchCornerSize.\n * Expects both touchSizeX and touchSizeY to be set when set.\n * @type {?Number}\n * @default null\n */\n touchSizeX: null,\n\n /**\n * Sets the height of the touch area of the control. If null, defaults to object's touchCornerSize.\n * Expects both touchSizeX and touchSizeY to be set when set.\n * @type {?Number}\n * @default null\n */\n touchSizeY: null,\n\n /**\n * Css cursor style to display when the control is hovered.\n * if the method `cursorStyleHandler` is provided, this property is ignored.\n * @type {String}\n * @default 'crosshair'\n */\n cursorStyle: 'crosshair',\n\n /**\n * If controls has an offsetY or offsetX, draw a line that connects\n * the control to the bounding box\n * @type {Boolean}\n * @default false\n */\n withConnection: false,\n\n /**\n * The control actionHandler, provide one to handle action ( control being moved )\n * @param {Event} eventData the native mouse event\n * @param {Object} transformData properties of the current transform\n * @param {Number} x x position of the cursor\n * @param {Number} y y position of the cursor\n * @return {Boolean} true if the action/event modified the object\n */\n actionHandler: function(/* eventData, transformData, x, y */) { },\n\n /**\n * The control handler for mouse down, provide one to handle mouse down on control\n * @param {Event} eventData the native mouse event\n * @param {Object} transformData properties of the current transform\n * @param {Number} x x position of the cursor\n * @param {Number} y y position of the cursor\n * @return {Boolean} true if the action/event modified the object\n */\n mouseDownHandler: function(/* eventData, transformData, x, y */) { },\n\n /**\n * The control mouseUpHandler, provide one to handle an effect on mouse up.\n * @param {Event} eventData the native mouse event\n * @param {Object} transformData properties of the current transform\n * @param {Number} x x position of the cursor\n * @param {Number} y y position of the cursor\n * @return {Boolean} true if the action/event modified the object\n */\n mouseUpHandler: function(/* eventData, transformData, x, y */) { },\n\n /**\n * Returns control actionHandler\n * @param {Event} eventData the native mouse event\n * @param {fabric.Object} fabricObject on which the control is displayed\n * @param {fabric.Control} control control for which the action handler is being asked\n * @return {Function} the action handler\n */\n getActionHandler: function(/* eventData, fabricObject, control */) {\n return this.actionHandler;\n },\n\n /**\n * Returns control mouseDown handler\n * @param {Event} eventData the native mouse event\n * @param {fabric.Object} fabricObject on which the control is displayed\n * @param {fabric.Control} control control for which the action handler is being asked\n * @return {Function} the action handler\n */\n getMouseDownHandler: function(/* eventData, fabricObject, control */) {\n return this.mouseDownHandler;\n },\n\n /**\n * Returns control mouseUp handler\n * @param {Event} eventData the native mouse event\n * @param {fabric.Object} fabricObject on which the control is displayed\n * @param {fabric.Control} control control for which the action handler is being asked\n * @return {Function} the action handler\n */\n getMouseUpHandler: function(/* eventData, fabricObject, control */) {\n return this.mouseUpHandler;\n },\n\n /**\n * Returns control cursorStyle for css using cursorStyle. If you need a more elaborate\n * function you can pass one in the constructor\n * the cursorStyle property\n * @param {Event} eventData the native mouse event\n * @param {fabric.Control} control the current control ( likely this)\n * @param {fabric.Object} object on which the control is displayed\n * @return {String}\n */\n cursorStyleHandler: function(eventData, control /* fabricObject */) {\n return control.cursorStyle;\n },\n\n /**\n * Returns the action name. The basic implementation just return the actionName property.\n * @param {Event} eventData the native mouse event\n * @param {fabric.Control} control the current control ( likely this)\n * @param {fabric.Object} object on which the control is displayed\n * @return {String}\n */\n getActionName: function(eventData, control /* fabricObject */) {\n return control.actionName;\n },\n\n /**\n * Returns controls visibility\n * @param {fabric.Object} object on which the control is displayed\n * @param {String} controlKey key where the control is memorized on the\n * @return {Boolean}\n */\n getVisibility: function(fabricObject, controlKey) {\n var objectVisibility = fabricObject._controlsVisibility;\n if (objectVisibility && typeof objectVisibility[controlKey] !== 'undefined') {\n return objectVisibility[controlKey];\n }\n return this.visible;\n },\n\n /**\n * Sets controls visibility\n * @param {Boolean} visibility for the object\n * @return {Void}\n */\n setVisibility: function(visibility /* name, fabricObject */) {\n this.visible = visibility;\n },\n\n\n positionHandler: function(dim, finalMatrix /*, fabricObject, currentControl */) {\n var point = fabric.util.transformPoint({\n x: this.x * dim.x + this.offsetX,\n y: this.y * dim.y + this.offsetY }, finalMatrix);\n return point;\n },\n\n /**\n * Returns the coords for this control based on object values.\n * @param {Number} objectAngle angle from the fabric object holding the control\n * @param {Number} objectCornerSize cornerSize from the fabric object holding the control (or touchCornerSize if\n * isTouch is true)\n * @param {Number} centerX x coordinate where the control center should be\n * @param {Number} centerY y coordinate where the control center should be\n * @param {boolean} isTouch true if touch corner, false if normal corner\n */\n calcCornerCoords: function(objectAngle, objectCornerSize, centerX, centerY, isTouch) {\n var cosHalfOffset,\n sinHalfOffset,\n cosHalfOffsetComp,\n sinHalfOffsetComp,\n xSize = (isTouch) ? this.touchSizeX : this.sizeX,\n ySize = (isTouch) ? this.touchSizeY : this.sizeY;\n if (xSize && ySize && xSize !== ySize) {\n // handle rectangular corners\n var controlTriangleAngle = Math.atan2(ySize, xSize);\n var cornerHypotenuse = Math.sqrt(xSize * xSize + ySize * ySize) / 2;\n var newTheta = controlTriangleAngle - fabric.util.degreesToRadians(objectAngle);\n var newThetaComp = Math.PI / 2 - controlTriangleAngle - fabric.util.degreesToRadians(objectAngle);\n cosHalfOffset = cornerHypotenuse * fabric.util.cos(newTheta);\n sinHalfOffset = cornerHypotenuse * fabric.util.sin(newTheta);\n // use complementary angle for two corners\n cosHalfOffsetComp = cornerHypotenuse * fabric.util.cos(newThetaComp);\n sinHalfOffsetComp = cornerHypotenuse * fabric.util.sin(newThetaComp);\n }\n else {\n // handle square corners\n // use default object corner size unless size is defined\n var cornerSize = (xSize && ySize) ? xSize : objectCornerSize;\n /* 0.7071067812 stands for sqrt(2)/2 */\n cornerHypotenuse = cornerSize * 0.7071067812;\n // complementary angles are equal since they're both 45 degrees\n var newTheta = fabric.util.degreesToRadians(45 - objectAngle);\n cosHalfOffset = cosHalfOffsetComp = cornerHypotenuse * fabric.util.cos(newTheta);\n sinHalfOffset = sinHalfOffsetComp = cornerHypotenuse * fabric.util.sin(newTheta);\n }\n\n return {\n tl: {\n x: centerX - sinHalfOffsetComp,\n y: centerY - cosHalfOffsetComp,\n },\n tr: {\n x: centerX + cosHalfOffset,\n y: centerY - sinHalfOffset,\n },\n bl: {\n x: centerX - cosHalfOffset,\n y: centerY + sinHalfOffset,\n },\n br: {\n x: centerX + sinHalfOffsetComp,\n y: centerY + cosHalfOffsetComp,\n },\n };\n },\n\n /**\n * Render function for the control.\n * When this function runs the context is unscaled. unrotate. Just retina scaled.\n * all the functions will have to translate to the point left,top before starting Drawing\n * if they want to draw a control where the position is detected.\n * left and top are the result of the positionHandler function\n * @param {RenderingContext2D} ctx the context where the control will be drawn\n * @param {Number} left position of the canvas where we are about to render the control.\n * @param {Number} top position of the canvas where we are about to render the control.\n * @param {Object} styleOverride\n * @param {fabric.Object} fabricObject the object where the control is about to be rendered\n */\n render: function(ctx, left, top, styleOverride, fabricObject) {\n styleOverride = styleOverride || {};\n switch (styleOverride.cornerStyle || fabricObject.cornerStyle) {\n case 'circle':\n fabric.controlsUtils.renderCircleControl.call(this, ctx, left, top, styleOverride, fabricObject);\n break;\n default:\n fabric.controlsUtils.renderSquareControl.call(this, ctx, left, top, styleOverride, fabricObject);\n }\n },\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n /* _FROM_SVG_START_ */\n function getColorStop(el, multiplier) {\n var style = el.getAttribute('style'),\n offset = el.getAttribute('offset') || 0,\n color, colorAlpha, opacity, i;\n\n // convert percents to absolute values\n offset = parseFloat(offset) / (/%$/.test(offset) ? 100 : 1);\n offset = offset < 0 ? 0 : offset > 1 ? 1 : offset;\n if (style) {\n var keyValuePairs = style.split(/\\s*;\\s*/);\n\n if (keyValuePairs[keyValuePairs.length - 1] === '') {\n keyValuePairs.pop();\n }\n\n for (i = keyValuePairs.length; i--; ) {\n\n var split = keyValuePairs[i].split(/\\s*:\\s*/),\n key = split[0].trim(),\n value = split[1].trim();\n\n if (key === 'stop-color') {\n color = value;\n }\n else if (key === 'stop-opacity') {\n opacity = value;\n }\n }\n }\n\n if (!color) {\n color = el.getAttribute('stop-color') || 'rgb(0,0,0)';\n }\n if (!opacity) {\n opacity = el.getAttribute('stop-opacity');\n }\n\n color = new fabric.Color(color);\n colorAlpha = color.getAlpha();\n opacity = isNaN(parseFloat(opacity)) ? 1 : parseFloat(opacity);\n opacity *= colorAlpha * multiplier;\n\n return {\n offset: offset,\n color: color.toRgb(),\n opacity: opacity\n };\n }\n\n function getLinearCoords(el) {\n return {\n x1: el.getAttribute('x1') || 0,\n y1: el.getAttribute('y1') || 0,\n x2: el.getAttribute('x2') || '100%',\n y2: el.getAttribute('y2') || 0\n };\n }\n\n function getRadialCoords(el) {\n return {\n x1: el.getAttribute('fx') || el.getAttribute('cx') || '50%',\n y1: el.getAttribute('fy') || el.getAttribute('cy') || '50%',\n r1: 0,\n x2: el.getAttribute('cx') || '50%',\n y2: el.getAttribute('cy') || '50%',\n r2: el.getAttribute('r') || '50%'\n };\n }\n /* _FROM_SVG_END_ */\n\n var clone = fabric.util.object.clone;\n\n /**\n * Gradient class\n * @class fabric.Gradient\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#gradients}\n * @see {@link fabric.Gradient#initialize} for constructor definition\n */\n fabric.Gradient = fabric.util.createClass(/** @lends fabric.Gradient.prototype */ {\n\n /**\n * Horizontal offset for aligning gradients coming from SVG when outside pathgroups\n * @type Number\n * @default 0\n */\n offsetX: 0,\n\n /**\n * Vertical offset for aligning gradients coming from SVG when outside pathgroups\n * @type Number\n * @default 0\n */\n offsetY: 0,\n\n /**\n * A transform matrix to apply to the gradient before painting.\n * Imported from svg gradients, is not applied with the current transform in the center.\n * Before this transform is applied, the origin point is at the top left corner of the object\n * plus the addition of offsetY and offsetX.\n * @type Number[]\n * @default null\n */\n gradientTransform: null,\n\n /**\n * coordinates units for coords.\n * If `pixels`, the number of coords are in the same unit of width / height.\n * If set as `percentage` the coords are still a number, but 1 means 100% of width\n * for the X and 100% of the height for the y. It can be bigger than 1 and negative.\n * allowed values pixels or percentage.\n * @type String\n * @default 'pixels'\n */\n gradientUnits: 'pixels',\n\n /**\n * Gradient type linear or radial\n * @type String\n * @default 'pixels'\n */\n type: 'linear',\n\n /**\n * Constructor\n * @param {Object} options Options object with type, coords, gradientUnits and colorStops\n * @param {Object} [options.type] gradient type linear or radial\n * @param {Object} [options.gradientUnits] gradient units\n * @param {Object} [options.offsetX] SVG import compatibility\n * @param {Object} [options.offsetY] SVG import compatibility\n * @param {Object[]} options.colorStops contains the colorstops.\n * @param {Object} options.coords contains the coords of the gradient\n * @param {Number} [options.coords.x1] X coordiante of the first point for linear or of the focal point for radial\n * @param {Number} [options.coords.y1] Y coordiante of the first point for linear or of the focal point for radial\n * @param {Number} [options.coords.x2] X coordiante of the second point for linear or of the center point for radial\n * @param {Number} [options.coords.y2] Y coordiante of the second point for linear or of the center point for radial\n * @param {Number} [options.coords.r1] only for radial gradient, radius of the inner circle\n * @param {Number} [options.coords.r2] only for radial gradient, radius of the external circle\n * @return {fabric.Gradient} thisArg\n */\n initialize: function(options) {\n options || (options = { });\n options.coords || (options.coords = { });\n\n var coords, _this = this;\n\n // sets everything, then coords and colorstops get sets again\n Object.keys(options).forEach(function(option) {\n _this[option] = options[option];\n });\n\n if (this.id) {\n this.id += '_' + fabric.Object.__uid++;\n }\n else {\n this.id = fabric.Object.__uid++;\n }\n\n coords = {\n x1: options.coords.x1 || 0,\n y1: options.coords.y1 || 0,\n x2: options.coords.x2 || 0,\n y2: options.coords.y2 || 0\n };\n\n if (this.type === 'radial') {\n coords.r1 = options.coords.r1 || 0;\n coords.r2 = options.coords.r2 || 0;\n }\n\n this.coords = coords;\n this.colorStops = options.colorStops.slice();\n },\n\n /**\n * Adds another colorStop\n * @param {Object} colorStop Object with offset and color\n * @return {fabric.Gradient} thisArg\n */\n addColorStop: function(colorStops) {\n for (var position in colorStops) {\n var color = new fabric.Color(colorStops[position]);\n this.colorStops.push({\n offset: parseFloat(position),\n color: color.toRgb(),\n opacity: color.getAlpha()\n });\n }\n return this;\n },\n\n /**\n * Returns object representation of a gradient\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object}\n */\n toObject: function(propertiesToInclude) {\n var object = {\n type: this.type,\n coords: this.coords,\n colorStops: this.colorStops,\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n gradientUnits: this.gradientUnits,\n gradientTransform: this.gradientTransform ? this.gradientTransform.concat() : this.gradientTransform\n };\n fabric.util.populateWithProperties(this, object, propertiesToInclude);\n\n return object;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of an gradient\n * @param {Object} object Object to create a gradient for\n * @return {String} SVG representation of an gradient (linear/radial)\n */\n toSVG: function(object, options) {\n var coords = clone(this.coords, true), i, len, options = options || {},\n markup, commonAttributes, colorStops = clone(this.colorStops, true),\n needsSwap = coords.r1 > coords.r2,\n transform = this.gradientTransform ? this.gradientTransform.concat() : fabric.iMatrix.concat(),\n offsetX = -this.offsetX, offsetY = -this.offsetY,\n withViewport = !!options.additionalTransform,\n gradientUnits = this.gradientUnits === 'pixels' ? 'userSpaceOnUse' : 'objectBoundingBox';\n // colorStops must be sorted ascending\n colorStops.sort(function(a, b) {\n return a.offset - b.offset;\n });\n\n if (gradientUnits === 'objectBoundingBox') {\n offsetX /= object.width;\n offsetY /= object.height;\n }\n else {\n offsetX += object.width / 2;\n offsetY += object.height / 2;\n }\n if (object.type === 'path' && this.gradientUnits !== 'percentage') {\n offsetX -= object.pathOffset.x;\n offsetY -= object.pathOffset.y;\n }\n\n\n transform[4] -= offsetX;\n transform[5] -= offsetY;\n\n commonAttributes = 'id=\"SVGID_' + this.id +\n '\" gradientUnits=\"' + gradientUnits + '\"';\n commonAttributes += ' gradientTransform=\"' + (withViewport ?\n options.additionalTransform + ' ' : '') + fabric.util.matrixToSVG(transform) + '\" ';\n\n if (this.type === 'linear') {\n markup = [\n '\\n'\n ];\n }\n else if (this.type === 'radial') {\n // svg radial gradient has just 1 radius. the biggest.\n markup = [\n '\\n'\n ];\n }\n\n if (this.type === 'radial') {\n if (needsSwap) {\n // svg goes from internal to external radius. if radius are inverted, swap color stops.\n colorStops = colorStops.concat();\n colorStops.reverse();\n for (i = 0, len = colorStops.length; i < len; i++) {\n colorStops[i].offset = 1 - colorStops[i].offset;\n }\n }\n var minRadius = Math.min(coords.r1, coords.r2);\n if (minRadius > 0) {\n // i have to shift all colorStops and add new one in 0.\n var maxRadius = Math.max(coords.r1, coords.r2),\n percentageShift = minRadius / maxRadius;\n for (i = 0, len = colorStops.length; i < len; i++) {\n colorStops[i].offset += percentageShift * (1 - colorStops[i].offset);\n }\n }\n }\n\n for (i = 0, len = colorStops.length; i < len; i++) {\n var colorStop = colorStops[i];\n markup.push(\n '\\n'\n );\n }\n\n markup.push((this.type === 'linear' ? '\\n' : '\\n'));\n\n return markup.join('');\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns an instance of CanvasGradient\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @return {CanvasGradient}\n */\n toLive: function(ctx) {\n var gradient, coords = fabric.util.object.clone(this.coords), i, len;\n\n if (!this.type) {\n return;\n }\n\n if (this.type === 'linear') {\n gradient = ctx.createLinearGradient(\n coords.x1, coords.y1, coords.x2, coords.y2);\n }\n else if (this.type === 'radial') {\n gradient = ctx.createRadialGradient(\n coords.x1, coords.y1, coords.r1, coords.x2, coords.y2, coords.r2);\n }\n\n for (i = 0, len = this.colorStops.length; i < len; i++) {\n var color = this.colorStops[i].color,\n opacity = this.colorStops[i].opacity,\n offset = this.colorStops[i].offset;\n\n if (typeof opacity !== 'undefined') {\n color = new fabric.Color(color).setAlpha(opacity).toRgba();\n }\n gradient.addColorStop(offset, color);\n }\n\n return gradient;\n }\n });\n\n fabric.util.object.extend(fabric.Gradient, {\n\n /* _FROM_SVG_START_ */\n /**\n * Returns {@link fabric.Gradient} instance from an SVG element\n * @static\n * @memberOf fabric.Gradient\n * @param {SVGGradientElement} el SVG gradient element\n * @param {fabric.Object} instance\n * @param {String} opacityAttr A fill-opacity or stroke-opacity attribute to multiply to each stop's opacity.\n * @param {Object} svgOptions an object containing the size of the SVG in order to parse correctly gradients\n * that uses gradientUnits as 'userSpaceOnUse' and percentages.\n * @param {Object.number} viewBoxWidth width part of the viewBox attribute on svg\n * @param {Object.number} viewBoxHeight height part of the viewBox attribute on svg\n * @param {Object.number} width width part of the svg tag if viewBox is not specified\n * @param {Object.number} height height part of the svg tag if viewBox is not specified\n * @return {fabric.Gradient} Gradient instance\n * @see http://www.w3.org/TR/SVG/pservers.html#LinearGradientElement\n * @see http://www.w3.org/TR/SVG/pservers.html#RadialGradientElement\n */\n fromElement: function(el, instance, opacityAttr, svgOptions) {\n /**\n * @example:\n *\n * \n * \n * \n * \n *\n * OR\n *\n * \n * \n * \n * \n *\n * OR\n *\n * \n * \n * \n * \n * \n *\n * OR\n *\n * \n * \n * \n * \n * \n *\n */\n\n var multiplier = parseFloat(opacityAttr) / (/%$/.test(opacityAttr) ? 100 : 1);\n multiplier = multiplier < 0 ? 0 : multiplier > 1 ? 1 : multiplier;\n if (isNaN(multiplier)) {\n multiplier = 1;\n }\n\n var colorStopEls = el.getElementsByTagName('stop'),\n type,\n gradientUnits = el.getAttribute('gradientUnits') === 'userSpaceOnUse' ?\n 'pixels' : 'percentage',\n gradientTransform = el.getAttribute('gradientTransform') || '',\n colorStops = [],\n coords, i, offsetX = 0, offsetY = 0,\n transformMatrix;\n if (el.nodeName === 'linearGradient' || el.nodeName === 'LINEARGRADIENT') {\n type = 'linear';\n coords = getLinearCoords(el);\n }\n else {\n type = 'radial';\n coords = getRadialCoords(el);\n }\n\n for (i = colorStopEls.length; i--; ) {\n colorStops.push(getColorStop(colorStopEls[i], multiplier));\n }\n\n transformMatrix = fabric.parseTransformAttribute(gradientTransform);\n\n __convertPercentUnitsToValues(instance, coords, svgOptions, gradientUnits);\n\n if (gradientUnits === 'pixels') {\n offsetX = -instance.left;\n offsetY = -instance.top;\n }\n\n var gradient = new fabric.Gradient({\n id: el.getAttribute('id'),\n type: type,\n coords: coords,\n colorStops: colorStops,\n gradientUnits: gradientUnits,\n gradientTransform: transformMatrix,\n offsetX: offsetX,\n offsetY: offsetY,\n });\n\n return gradient;\n }\n /* _FROM_SVG_END_ */\n });\n\n /**\n * @private\n */\n function __convertPercentUnitsToValues(instance, options, svgOptions, gradientUnits) {\n var propValue, finalValue;\n Object.keys(options).forEach(function(prop) {\n propValue = options[prop];\n if (propValue === 'Infinity') {\n finalValue = 1;\n }\n else if (propValue === '-Infinity') {\n finalValue = 0;\n }\n else {\n finalValue = parseFloat(options[prop], 10);\n if (typeof propValue === 'string' && /^(\\d+\\.\\d+)%|(\\d+)%$/.test(propValue)) {\n finalValue *= 0.01;\n if (gradientUnits === 'pixels') {\n // then we need to fix those percentages here in svg parsing\n if (prop === 'x1' || prop === 'x2' || prop === 'r2') {\n finalValue *= svgOptions.viewBoxWidth || svgOptions.width;\n }\n if (prop === 'y1' || prop === 'y2') {\n finalValue *= svgOptions.viewBoxHeight || svgOptions.height;\n }\n }\n }\n }\n options[prop] = finalValue;\n });\n }\n})();\n\n\n(function() {\n\n 'use strict';\n\n var toFixed = fabric.util.toFixed;\n\n /**\n * Pattern class\n * @class fabric.Pattern\n * @see {@link http://fabricjs.com/patterns|Pattern demo}\n * @see {@link http://fabricjs.com/dynamic-patterns|DynamicPattern demo}\n * @see {@link fabric.Pattern#initialize} for constructor definition\n */\n\n\n fabric.Pattern = fabric.util.createClass(/** @lends fabric.Pattern.prototype */ {\n\n /**\n * Repeat property of a pattern (one of repeat, repeat-x, repeat-y or no-repeat)\n * @type String\n * @default\n */\n repeat: 'repeat',\n\n /**\n * Pattern horizontal offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetX: 0,\n\n /**\n * Pattern vertical offset from object's left/top corner\n * @type Number\n * @default\n */\n offsetY: 0,\n\n /**\n * crossOrigin value (one of \"\", \"anonymous\", \"use-credentials\")\n * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes\n * @type String\n * @default\n */\n crossOrigin: '',\n\n /**\n * transform matrix to change the pattern, imported from svgs.\n * @type Array\n * @default\n */\n patternTransform: null,\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @param {Function} [callback] function to invoke after callback init.\n * @return {fabric.Pattern} thisArg\n */\n initialize: function(options, callback) {\n options || (options = { });\n\n this.id = fabric.Object.__uid++;\n this.setOptions(options);\n if (!options.source || (options.source && typeof options.source !== 'string')) {\n callback && callback(this);\n return;\n }\n else {\n // img src string\n var _this = this;\n this.source = fabric.util.createImage();\n fabric.util.loadImage(options.source, function(img, isError) {\n _this.source = img;\n callback && callback(_this, isError);\n }, null, this.crossOrigin);\n }\n },\n\n /**\n * Returns object representation of a pattern\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of a pattern instance\n */\n toObject: function(propertiesToInclude) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n source, object;\n\n // element\n if (typeof this.source.src === 'string') {\n source = this.source.src;\n }\n // element\n else if (typeof this.source === 'object' && this.source.toDataURL) {\n source = this.source.toDataURL();\n }\n\n object = {\n type: 'pattern',\n source: source,\n repeat: this.repeat,\n crossOrigin: this.crossOrigin,\n offsetX: toFixed(this.offsetX, NUM_FRACTION_DIGITS),\n offsetY: toFixed(this.offsetY, NUM_FRACTION_DIGITS),\n patternTransform: this.patternTransform ? this.patternTransform.concat() : null\n };\n fabric.util.populateWithProperties(this, object, propertiesToInclude);\n\n return object;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of a pattern\n * @param {fabric.Object} object\n * @return {String} SVG representation of a pattern\n */\n toSVG: function(object) {\n var patternSource = typeof this.source === 'function' ? this.source() : this.source,\n patternWidth = patternSource.width / object.width,\n patternHeight = patternSource.height / object.height,\n patternOffsetX = this.offsetX / object.width,\n patternOffsetY = this.offsetY / object.height,\n patternImgSrc = '';\n if (this.repeat === 'repeat-x' || this.repeat === 'no-repeat') {\n patternHeight = 1;\n if (patternOffsetY) {\n patternHeight += Math.abs(patternOffsetY);\n }\n }\n if (this.repeat === 'repeat-y' || this.repeat === 'no-repeat') {\n patternWidth = 1;\n if (patternOffsetX) {\n patternWidth += Math.abs(patternOffsetX);\n }\n\n }\n if (patternSource.src) {\n patternImgSrc = patternSource.src;\n }\n else if (patternSource.toDataURL) {\n patternImgSrc = patternSource.toDataURL();\n }\n\n return '\\n' +\n '\\n' +\n '\\n';\n },\n /* _TO_SVG_END_ */\n\n setOptions: function(options) {\n for (var prop in options) {\n this[prop] = options[prop];\n }\n },\n\n /**\n * Returns an instance of CanvasPattern\n * @param {CanvasRenderingContext2D} ctx Context to create pattern\n * @return {CanvasPattern}\n */\n toLive: function(ctx) {\n var source = this.source;\n // if the image failed to load, return, and allow rest to continue loading\n if (!source) {\n return '';\n }\n\n // if an image\n if (typeof source.src !== 'undefined') {\n if (!source.complete) {\n return '';\n }\n if (source.naturalWidth === 0 || source.naturalHeight === 0) {\n return '';\n }\n }\n return ctx.createPattern(source, this.repeat);\n }\n });\n})();\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n toFixed = fabric.util.toFixed;\n\n if (fabric.Shadow) {\n fabric.warn('fabric.Shadow is already defined.');\n return;\n }\n\n /**\n * Shadow class\n * @class fabric.Shadow\n * @see {@link http://fabricjs.com/shadows|Shadow demo}\n * @see {@link fabric.Shadow#initialize} for constructor definition\n */\n fabric.Shadow = fabric.util.createClass(/** @lends fabric.Shadow.prototype */ {\n\n /**\n * Shadow color\n * @type String\n * @default\n */\n color: 'rgb(0,0,0)',\n\n /**\n * Shadow blur\n * @type Number\n */\n blur: 0,\n\n /**\n * Shadow horizontal offset\n * @type Number\n * @default\n */\n offsetX: 0,\n\n /**\n * Shadow vertical offset\n * @type Number\n * @default\n */\n offsetY: 0,\n\n /**\n * Whether the shadow should affect stroke operations\n * @type Boolean\n * @default\n */\n affectStroke: false,\n\n /**\n * Indicates whether toObject should include default values\n * @type Boolean\n * @default\n */\n includeDefaultValues: true,\n\n /**\n * When `false`, the shadow will scale with the object.\n * When `true`, the shadow's offsetX, offsetY, and blur will not be affected by the object's scale.\n * default to false\n * @type Boolean\n * @default\n */\n nonScaling: false,\n\n /**\n * Constructor\n * @param {Object|String} [options] Options object with any of color, blur, offsetX, offsetY properties or string (e.g. \"rgba(0,0,0,0.2) 2px 2px 10px\")\n * @return {fabric.Shadow} thisArg\n */\n initialize: function(options) {\n\n if (typeof options === 'string') {\n options = this._parseShadow(options);\n }\n\n for (var prop in options) {\n this[prop] = options[prop];\n }\n\n this.id = fabric.Object.__uid++;\n },\n\n /**\n * @private\n * @param {String} shadow Shadow value to parse\n * @return {Object} Shadow object with color, offsetX, offsetY and blur\n */\n _parseShadow: function(shadow) {\n var shadowStr = shadow.trim(),\n offsetsAndBlur = fabric.Shadow.reOffsetsAndBlur.exec(shadowStr) || [],\n color = shadowStr.replace(fabric.Shadow.reOffsetsAndBlur, '') || 'rgb(0,0,0)';\n\n return {\n color: color.trim(),\n offsetX: parseFloat(offsetsAndBlur[1], 10) || 0,\n offsetY: parseFloat(offsetsAndBlur[2], 10) || 0,\n blur: parseFloat(offsetsAndBlur[3], 10) || 0\n };\n },\n\n /**\n * Returns a string representation of an instance\n * @see http://www.w3.org/TR/css-text-decor-3/#text-shadow\n * @return {String} Returns CSS3 text-shadow declaration\n */\n toString: function() {\n return [this.offsetX, this.offsetY, this.blur, this.color].join('px ');\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns SVG representation of a shadow\n * @param {fabric.Object} object\n * @return {String} SVG representation of a shadow\n */\n toSVG: function(object) {\n var fBoxX = 40, fBoxY = 40, NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n offset = fabric.util.rotateVector(\n { x: this.offsetX, y: this.offsetY },\n fabric.util.degreesToRadians(-object.angle)),\n BLUR_BOX = 20, color = new fabric.Color(this.color);\n\n if (object.width && object.height) {\n //http://www.w3.org/TR/SVG/filters.html#FilterEffectsRegion\n // we add some extra space to filter box to contain the blur ( 20 )\n fBoxX = toFixed((Math.abs(offset.x) + this.blur) / object.width, NUM_FRACTION_DIGITS) * 100 + BLUR_BOX;\n fBoxY = toFixed((Math.abs(offset.y) + this.blur) / object.height, NUM_FRACTION_DIGITS) * 100 + BLUR_BOX;\n }\n if (object.flipX) {\n offset.x *= -1;\n }\n if (object.flipY) {\n offset.y *= -1;\n }\n\n return (\n '\\n' +\n '\\t\\n' +\n '\\t\\n' +\n '\\t\\n' +\n '\\t\\n' +\n '\\t\\n' +\n '\\t\\t\\n' +\n '\\t\\t\\n' +\n '\\t\\n' +\n '\\n');\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns object representation of a shadow\n * @return {Object} Object representation of a shadow instance\n */\n toObject: function() {\n if (this.includeDefaultValues) {\n return {\n color: this.color,\n blur: this.blur,\n offsetX: this.offsetX,\n offsetY: this.offsetY,\n affectStroke: this.affectStroke,\n nonScaling: this.nonScaling\n };\n }\n var obj = { }, proto = fabric.Shadow.prototype;\n\n ['color', 'blur', 'offsetX', 'offsetY', 'affectStroke', 'nonScaling'].forEach(function(prop) {\n if (this[prop] !== proto[prop]) {\n obj[prop] = this[prop];\n }\n }, this);\n\n return obj;\n }\n });\n\n /**\n * Regex matching shadow offsetX, offsetY and blur (ex: \"2px 2px 10px rgba(0,0,0,0.2)\", \"rgb(0,255,0) 2px 2px\")\n * @static\n * @field\n * @memberOf fabric.Shadow\n */\n // eslint-disable-next-line max-len\n fabric.Shadow.reOffsetsAndBlur = /(?:\\s|^)(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?(-?\\d+(?:\\.\\d*)?(?:px)?(?:\\s?|$))?(\\d+(?:\\.\\d*)?(?:px)?)?(?:\\s?|$)(?:$|\\s)/;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function () {\n\n 'use strict';\n\n if (fabric.StaticCanvas) {\n fabric.warn('fabric.StaticCanvas is already defined.');\n return;\n }\n\n // aliases for faster resolution\n var extend = fabric.util.object.extend,\n getElementOffset = fabric.util.getElementOffset,\n removeFromArray = fabric.util.removeFromArray,\n toFixed = fabric.util.toFixed,\n transformPoint = fabric.util.transformPoint,\n invertTransform = fabric.util.invertTransform,\n getNodeCanvas = fabric.util.getNodeCanvas,\n createCanvasElement = fabric.util.createCanvasElement,\n\n CANVAS_INIT_ERROR = new Error('Could not initialize `canvas` element');\n\n /**\n * Static canvas class\n * @class fabric.StaticCanvas\n * @mixes fabric.Collection\n * @mixes fabric.Observable\n * @see {@link http://fabricjs.com/static_canvas|StaticCanvas demo}\n * @see {@link fabric.StaticCanvas#initialize} for constructor definition\n * @fires before:render\n * @fires after:render\n * @fires canvas:cleared\n * @fires object:added\n * @fires object:removed\n */\n fabric.StaticCanvas = fabric.util.createClass(fabric.CommonMethods, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Constructor\n * @param {HTMLElement | String} el <canvas> element to initialize instance on\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(el, options) {\n options || (options = { });\n this.renderAndResetBound = this.renderAndReset.bind(this);\n this.requestRenderAllBound = this.requestRenderAll.bind(this);\n this._initStatic(el, options);\n },\n\n /**\n * Background color of canvas instance.\n * Should be set via {@link fabric.StaticCanvas#setBackgroundColor}.\n * @type {(String|fabric.Pattern)}\n * @default\n */\n backgroundColor: '',\n\n /**\n * Background image of canvas instance.\n * since 2.4.0 image caching is active, please when putting an image as background, add to the\n * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom\n * vale. As an alternative you can disable image objectCaching\n * @type fabric.Image\n * @default\n */\n backgroundImage: null,\n\n /**\n * Overlay color of canvas instance.\n * Should be set via {@link fabric.StaticCanvas#setOverlayColor}\n * @since 1.3.9\n * @type {(String|fabric.Pattern)}\n * @default\n */\n overlayColor: '',\n\n /**\n * Overlay image of canvas instance.\n * since 2.4.0 image caching is active, please when putting an image as overlay, add to the\n * canvas property a reference to the canvas it is on. Otherwise the image cannot detect the zoom\n * vale. As an alternative you can disable image objectCaching\n * @type fabric.Image\n * @default\n */\n overlayImage: null,\n\n /**\n * Indicates whether toObject/toDatalessObject should include default values\n * if set to false, takes precedence over the object value.\n * @type Boolean\n * @default\n */\n includeDefaultValues: true,\n\n /**\n * Indicates whether objects' state should be saved\n * @type Boolean\n * @default\n */\n stateful: false,\n\n /**\n * Indicates whether {@link fabric.Collection.add}, {@link fabric.Collection.insertAt} and {@link fabric.Collection.remove},\n * {@link fabric.StaticCanvas.moveTo}, {@link fabric.StaticCanvas.clear} and many more, should also re-render canvas.\n * Disabling this option will not give a performance boost when adding/removing a lot of objects to/from canvas at once\n * since the renders are quequed and executed one per frame.\n * Disabling is suggested anyway and managing the renders of the app manually is not a big effort ( canvas.requestRenderAll() )\n * Left default to true to do not break documentation and old app, fiddles.\n * @type Boolean\n * @default\n */\n renderOnAddRemove: true,\n\n /**\n * Indicates whether object controls (borders/controls) are rendered above overlay image\n * @type Boolean\n * @default\n */\n controlsAboveOverlay: false,\n\n /**\n * Indicates whether the browser can be scrolled when using a touchscreen and dragging on the canvas\n * @type Boolean\n * @default\n */\n allowTouchScrolling: false,\n\n /**\n * Indicates whether this canvas will use image smoothing, this is on by default in browsers\n * @type Boolean\n * @default\n */\n imageSmoothingEnabled: true,\n\n /**\n * The transformation (a Canvas 2D API transform matrix) which focuses the viewport\n * @type Array\n * @example Default transform\n * canvas.viewportTransform = [1, 0, 0, 1, 0, 0];\n * @example Scale by 70% and translate toward bottom-right by 50, without skewing\n * canvas.viewportTransform = [0.7, 0, 0, 0.7, 50, 50];\n * @default\n */\n viewportTransform: fabric.iMatrix.concat(),\n\n /**\n * if set to false background image is not affected by viewport transform\n * @since 1.6.3\n * @type Boolean\n * @default\n */\n backgroundVpt: true,\n\n /**\n * if set to false overlya image is not affected by viewport transform\n * @since 1.6.3\n * @type Boolean\n * @default\n */\n overlayVpt: true,\n\n /**\n * When true, canvas is scaled by devicePixelRatio for better rendering on retina screens\n * @type Boolean\n * @default\n */\n enableRetinaScaling: true,\n\n /**\n * Describe canvas element extension over design\n * properties are tl,tr,bl,br.\n * if canvas is not zoomed/panned those points are the four corner of canvas\n * if canvas is viewportTransformed you those points indicate the extension\n * of canvas element in plain untrasformed coordinates\n * The coordinates get updated with @method calcViewportBoundaries.\n * @memberOf fabric.StaticCanvas.prototype\n */\n vptCoords: { },\n\n /**\n * Based on vptCoords and object.aCoords, skip rendering of objects that\n * are not included in current viewport.\n * May greatly help in applications with crowded canvas and use of zoom/pan\n * If One of the corner of the bounding box of the object is on the canvas\n * the objects get rendered.\n * @memberOf fabric.StaticCanvas.prototype\n * @type Boolean\n * @default\n */\n skipOffscreen: true,\n\n /**\n * a fabricObject that, without stroke define a clipping area with their shape. filled in black\n * the clipPath object gets used when the canvas has rendered, and the context is placed in the\n * top left corner of the canvas.\n * clipPath will clip away controls, if you do not want this to happen use controlsAboveOverlay = true\n * @type fabric.Object\n */\n clipPath: undefined,\n\n /**\n * @private\n * @param {HTMLElement | String} el <canvas> element to initialize instance on\n * @param {Object} [options] Options object\n */\n _initStatic: function(el, options) {\n var cb = this.requestRenderAllBound;\n this._objects = [];\n this._createLowerCanvas(el);\n this._initOptions(options);\n // only initialize retina scaling once\n if (!this.interactive) {\n this._initRetinaScaling();\n }\n\n if (options.overlayImage) {\n this.setOverlayImage(options.overlayImage, cb);\n }\n if (options.backgroundImage) {\n this.setBackgroundImage(options.backgroundImage, cb);\n }\n if (options.backgroundColor) {\n this.setBackgroundColor(options.backgroundColor, cb);\n }\n if (options.overlayColor) {\n this.setOverlayColor(options.overlayColor, cb);\n }\n this.calcOffset();\n },\n\n /**\n * @private\n */\n _isRetinaScaling: function() {\n return (fabric.devicePixelRatio > 1 && this.enableRetinaScaling);\n },\n\n /**\n * @private\n * @return {Number} retinaScaling if applied, otherwise 1;\n */\n getRetinaScaling: function() {\n return this._isRetinaScaling() ? Math.max(1, fabric.devicePixelRatio) : 1;\n },\n\n /**\n * @private\n */\n _initRetinaScaling: function() {\n if (!this._isRetinaScaling()) {\n return;\n }\n var scaleRatio = fabric.devicePixelRatio;\n this.__initRetinaScaling(scaleRatio, this.lowerCanvasEl, this.contextContainer);\n if (this.upperCanvasEl) {\n this.__initRetinaScaling(scaleRatio, this.upperCanvasEl, this.contextTop);\n }\n },\n\n __initRetinaScaling: function(scaleRatio, canvas, context) {\n canvas.setAttribute('width', this.width * scaleRatio);\n canvas.setAttribute('height', this.height * scaleRatio);\n context.scale(scaleRatio, scaleRatio);\n },\n\n\n /**\n * Calculates canvas element offset relative to the document\n * This method is also attached as \"resize\" event handler of window\n * @return {fabric.Canvas} instance\n * @chainable\n */\n calcOffset: function () {\n this._offset = getElementOffset(this.lowerCanvasEl);\n return this;\n },\n\n /**\n * Sets {@link fabric.StaticCanvas#overlayImage|overlay image} for this canvas\n * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set overlay to\n * @param {Function} callback callback to invoke when image is loaded and set as an overlay\n * @param {Object} [options] Optional options to set for the {@link fabric.Image|overlay image}.\n * @return {fabric.Canvas} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/MnzHT/|jsFiddle demo}\n * @example Normal overlayImage with left/top = 0\n * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n * // Needed to position overlayImage at 0/0\n * originX: 'left',\n * originY: 'top'\n * });\n * @example overlayImage with different properties\n * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n * opacity: 0.5,\n * angle: 45,\n * left: 400,\n * top: 400,\n * originX: 'left',\n * originY: 'top'\n * });\n * @example Stretched overlayImage #1 - width/height correspond to canvas width/height\n * fabric.Image.fromURL('http://fabricjs.com/assets/jail_cell_bars.png', function(img, isError) {\n * img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'});\n * canvas.setOverlayImage(img, canvas.renderAll.bind(canvas));\n * });\n * @example Stretched overlayImage #2 - width/height correspond to canvas width/height\n * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n * width: canvas.width,\n * height: canvas.height,\n * // Needed to position overlayImage at 0/0\n * originX: 'left',\n * originY: 'top'\n * });\n * @example overlayImage loaded from cross-origin\n * canvas.setOverlayImage('http://fabricjs.com/assets/jail_cell_bars.png', canvas.renderAll.bind(canvas), {\n * opacity: 0.5,\n * angle: 45,\n * left: 400,\n * top: 400,\n * originX: 'left',\n * originY: 'top',\n * crossOrigin: 'anonymous'\n * });\n */\n setOverlayImage: function (image, callback, options) {\n return this.__setBgOverlayImage('overlayImage', image, callback, options);\n },\n\n /**\n * Sets {@link fabric.StaticCanvas#backgroundImage|background image} for this canvas\n * @param {(fabric.Image|String)} image fabric.Image instance or URL of an image to set background to\n * @param {Function} callback Callback to invoke when image is loaded and set as background\n * @param {Object} [options] Optional options to set for the {@link fabric.Image|background image}.\n * @return {fabric.Canvas} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/djnr8o7a/28/|jsFiddle demo}\n * @example Normal backgroundImage with left/top = 0\n * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n * // Needed to position backgroundImage at 0/0\n * originX: 'left',\n * originY: 'top'\n * });\n * @example backgroundImage with different properties\n * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n * opacity: 0.5,\n * angle: 45,\n * left: 400,\n * top: 400,\n * originX: 'left',\n * originY: 'top'\n * });\n * @example Stretched backgroundImage #1 - width/height correspond to canvas width/height\n * fabric.Image.fromURL('http://fabricjs.com/assets/honey_im_subtle.png', function(img, isError) {\n * img.set({width: canvas.width, height: canvas.height, originX: 'left', originY: 'top'});\n * canvas.setBackgroundImage(img, canvas.renderAll.bind(canvas));\n * });\n * @example Stretched backgroundImage #2 - width/height correspond to canvas width/height\n * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n * width: canvas.width,\n * height: canvas.height,\n * // Needed to position backgroundImage at 0/0\n * originX: 'left',\n * originY: 'top'\n * });\n * @example backgroundImage loaded from cross-origin\n * canvas.setBackgroundImage('http://fabricjs.com/assets/honey_im_subtle.png', canvas.renderAll.bind(canvas), {\n * opacity: 0.5,\n * angle: 45,\n * left: 400,\n * top: 400,\n * originX: 'left',\n * originY: 'top',\n * crossOrigin: 'anonymous'\n * });\n */\n // TODO: fix stretched examples\n setBackgroundImage: function (image, callback, options) {\n return this.__setBgOverlayImage('backgroundImage', image, callback, options);\n },\n\n /**\n * Sets {@link fabric.StaticCanvas#overlayColor|foreground color} for this canvas\n * @param {(String|fabric.Pattern)} overlayColor Color or pattern to set foreground color to\n * @param {Function} callback Callback to invoke when foreground color is set\n * @return {fabric.Canvas} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/pB55h/|jsFiddle demo}\n * @example Normal overlayColor - color value\n * canvas.setOverlayColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas));\n * @example fabric.Pattern used as overlayColor\n * canvas.setOverlayColor({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png'\n * }, canvas.renderAll.bind(canvas));\n * @example fabric.Pattern used as overlayColor with repeat and offset\n * canvas.setOverlayColor({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png',\n * repeat: 'repeat',\n * offsetX: 200,\n * offsetY: 100\n * }, canvas.renderAll.bind(canvas));\n */\n setOverlayColor: function(overlayColor, callback) {\n return this.__setBgOverlayColor('overlayColor', overlayColor, callback);\n },\n\n /**\n * Sets {@link fabric.StaticCanvas#backgroundColor|background color} for this canvas\n * @param {(String|fabric.Pattern)} backgroundColor Color or pattern to set background color to\n * @param {Function} callback Callback to invoke when background color is set\n * @return {fabric.Canvas} thisArg\n * @chainable\n * @see {@link http://jsfiddle.net/fabricjs/hXzvk/|jsFiddle demo}\n * @example Normal backgroundColor - color value\n * canvas.setBackgroundColor('rgba(255, 73, 64, 0.6)', canvas.renderAll.bind(canvas));\n * @example fabric.Pattern used as backgroundColor\n * canvas.setBackgroundColor({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png'\n * }, canvas.renderAll.bind(canvas));\n * @example fabric.Pattern used as backgroundColor with repeat and offset\n * canvas.setBackgroundColor({\n * source: 'http://fabricjs.com/assets/escheresque_ste.png',\n * repeat: 'repeat',\n * offsetX: 200,\n * offsetY: 100\n * }, canvas.renderAll.bind(canvas));\n */\n setBackgroundColor: function(backgroundColor, callback) {\n return this.__setBgOverlayColor('backgroundColor', backgroundColor, callback);\n },\n\n /**\n * @private\n * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundImage|backgroundImage}\n * or {@link fabric.StaticCanvas#overlayImage|overlayImage})\n * @param {(fabric.Image|String|null)} image fabric.Image instance, URL of an image or null to set background or overlay to\n * @param {Function} callback Callback to invoke when image is loaded and set as background or overlay. The first argument is the created image, the second argument is a flag indicating whether an error occurred or not.\n * @param {Object} [options] Optional options to set for the {@link fabric.Image|image}.\n */\n __setBgOverlayImage: function(property, image, callback, options) {\n if (typeof image === 'string') {\n fabric.util.loadImage(image, function(img, isError) {\n if (img) {\n var instance = new fabric.Image(img, options);\n this[property] = instance;\n instance.canvas = this;\n }\n callback && callback(img, isError);\n }, this, options && options.crossOrigin);\n }\n else {\n options && image.setOptions(options);\n this[property] = image;\n image && (image.canvas = this);\n callback && callback(image, false);\n }\n\n return this;\n },\n\n /**\n * @private\n * @param {String} property Property to set ({@link fabric.StaticCanvas#backgroundColor|backgroundColor}\n * or {@link fabric.StaticCanvas#overlayColor|overlayColor})\n * @param {(Object|String|null)} color Object with pattern information, color value or null\n * @param {Function} [callback] Callback is invoked when color is set\n */\n __setBgOverlayColor: function(property, color, callback) {\n this[property] = color;\n this._initGradient(color, property);\n this._initPattern(color, property, callback);\n return this;\n },\n\n /**\n * @private\n */\n _createCanvasElement: function() {\n var element = createCanvasElement();\n if (!element) {\n throw CANVAS_INIT_ERROR;\n }\n if (!element.style) {\n element.style = { };\n }\n if (typeof element.getContext === 'undefined') {\n throw CANVAS_INIT_ERROR;\n }\n return element;\n },\n\n /**\n * @private\n * @param {Object} [options] Options object\n */\n _initOptions: function (options) {\n var lowerCanvasEl = this.lowerCanvasEl;\n this._setOptions(options);\n\n this.width = this.width || parseInt(lowerCanvasEl.width, 10) || 0;\n this.height = this.height || parseInt(lowerCanvasEl.height, 10) || 0;\n\n if (!this.lowerCanvasEl.style) {\n return;\n }\n\n lowerCanvasEl.width = this.width;\n lowerCanvasEl.height = this.height;\n\n lowerCanvasEl.style.width = this.width + 'px';\n lowerCanvasEl.style.height = this.height + 'px';\n\n this.viewportTransform = this.viewportTransform.slice();\n },\n\n /**\n * Creates a bottom canvas\n * @private\n * @param {HTMLElement} [canvasEl]\n */\n _createLowerCanvas: function (canvasEl) {\n // canvasEl === 'HTMLCanvasElement' does not work on jsdom/node\n if (canvasEl && canvasEl.getContext) {\n this.lowerCanvasEl = canvasEl;\n }\n else {\n this.lowerCanvasEl = fabric.util.getById(canvasEl) || this._createCanvasElement();\n }\n\n fabric.util.addClass(this.lowerCanvasEl, 'lower-canvas');\n this._originalCanvasStyle = this.lowerCanvasEl.style;\n if (this.interactive) {\n this._applyCanvasStyle(this.lowerCanvasEl);\n }\n\n this.contextContainer = this.lowerCanvasEl.getContext('2d');\n },\n\n /**\n * Returns canvas width (in px)\n * @return {Number}\n */\n getWidth: function () {\n return this.width;\n },\n\n /**\n * Returns canvas height (in px)\n * @return {Number}\n */\n getHeight: function () {\n return this.height;\n },\n\n /**\n * Sets width of this canvas instance\n * @param {Number|String} value Value to set width to\n * @param {Object} [options] Options object\n * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions\n * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n setWidth: function (value, options) {\n return this.setDimensions({ width: value }, options);\n },\n\n /**\n * Sets height of this canvas instance\n * @param {Number|String} value Value to set height to\n * @param {Object} [options] Options object\n * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions\n * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n setHeight: function (value, options) {\n return this.setDimensions({ height: value }, options);\n },\n\n /**\n * Sets dimensions (width, height) of this canvas instance. when options.cssOnly flag active you should also supply the unit of measure (px/%/em)\n * @param {Object} dimensions Object with width/height properties\n * @param {Number|String} [dimensions.width] Width of canvas element\n * @param {Number|String} [dimensions.height] Height of canvas element\n * @param {Object} [options] Options object\n * @param {Boolean} [options.backstoreOnly=false] Set the given dimensions only as canvas backstore dimensions\n * @param {Boolean} [options.cssOnly=false] Set the given dimensions only as css dimensions\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n setDimensions: function (dimensions, options) {\n var cssValue;\n\n options = options || {};\n\n for (var prop in dimensions) {\n cssValue = dimensions[prop];\n\n if (!options.cssOnly) {\n this._setBackstoreDimension(prop, dimensions[prop]);\n cssValue += 'px';\n this.hasLostContext = true;\n }\n\n if (!options.backstoreOnly) {\n this._setCssDimension(prop, cssValue);\n }\n }\n if (this._isCurrentlyDrawing) {\n this.freeDrawingBrush && this.freeDrawingBrush._setBrushStyles(this.contextTop);\n }\n this._initRetinaScaling();\n this.calcOffset();\n\n if (!options.cssOnly) {\n this.requestRenderAll();\n }\n\n return this;\n },\n\n /**\n * Helper for setting width/height\n * @private\n * @param {String} prop property (width|height)\n * @param {Number} value value to set property to\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n _setBackstoreDimension: function (prop, value) {\n this.lowerCanvasEl[prop] = value;\n\n if (this.upperCanvasEl) {\n this.upperCanvasEl[prop] = value;\n }\n\n if (this.cacheCanvasEl) {\n this.cacheCanvasEl[prop] = value;\n }\n\n this[prop] = value;\n\n return this;\n },\n\n /**\n * Helper for setting css width/height\n * @private\n * @param {String} prop property (width|height)\n * @param {String} value value to set property to\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n _setCssDimension: function (prop, value) {\n this.lowerCanvasEl.style[prop] = value;\n\n if (this.upperCanvasEl) {\n this.upperCanvasEl.style[prop] = value;\n }\n\n if (this.wrapperEl) {\n this.wrapperEl.style[prop] = value;\n }\n\n return this;\n },\n\n /**\n * Returns canvas zoom level\n * @return {Number}\n */\n getZoom: function () {\n return this.viewportTransform[0];\n },\n\n /**\n * Sets viewport transformation of this canvas instance\n * @param {Array} vpt a Canvas 2D API transform matrix\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n setViewportTransform: function (vpt) {\n var activeObject = this._activeObject,\n backgroundObject = this.backgroundImage,\n overlayObject = this.overlayImage,\n object, i, len;\n this.viewportTransform = vpt;\n for (i = 0, len = this._objects.length; i < len; i++) {\n object = this._objects[i];\n object.group || object.setCoords(true);\n }\n if (activeObject) {\n activeObject.setCoords();\n }\n if (backgroundObject) {\n backgroundObject.setCoords(true);\n }\n if (overlayObject) {\n overlayObject.setCoords(true);\n }\n this.calcViewportBoundaries();\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Sets zoom level of this canvas instance, the zoom centered around point\n * meaning that following zoom to point with the same point will have the visual\n * effect of the zoom originating from that point. The point won't move.\n * It has nothing to do with canvas center or visual center of the viewport.\n * @param {fabric.Point} point to zoom with respect to\n * @param {Number} value to set zoom to, less than 1 zooms out\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n zoomToPoint: function (point, value) {\n // TODO: just change the scale, preserve other transformations\n var before = point, vpt = this.viewportTransform.slice(0);\n point = transformPoint(point, invertTransform(this.viewportTransform));\n vpt[0] = value;\n vpt[3] = value;\n var after = transformPoint(point, vpt);\n vpt[4] += before.x - after.x;\n vpt[5] += before.y - after.y;\n return this.setViewportTransform(vpt);\n },\n\n /**\n * Sets zoom level of this canvas instance\n * @param {Number} value to set zoom to, less than 1 zooms out\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n setZoom: function (value) {\n this.zoomToPoint(new fabric.Point(0, 0), value);\n return this;\n },\n\n /**\n * Pan viewport so as to place point at top left corner of canvas\n * @param {fabric.Point} point to move to\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n absolutePan: function (point) {\n var vpt = this.viewportTransform.slice(0);\n vpt[4] = -point.x;\n vpt[5] = -point.y;\n return this.setViewportTransform(vpt);\n },\n\n /**\n * Pans viewpoint relatively\n * @param {fabric.Point} point (position vector) to move by\n * @return {fabric.Canvas} instance\n * @chainable true\n */\n relativePan: function (point) {\n return this.absolutePan(new fabric.Point(\n -point.x - this.viewportTransform[4],\n -point.y - this.viewportTransform[5]\n ));\n },\n\n /**\n * Returns <canvas> element corresponding to this instance\n * @return {HTMLCanvasElement}\n */\n getElement: function () {\n return this.lowerCanvasEl;\n },\n\n /**\n * @private\n * @param {fabric.Object} obj Object that was added\n */\n _onObjectAdded: function(obj) {\n this.stateful && obj.setupState();\n obj._set('canvas', this);\n obj.setCoords();\n this.fire('object:added', { target: obj });\n obj.fire('added');\n },\n\n /**\n * @private\n * @param {fabric.Object} obj Object that was removed\n */\n _onObjectRemoved: function(obj) {\n this.fire('object:removed', { target: obj });\n obj.fire('removed');\n delete obj.canvas;\n },\n\n /**\n * Clears specified context of canvas element\n * @param {CanvasRenderingContext2D} ctx Context to clear\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n clearContext: function(ctx) {\n ctx.clearRect(0, 0, this.width, this.height);\n return this;\n },\n\n /**\n * Returns context of canvas where objects are drawn\n * @return {CanvasRenderingContext2D}\n */\n getContext: function () {\n return this.contextContainer;\n },\n\n /**\n * Clears all contexts (background, main, top) of an instance\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n clear: function () {\n this.remove.apply(this, this.getObjects());\n this.backgroundImage = null;\n this.overlayImage = null;\n this.backgroundColor = '';\n this.overlayColor = '';\n if (this._hasITextHandlers) {\n this.off('mouse:up', this._mouseUpITextHandler);\n this._iTextInstances = null;\n this._hasITextHandlers = false;\n }\n this.clearContext(this.contextContainer);\n this.fire('canvas:cleared');\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Renders the canvas\n * @return {fabric.Canvas} instance\n * @chainable\n */\n renderAll: function () {\n var canvasToDrawOn = this.contextContainer;\n this.renderCanvas(canvasToDrawOn, this._objects);\n return this;\n },\n\n /**\n * Function created to be instance bound at initialization\n * used in requestAnimationFrame rendering\n * Let the fabricJS call it. If you call it manually you could have more\n * animationFrame stacking on to of each other\n * for an imperative rendering, use canvas.renderAll\n * @private\n * @return {fabric.Canvas} instance\n * @chainable\n */\n renderAndReset: function() {\n this.isRendering = 0;\n this.renderAll();\n },\n\n /**\n * Append a renderAll request to next animation frame.\n * unless one is already in progress, in that case nothing is done\n * a boolean flag will avoid appending more.\n * @return {fabric.Canvas} instance\n * @chainable\n */\n requestRenderAll: function () {\n if (!this.isRendering) {\n this.isRendering = fabric.util.requestAnimFrame(this.renderAndResetBound);\n }\n return this;\n },\n\n /**\n * Calculate the position of the 4 corner of canvas with current viewportTransform.\n * helps to determinate when an object is in the current rendering viewport using\n * object absolute coordinates ( aCoords )\n * @return {Object} points.tl\n * @chainable\n */\n calcViewportBoundaries: function() {\n var points = { }, width = this.width, height = this.height,\n iVpt = invertTransform(this.viewportTransform);\n points.tl = transformPoint({ x: 0, y: 0 }, iVpt);\n points.br = transformPoint({ x: width, y: height }, iVpt);\n points.tr = new fabric.Point(points.br.x, points.tl.y);\n points.bl = new fabric.Point(points.tl.x, points.br.y);\n this.vptCoords = points;\n return points;\n },\n\n cancelRequestedRender: function() {\n if (this.isRendering) {\n fabric.util.cancelAnimFrame(this.isRendering);\n this.isRendering = 0;\n }\n },\n\n /**\n * Renders background, objects, overlay and controls.\n * @param {CanvasRenderingContext2D} ctx\n * @param {Array} objects to render\n * @return {fabric.Canvas} instance\n * @chainable\n */\n renderCanvas: function(ctx, objects) {\n var v = this.viewportTransform, path = this.clipPath;\n this.cancelRequestedRender();\n this.calcViewportBoundaries();\n this.clearContext(ctx);\n fabric.util.setImageSmoothing(ctx, this.imageSmoothingEnabled);\n this.fire('before:render', { ctx: ctx, });\n this._renderBackground(ctx);\n\n ctx.save();\n //apply viewport transform once for all rendering process\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n this._renderObjects(ctx, objects);\n ctx.restore();\n if (!this.controlsAboveOverlay && this.interactive) {\n this.drawControls(ctx);\n }\n if (path) {\n path.canvas = this;\n // needed to setup a couple of variables\n path.shouldCache();\n path._transformDone = true;\n path.renderCache({ forClipping: true });\n this.drawClipPathOnCanvas(ctx);\n }\n this._renderOverlay(ctx);\n if (this.controlsAboveOverlay && this.interactive) {\n this.drawControls(ctx);\n }\n this.fire('after:render', { ctx: ctx, });\n },\n\n /**\n * Paint the cached clipPath on the lowerCanvasEl\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawClipPathOnCanvas: function(ctx) {\n var v = this.viewportTransform, path = this.clipPath;\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n // DEBUG: uncomment this line, comment the following\n // ctx.globalAlpha = 0.4;\n ctx.globalCompositeOperation = 'destination-in';\n path.transform(ctx);\n ctx.scale(1 / path.zoomX, 1 / path.zoomY);\n ctx.drawImage(path._cacheCanvas, -path.cacheTranslationX, -path.cacheTranslationY);\n ctx.restore();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Array} objects to render\n */\n _renderObjects: function(ctx, objects) {\n var i, len;\n for (i = 0, len = objects.length; i < len; ++i) {\n objects[i] && objects[i].render(ctx);\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {string} property 'background' or 'overlay'\n */\n _renderBackgroundOrOverlay: function(ctx, property) {\n var fill = this[property + 'Color'], object = this[property + 'Image'],\n v = this.viewportTransform, needsVpt = this[property + 'Vpt'];\n if (!fill && !object) {\n return;\n }\n if (fill) {\n ctx.save();\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.width, 0);\n ctx.lineTo(this.width, this.height);\n ctx.lineTo(0, this.height);\n ctx.closePath();\n ctx.fillStyle = fill.toLive\n ? fill.toLive(ctx, this)\n : fill;\n if (needsVpt) {\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n }\n ctx.transform(1, 0, 0, 1, fill.offsetX || 0, fill.offsetY || 0);\n var m = fill.gradientTransform || fill.patternTransform;\n m && ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n ctx.fill();\n ctx.restore();\n }\n if (object) {\n ctx.save();\n if (needsVpt) {\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n }\n object.render(ctx);\n ctx.restore();\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderBackground: function(ctx) {\n this._renderBackgroundOrOverlay(ctx, 'background');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderOverlay: function(ctx) {\n this._renderBackgroundOrOverlay(ctx, 'overlay');\n },\n\n /**\n * Returns coordinates of a center of canvas.\n * Returned value is an object with top and left properties\n * @return {Object} object with \"top\" and \"left\" number values\n * @deprecated migrate to `getCenterPoint`\n */\n getCenter: function () {\n return {\n top: this.height / 2,\n left: this.width / 2\n };\n },\n\n /**\n * Returns coordinates of a center of canvas.\n * @return {fabric.Point} \n */\n getCenterPoint: function () {\n return new fabric.Point(this.width / 2, this.height / 2);\n },\n\n /**\n * Centers object horizontally in the canvas\n * @param {fabric.Object} object Object to center horizontally\n * @return {fabric.Canvas} thisArg\n */\n centerObjectH: function (object) {\n return this._centerObject(object, new fabric.Point(this.getCenterPoint().x, object.getCenterPoint().y));\n },\n\n /**\n * Centers object vertically in the canvas\n * @param {fabric.Object} object Object to center vertically\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n centerObjectV: function (object) {\n return this._centerObject(object, new fabric.Point(object.getCenterPoint().x, this.getCenterPoint().y));\n },\n\n /**\n * Centers object vertically and horizontally in the canvas\n * @param {fabric.Object} object Object to center vertically and horizontally\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n centerObject: function(object) {\n var center = this.getCenterPoint();\n return this._centerObject(object, center);\n },\n\n /**\n * Centers object vertically and horizontally in the viewport\n * @param {fabric.Object} object Object to center vertically and horizontally\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n viewportCenterObject: function(object) {\n var vpCenter = this.getVpCenter();\n return this._centerObject(object, vpCenter);\n },\n\n /**\n * Centers object horizontally in the viewport, object.top is unchanged\n * @param {fabric.Object} object Object to center vertically and horizontally\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n viewportCenterObjectH: function(object) {\n var vpCenter = this.getVpCenter();\n this._centerObject(object, new fabric.Point(vpCenter.x, object.getCenterPoint().y));\n return this;\n },\n\n /**\n * Centers object Vertically in the viewport, object.top is unchanged\n * @param {fabric.Object} object Object to center vertically and horizontally\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n viewportCenterObjectV: function(object) {\n var vpCenter = this.getVpCenter();\n\n return this._centerObject(object, new fabric.Point(object.getCenterPoint().x, vpCenter.y));\n },\n\n /**\n * Calculate the point in canvas that correspond to the center of actual viewport.\n * @return {fabric.Point} vpCenter, viewport center\n * @chainable\n */\n getVpCenter: function() {\n var center = this.getCenterPoint(),\n iVpt = invertTransform(this.viewportTransform);\n return transformPoint(center, iVpt);\n },\n\n /**\n * @private\n * @param {fabric.Object} object Object to center\n * @param {fabric.Point} center Center point\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n _centerObject: function(object, center) {\n object.setPositionByOrigin(center, 'center', 'center');\n object.setCoords();\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Returns dataless JSON representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {String} json string\n */\n toDatalessJSON: function (propertiesToInclude) {\n return this.toDatalessObject(propertiesToInclude);\n },\n\n /**\n * Returns object representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function (propertiesToInclude) {\n return this._toObjectMethod('toObject', propertiesToInclude);\n },\n\n /**\n * Returns dataless object representation of canvas\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toDatalessObject: function (propertiesToInclude) {\n return this._toObjectMethod('toDatalessObject', propertiesToInclude);\n },\n\n /**\n * @private\n */\n _toObjectMethod: function (methodName, propertiesToInclude) {\n\n var clipPath = this.clipPath, data = {\n version: fabric.version,\n objects: this._toObjects(methodName, propertiesToInclude),\n };\n if (clipPath && !clipPath.excludeFromExport) {\n data.clipPath = this._toObject(this.clipPath, methodName, propertiesToInclude);\n }\n extend(data, this.__serializeBgOverlay(methodName, propertiesToInclude));\n\n fabric.util.populateWithProperties(this, data, propertiesToInclude);\n\n return data;\n },\n\n /**\n * @private\n */\n _toObjects: function(methodName, propertiesToInclude) {\n return this._objects.filter(function(object) {\n return !object.excludeFromExport;\n }).map(function(instance) {\n return this._toObject(instance, methodName, propertiesToInclude);\n }, this);\n },\n\n /**\n * @private\n */\n _toObject: function(instance, methodName, propertiesToInclude) {\n var originalValue;\n\n if (!this.includeDefaultValues) {\n originalValue = instance.includeDefaultValues;\n instance.includeDefaultValues = false;\n }\n\n var object = instance[methodName](propertiesToInclude);\n if (!this.includeDefaultValues) {\n instance.includeDefaultValues = originalValue;\n }\n return object;\n },\n\n /**\n * @private\n */\n __serializeBgOverlay: function(methodName, propertiesToInclude) {\n var data = {}, bgImage = this.backgroundImage, overlayImage = this.overlayImage,\n bgColor = this.backgroundColor, overlayColor = this.overlayColor;\n\n if (bgColor && bgColor.toObject) {\n if (!bgColor.excludeFromExport) {\n data.background = bgColor.toObject(propertiesToInclude);\n }\n }\n else if (bgColor) {\n data.background = bgColor;\n }\n\n if (overlayColor && overlayColor.toObject) {\n if (!overlayColor.excludeFromExport) {\n data.overlay = overlayColor.toObject(propertiesToInclude);\n }\n }\n else if (overlayColor) {\n data.overlay = overlayColor;\n }\n\n if (bgImage && !bgImage.excludeFromExport) {\n data.backgroundImage = this._toObject(bgImage, methodName, propertiesToInclude);\n }\n if (overlayImage && !overlayImage.excludeFromExport) {\n data.overlayImage = this._toObject(overlayImage, methodName, propertiesToInclude);\n }\n\n return data;\n },\n\n /* _TO_SVG_START_ */\n /**\n * When true, getSvgTransform() will apply the StaticCanvas.viewportTransform to the SVG transformation. When true,\n * a zoomed canvas will then produce zoomed SVG output.\n * @type Boolean\n * @default\n */\n svgViewportTransformation: true,\n\n /**\n * Returns SVG representation of canvas\n * @function\n * @param {Object} [options] Options object for SVG output\n * @param {Boolean} [options.suppressPreamble=false] If true xml tag is not included\n * @param {Object} [options.viewBox] SVG viewbox object\n * @param {Number} [options.viewBox.x] x-coordinate of viewbox\n * @param {Number} [options.viewBox.y] y-coordinate of viewbox\n * @param {Number} [options.viewBox.width] Width of viewbox\n * @param {Number} [options.viewBox.height] Height of viewbox\n * @param {String} [options.encoding=UTF-8] Encoding of SVG output\n * @param {String} [options.width] desired width of svg with or without units\n * @param {String} [options.height] desired height of svg with or without units\n * @param {Function} [reviver] Method for further parsing of svg elements, called after each fabric object converted into svg representation.\n * @return {String} SVG string\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization}\n * @see {@link http://jsfiddle.net/fabricjs/jQ3ZZ/|jsFiddle demo}\n * @example Normal SVG output\n * var svg = canvas.toSVG();\n * @example SVG output without preamble (without <?xml ../>)\n * var svg = canvas.toSVG({suppressPreamble: true});\n * @example SVG output with viewBox attribute\n * var svg = canvas.toSVG({\n * viewBox: {\n * x: 100,\n * y: 100,\n * width: 200,\n * height: 300\n * }\n * });\n * @example SVG output with different encoding (default: UTF-8)\n * var svg = canvas.toSVG({encoding: 'ISO-8859-1'});\n * @example Modify SVG output with reviver function\n * var svg = canvas.toSVG(null, function(svg) {\n * return svg.replace('stroke-dasharray: ; stroke-linecap: butt; stroke-linejoin: miter; stroke-miterlimit: 10; ', '');\n * });\n */\n toSVG: function(options, reviver) {\n options || (options = { });\n options.reviver = reviver;\n var markup = [];\n\n this._setSVGPreamble(markup, options);\n this._setSVGHeader(markup, options);\n if (this.clipPath) {\n markup.push('\\n');\n }\n this._setSVGBgOverlayColor(markup, 'background');\n this._setSVGBgOverlayImage(markup, 'backgroundImage', reviver);\n this._setSVGObjects(markup, reviver);\n if (this.clipPath) {\n markup.push('\\n');\n }\n this._setSVGBgOverlayColor(markup, 'overlay');\n this._setSVGBgOverlayImage(markup, 'overlayImage', reviver);\n\n markup.push('');\n\n return markup.join('');\n },\n\n /**\n * @private\n */\n _setSVGPreamble: function(markup, options) {\n if (options.suppressPreamble) {\n return;\n }\n markup.push(\n '\\n',\n '\\n'\n );\n },\n\n /**\n * @private\n */\n _setSVGHeader: function(markup, options) {\n var width = options.width || this.width,\n height = options.height || this.height,\n vpt, viewBox = 'viewBox=\"0 0 ' + this.width + ' ' + this.height + '\" ',\n NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n\n if (options.viewBox) {\n viewBox = 'viewBox=\"' +\n options.viewBox.x + ' ' +\n options.viewBox.y + ' ' +\n options.viewBox.width + ' ' +\n options.viewBox.height + '\" ';\n }\n else {\n if (this.svgViewportTransformation) {\n vpt = this.viewportTransform;\n viewBox = 'viewBox=\"' +\n toFixed(-vpt[4] / vpt[0], NUM_FRACTION_DIGITS) + ' ' +\n toFixed(-vpt[5] / vpt[3], NUM_FRACTION_DIGITS) + ' ' +\n toFixed(this.width / vpt[0], NUM_FRACTION_DIGITS) + ' ' +\n toFixed(this.height / vpt[3], NUM_FRACTION_DIGITS) + '\" ';\n }\n }\n\n markup.push(\n '\\n',\n 'Created with Fabric.js ', fabric.version, '\\n',\n '\\n',\n this.createSVGFontFacesMarkup(),\n this.createSVGRefElementsMarkup(),\n this.createSVGClipPathMarkup(options),\n '\\n'\n );\n },\n\n createSVGClipPathMarkup: function(options) {\n var clipPath = this.clipPath;\n if (clipPath) {\n clipPath.clipPathId = 'CLIPPATH_' + fabric.Object.__uid++;\n return '\\n' +\n this.clipPath.toClipPathSVG(options.reviver) +\n '\\n';\n }\n return '';\n },\n\n /**\n * Creates markup containing SVG referenced elements like patterns, gradients etc.\n * @return {String}\n */\n createSVGRefElementsMarkup: function() {\n var _this = this,\n markup = ['background', 'overlay'].map(function(prop) {\n var fill = _this[prop + 'Color'];\n if (fill && fill.toLive) {\n var shouldTransform = _this[prop + 'Vpt'], vpt = _this.viewportTransform,\n object = {\n width: _this.width / (shouldTransform ? vpt[0] : 1),\n height: _this.height / (shouldTransform ? vpt[3] : 1)\n };\n return fill.toSVG(\n object,\n { additionalTransform: shouldTransform ? fabric.util.matrixToSVG(vpt) : '' }\n );\n }\n });\n return markup.join('');\n },\n\n /**\n * Creates markup containing SVG font faces,\n * font URLs for font faces must be collected by developers\n * and are not extracted from the DOM by fabricjs\n * @param {Array} objects Array of fabric objects\n * @return {String}\n */\n createSVGFontFacesMarkup: function() {\n var markup = '', fontList = { }, obj, fontFamily,\n style, row, rowIndex, _char, charIndex, i, len,\n fontPaths = fabric.fontPaths, objects = [];\n\n this._objects.forEach(function add(object) {\n objects.push(object);\n if (object._objects) {\n object._objects.forEach(add);\n }\n });\n\n for (i = 0, len = objects.length; i < len; i++) {\n obj = objects[i];\n fontFamily = obj.fontFamily;\n if (obj.type.indexOf('text') === -1 || fontList[fontFamily] || !fontPaths[fontFamily]) {\n continue;\n }\n fontList[fontFamily] = true;\n if (!obj.styles) {\n continue;\n }\n style = obj.styles;\n for (rowIndex in style) {\n row = style[rowIndex];\n for (charIndex in row) {\n _char = row[charIndex];\n fontFamily = _char.fontFamily;\n if (!fontList[fontFamily] && fontPaths[fontFamily]) {\n fontList[fontFamily] = true;\n }\n }\n }\n }\n\n for (var j in fontList) {\n markup += [\n '\\t\\t@font-face {\\n',\n '\\t\\t\\tfont-family: \\'', j, '\\';\\n',\n '\\t\\t\\tsrc: url(\\'', fontPaths[j], '\\');\\n',\n '\\t\\t}\\n'\n ].join('');\n }\n\n if (markup) {\n markup = [\n '\\t\\n'\n ].join('');\n }\n\n return markup;\n },\n\n /**\n * @private\n */\n _setSVGObjects: function(markup, reviver) {\n var instance, i, len, objects = this._objects;\n for (i = 0, len = objects.length; i < len; i++) {\n instance = objects[i];\n if (instance.excludeFromExport) {\n continue;\n }\n this._setSVGObject(markup, instance, reviver);\n }\n },\n\n /**\n * @private\n */\n _setSVGObject: function(markup, instance, reviver) {\n markup.push(instance.toSVG(reviver));\n },\n\n /**\n * @private\n */\n _setSVGBgOverlayImage: function(markup, property, reviver) {\n if (this[property] && !this[property].excludeFromExport && this[property].toSVG) {\n markup.push(this[property].toSVG(reviver));\n }\n },\n\n /**\n * @private\n */\n _setSVGBgOverlayColor: function(markup, property) {\n var filler = this[property + 'Color'], vpt = this.viewportTransform, finalWidth = this.width,\n finalHeight = this.height;\n if (!filler) {\n return;\n }\n if (filler.toLive) {\n var repeat = filler.repeat, iVpt = fabric.util.invertTransform(vpt), shouldInvert = this[property + 'Vpt'],\n additionalTransform = shouldInvert ? fabric.util.matrixToSVG(iVpt) : '';\n markup.push(\n '\\n'\n );\n }\n else {\n markup.push(\n '\\n'\n );\n }\n },\n /* _TO_SVG_END_ */\n\n /**\n * Moves an object or the objects of a multiple selection\n * to the bottom of the stack of drawn objects\n * @param {fabric.Object} object Object to send to back\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n sendToBack: function (object) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, objs;\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = objs.length; i--;) {\n obj = objs[i];\n removeFromArray(this._objects, obj);\n this._objects.unshift(obj);\n }\n }\n else {\n removeFromArray(this._objects, object);\n this._objects.unshift(object);\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Moves an object or the objects of a multiple selection\n * to the top of the stack of drawn objects\n * @param {fabric.Object} object Object to send\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n bringToFront: function (object) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, objs;\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = 0; i < objs.length; i++) {\n obj = objs[i];\n removeFromArray(this._objects, obj);\n this._objects.push(obj);\n }\n }\n else {\n removeFromArray(this._objects, object);\n this._objects.push(object);\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * Moves an object or a selection down in stack of drawn objects\n * An optional parameter, intersecting allows to move the object in behind\n * the first intersecting object. Where intersection is calculated with\n * bounding box. If no intersection is found, there will not be change in the\n * stack.\n * @param {fabric.Object} object Object to send\n * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n sendBackwards: function (object, intersecting) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, idx, newIdx, objs, objsMoved = 0;\n\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = 0; i < objs.length; i++) {\n obj = objs[i];\n idx = this._objects.indexOf(obj);\n if (idx > 0 + objsMoved) {\n newIdx = idx - 1;\n removeFromArray(this._objects, obj);\n this._objects.splice(newIdx, 0, obj);\n }\n objsMoved++;\n }\n }\n else {\n idx = this._objects.indexOf(object);\n if (idx !== 0) {\n // if object is not on the bottom of stack\n newIdx = this._findNewLowerIndex(object, idx, intersecting);\n removeFromArray(this._objects, object);\n this._objects.splice(newIdx, 0, object);\n }\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * @private\n */\n _findNewLowerIndex: function(object, idx, intersecting) {\n var newIdx, i;\n\n if (intersecting) {\n newIdx = idx;\n\n // traverse down the stack looking for the nearest intersecting object\n for (i = idx - 1; i >= 0; --i) {\n\n var isIntersecting = object.intersectsWithObject(this._objects[i]) ||\n object.isContainedWithinObject(this._objects[i]) ||\n this._objects[i].isContainedWithinObject(object);\n\n if (isIntersecting) {\n newIdx = i;\n break;\n }\n }\n }\n else {\n newIdx = idx - 1;\n }\n\n return newIdx;\n },\n\n /**\n * Moves an object or a selection up in stack of drawn objects\n * An optional parameter, intersecting allows to move the object in front\n * of the first intersecting object. Where intersection is calculated with\n * bounding box. If no intersection is found, there will not be change in the\n * stack.\n * @param {fabric.Object} object Object to send\n * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n bringForward: function (object, intersecting) {\n if (!object) {\n return this;\n }\n var activeSelection = this._activeObject,\n i, obj, idx, newIdx, objs, objsMoved = 0;\n\n if (object === activeSelection && object.type === 'activeSelection') {\n objs = activeSelection._objects;\n for (i = objs.length; i--;) {\n obj = objs[i];\n idx = this._objects.indexOf(obj);\n if (idx < this._objects.length - 1 - objsMoved) {\n newIdx = idx + 1;\n removeFromArray(this._objects, obj);\n this._objects.splice(newIdx, 0, obj);\n }\n objsMoved++;\n }\n }\n else {\n idx = this._objects.indexOf(object);\n if (idx !== this._objects.length - 1) {\n // if object is not on top of stack (last item in an array)\n newIdx = this._findNewUpperIndex(object, idx, intersecting);\n removeFromArray(this._objects, object);\n this._objects.splice(newIdx, 0, object);\n }\n }\n this.renderOnAddRemove && this.requestRenderAll();\n return this;\n },\n\n /**\n * @private\n */\n _findNewUpperIndex: function(object, idx, intersecting) {\n var newIdx, i, len;\n\n if (intersecting) {\n newIdx = idx;\n\n // traverse up the stack looking for the nearest intersecting object\n for (i = idx + 1, len = this._objects.length; i < len; ++i) {\n\n var isIntersecting = object.intersectsWithObject(this._objects[i]) ||\n object.isContainedWithinObject(this._objects[i]) ||\n this._objects[i].isContainedWithinObject(object);\n\n if (isIntersecting) {\n newIdx = i;\n break;\n }\n }\n }\n else {\n newIdx = idx + 1;\n }\n\n return newIdx;\n },\n\n /**\n * Moves an object to specified level in stack of drawn objects\n * @param {fabric.Object} object Object to send\n * @param {Number} index Position to move to\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n moveTo: function (object, index) {\n removeFromArray(this._objects, object);\n this._objects.splice(index, 0, object);\n return this.renderOnAddRemove && this.requestRenderAll();\n },\n\n /**\n * Clears a canvas element and dispose objects\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n dispose: function () {\n // cancel eventually ongoing renders\n if (this.isRendering) {\n fabric.util.cancelAnimFrame(this.isRendering);\n this.isRendering = 0;\n }\n this.forEachObject(function(object) {\n object.dispose && object.dispose();\n });\n this._objects = [];\n if (this.backgroundImage && this.backgroundImage.dispose) {\n this.backgroundImage.dispose();\n }\n this.backgroundImage = null;\n if (this.overlayImage && this.overlayImage.dispose) {\n this.overlayImage.dispose();\n }\n this.overlayImage = null;\n this._iTextInstances = null;\n this.contextContainer = null;\n // restore canvas style\n this.lowerCanvasEl.classList.remove('lower-canvas');\n fabric.util.setStyle(this.lowerCanvasEl, this._originalCanvasStyle);\n delete this._originalCanvasStyle;\n // restore canvas size to original size in case retina scaling was applied\n this.lowerCanvasEl.setAttribute('width', this.width);\n this.lowerCanvasEl.setAttribute('height', this.height);\n fabric.util.cleanUpJsdomNode(this.lowerCanvasEl);\n this.lowerCanvasEl = undefined;\n return this;\n },\n\n /**\n * Returns a string representation of an instance\n * @return {String} string representation of an instance\n */\n toString: function () {\n return '#';\n }\n });\n\n extend(fabric.StaticCanvas.prototype, fabric.Observable);\n extend(fabric.StaticCanvas.prototype, fabric.Collection);\n extend(fabric.StaticCanvas.prototype, fabric.DataURLExporter);\n\n extend(fabric.StaticCanvas, /** @lends fabric.StaticCanvas */ {\n\n /**\n * @static\n * @type String\n * @default\n */\n EMPTY_JSON: '{\"objects\": [], \"background\": \"white\"}',\n\n /**\n * Provides a way to check support of some of the canvas methods\n * (either those of HTMLCanvasElement itself, or rendering context)\n *\n * @param {String} methodName Method to check support for;\n * Could be one of \"setLineDash\"\n * @return {Boolean | null} `true` if method is supported (or at least exists),\n * `null` if canvas element or context can not be initialized\n */\n supports: function (methodName) {\n var el = createCanvasElement();\n\n if (!el || !el.getContext) {\n return null;\n }\n\n var ctx = el.getContext('2d');\n if (!ctx) {\n return null;\n }\n\n switch (methodName) {\n\n case 'setLineDash':\n return typeof ctx.setLineDash !== 'undefined';\n\n default:\n return null;\n }\n }\n });\n\n /**\n * Returns Object representation of canvas\n * this alias is provided because if you call JSON.stringify on an instance,\n * the toJSON object will be invoked if it exists.\n * Having a toJSON method means you can do JSON.stringify(myCanvas)\n * @function\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} JSON compatible object\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#serialization}\n * @see {@link http://jsfiddle.net/fabricjs/pec86/|jsFiddle demo}\n * @example JSON without additional properties\n * var json = canvas.toJSON();\n * @example JSON with additional properties included\n * var json = canvas.toJSON(['lockMovementX', 'lockMovementY', 'lockRotation', 'lockScalingX', 'lockScalingY']);\n * @example JSON without default values\n * canvas.includeDefaultValues = false;\n * var json = canvas.toJSON();\n */\n fabric.StaticCanvas.prototype.toJSON = fabric.StaticCanvas.prototype.toObject;\n\n if (fabric.isLikelyNode) {\n fabric.StaticCanvas.prototype.createPNGStream = function() {\n var impl = getNodeCanvas(this.lowerCanvasEl);\n return impl && impl.createPNGStream();\n };\n fabric.StaticCanvas.prototype.createJPEGStream = function(opts) {\n var impl = getNodeCanvas(this.lowerCanvasEl);\n return impl && impl.createJPEGStream(opts);\n };\n }\n})();\n\n\n/**\n * BaseBrush class\n * @class fabric.BaseBrush\n * @see {@link http://fabricjs.com/freedrawing|Freedrawing demo}\n */\nfabric.BaseBrush = fabric.util.createClass(/** @lends fabric.BaseBrush.prototype */ {\n\n /**\n * Color of a brush\n * @type String\n * @default\n */\n color: 'rgb(0, 0, 0)',\n\n /**\n * Width of a brush, has to be a Number, no string literals\n * @type Number\n * @default\n */\n width: 1,\n\n /**\n * Shadow object representing shadow of this shape.\n * Backwards incompatibility note: This property replaces \"shadowColor\" (String), \"shadowOffsetX\" (Number),\n * \"shadowOffsetY\" (Number) and \"shadowBlur\" (Number) since v1.2.12\n * @type fabric.Shadow\n * @default\n */\n shadow: null,\n\n /**\n * Line endings style of a brush (one of \"butt\", \"round\", \"square\")\n * @type String\n * @default\n */\n strokeLineCap: 'round',\n\n /**\n * Corner style of a brush (one of \"bevel\", \"round\", \"miter\")\n * @type String\n * @default\n */\n strokeLineJoin: 'round',\n\n /**\n * Maximum miter length (used for strokeLineJoin = \"miter\") of a brush's\n * @type Number\n * @default\n */\n strokeMiterLimit: 10,\n\n /**\n * Stroke Dash Array.\n * @type Array\n * @default\n */\n strokeDashArray: null,\n\n /**\n * When `true`, the free drawing is limited to the whiteboard size. Default to false.\n * @type Boolean\n * @default false\n */\n\n limitedToCanvasSize: false,\n\n\n /**\n * Sets brush styles\n * @private\n * @param {CanvasRenderingContext2D} ctx\n */\n _setBrushStyles: function (ctx) {\n ctx.strokeStyle = this.color;\n ctx.lineWidth = this.width;\n ctx.lineCap = this.strokeLineCap;\n ctx.miterLimit = this.strokeMiterLimit;\n ctx.lineJoin = this.strokeLineJoin;\n ctx.setLineDash(this.strokeDashArray || []);\n },\n\n /**\n * Sets the transformation on given context\n * @param {RenderingContext2d} ctx context to render on\n * @private\n */\n _saveAndTransform: function(ctx) {\n var v = this.canvas.viewportTransform;\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n },\n\n /**\n * Sets brush shadow styles\n * @private\n */\n _setShadow: function() {\n if (!this.shadow) {\n return;\n }\n\n var canvas = this.canvas,\n shadow = this.shadow,\n ctx = canvas.contextTop,\n zoom = canvas.getZoom();\n if (canvas && canvas._isRetinaScaling()) {\n zoom *= fabric.devicePixelRatio;\n }\n\n ctx.shadowColor = shadow.color;\n ctx.shadowBlur = shadow.blur * zoom;\n ctx.shadowOffsetX = shadow.offsetX * zoom;\n ctx.shadowOffsetY = shadow.offsetY * zoom;\n },\n\n needsFullRender: function() {\n var color = new fabric.Color(this.color);\n return color.getAlpha() < 1 || !!this.shadow;\n },\n\n /**\n * Removes brush shadow styles\n * @private\n */\n _resetShadow: function() {\n var ctx = this.canvas.contextTop;\n\n ctx.shadowColor = '';\n ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0;\n },\n\n /**\n * Check is pointer is outside canvas boundaries\n * @param {Object} pointer\n * @private\n */\n _isOutSideCanvas: function(pointer) {\n return pointer.x < 0 || pointer.x > this.canvas.getWidth() || pointer.y < 0 || pointer.y > this.canvas.getHeight();\n }\n});\n\n\n(function() {\n /**\n * PencilBrush class\n * @class fabric.PencilBrush\n * @extends fabric.BaseBrush\n */\n fabric.PencilBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.PencilBrush.prototype */ {\n\n /**\n * Discard points that are less than `decimate` pixel distant from each other\n * @type Number\n * @default 0.4\n */\n decimate: 0.4,\n\n /**\n * Draws a straight line between last recorded point to current pointer\n * Used for `shift` functionality\n *\n * @type boolean\n * @default false\n */\n drawStraightLine: false,\n\n /**\n * The event modifier key that makes the brush draw a straight line.\n * If `null` or 'none' or any other string that is not a modifier key the feature is disabled.\n * @type {'altKey' | 'shiftKey' | 'ctrlKey' | 'none' | undefined | null}\n */\n straightLineKey: 'shiftKey',\n\n /**\n * Constructor\n * @param {fabric.Canvas} canvas\n * @return {fabric.PencilBrush} Instance of a pencil brush\n */\n initialize: function(canvas) {\n this.canvas = canvas;\n this._points = [];\n },\n\n needsFullRender: function () {\n return this.callSuper('needsFullRender') || this._hasStraightLine;\n },\n\n /**\n * Invoked inside on mouse down and mouse move\n * @param {Object} pointer\n */\n _drawSegment: function (ctx, p1, p2) {\n var midPoint = p1.midPointFrom(p2);\n ctx.quadraticCurveTo(p1.x, p1.y, midPoint.x, midPoint.y);\n return midPoint;\n },\n\n /**\n * Invoked on mouse down\n * @param {Object} pointer\n */\n onMouseDown: function(pointer, options) {\n if (!this.canvas._isMainEvent(options.e)) {\n return;\n }\n this.drawStraightLine = options.e[this.straightLineKey];\n this._prepareForDrawing(pointer);\n // capture coordinates immediately\n // this allows to draw dots (when movement never occurs)\n this._captureDrawingPath(pointer);\n this._render();\n },\n\n /**\n * Invoked on mouse move\n * @param {Object} pointer\n */\n onMouseMove: function(pointer, options) {\n if (!this.canvas._isMainEvent(options.e)) {\n return;\n }\n this.drawStraightLine = options.e[this.straightLineKey];\n if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) {\n return;\n }\n if (this._captureDrawingPath(pointer) && this._points.length > 1) {\n if (this.needsFullRender()) {\n // redraw curve\n // clear top canvas\n this.canvas.clearContext(this.canvas.contextTop);\n this._render();\n }\n else {\n var points = this._points, length = points.length, ctx = this.canvas.contextTop;\n // draw the curve update\n this._saveAndTransform(ctx);\n if (this.oldEnd) {\n ctx.beginPath();\n ctx.moveTo(this.oldEnd.x, this.oldEnd.y);\n }\n this.oldEnd = this._drawSegment(ctx, points[length - 2], points[length - 1], true);\n ctx.stroke();\n ctx.restore();\n }\n }\n },\n\n /**\n * Invoked on mouse up\n */\n onMouseUp: function(options) {\n if (!this.canvas._isMainEvent(options.e)) {\n return true;\n }\n this.drawStraightLine = false;\n this.oldEnd = undefined;\n this._finalizeAndAddPath();\n return false;\n },\n\n /**\n * @private\n * @param {Object} pointer Actual mouse position related to the canvas.\n */\n _prepareForDrawing: function(pointer) {\n\n var p = new fabric.Point(pointer.x, pointer.y);\n\n this._reset();\n this._addPoint(p);\n this.canvas.contextTop.moveTo(p.x, p.y);\n },\n\n /**\n * @private\n * @param {fabric.Point} point Point to be added to points array\n */\n _addPoint: function(point) {\n if (this._points.length > 1 && point.eq(this._points[this._points.length - 1])) {\n return false;\n }\n if (this.drawStraightLine && this._points.length > 1) {\n this._hasStraightLine = true;\n this._points.pop();\n }\n this._points.push(point);\n return true;\n },\n\n /**\n * Clear points array and set contextTop canvas style.\n * @private\n */\n _reset: function() {\n this._points = [];\n this._setBrushStyles(this.canvas.contextTop);\n this._setShadow();\n this._hasStraightLine = false;\n },\n\n /**\n * @private\n * @param {Object} pointer Actual mouse position related to the canvas.\n */\n _captureDrawingPath: function(pointer) {\n var pointerPoint = new fabric.Point(pointer.x, pointer.y);\n return this._addPoint(pointerPoint);\n },\n\n /**\n * Draw a smooth path on the topCanvas using quadraticCurveTo\n * @private\n * @param {CanvasRenderingContext2D} [ctx]\n */\n _render: function(ctx) {\n var i, len,\n p1 = this._points[0],\n p2 = this._points[1];\n ctx = ctx || this.canvas.contextTop;\n this._saveAndTransform(ctx);\n ctx.beginPath();\n //if we only have 2 points in the path and they are the same\n //it means that the user only clicked the canvas without moving the mouse\n //then we should be drawing a dot. A path isn't drawn between two identical dots\n //that's why we set them apart a bit\n if (this._points.length === 2 && p1.x === p2.x && p1.y === p2.y) {\n var width = this.width / 1000;\n p1 = new fabric.Point(p1.x, p1.y);\n p2 = new fabric.Point(p2.x, p2.y);\n p1.x -= width;\n p2.x += width;\n }\n ctx.moveTo(p1.x, p1.y);\n\n for (i = 1, len = this._points.length; i < len; i++) {\n // we pick the point between pi + 1 & pi + 2 as the\n // end point and p1 as our control point.\n this._drawSegment(ctx, p1, p2);\n p1 = this._points[i];\n p2 = this._points[i + 1];\n }\n // Draw last line as a straight line while\n // we wait for the next point to be able to calculate\n // the bezier control point\n ctx.lineTo(p1.x, p1.y);\n ctx.stroke();\n ctx.restore();\n },\n\n /**\n * Converts points to SVG path\n * @param {Array} points Array of points\n * @return {(string|number)[][]} SVG path commands\n */\n convertPointsToSVGPath: function (points) {\n var correction = this.width / 1000;\n return fabric.util.getSmoothPathFromPoints(points, correction);\n },\n\n /**\n * @private\n * @param {(string|number)[][]} pathData SVG path commands\n * @returns {boolean}\n */\n _isEmptySVGPath: function (pathData) {\n var pathString = fabric.util.joinPath(pathData);\n return pathString === 'M 0 0 Q 0 0 0 0 L 0 0';\n },\n\n /**\n * Creates fabric.Path object to add on canvas\n * @param {(string|number)[][]} pathData Path data\n * @return {fabric.Path} Path to add on canvas\n */\n createPath: function(pathData) {\n var path = new fabric.Path(pathData, {\n fill: null,\n stroke: this.color,\n strokeWidth: this.width,\n strokeLineCap: this.strokeLineCap,\n strokeMiterLimit: this.strokeMiterLimit,\n strokeLineJoin: this.strokeLineJoin,\n strokeDashArray: this.strokeDashArray,\n });\n if (this.shadow) {\n this.shadow.affectStroke = true;\n path.shadow = new fabric.Shadow(this.shadow);\n }\n\n return path;\n },\n\n /**\n * Decimate points array with the decimate value\n */\n decimatePoints: function(points, distance) {\n if (points.length <= 2) {\n return points;\n }\n var zoom = this.canvas.getZoom(), adjustedDistance = Math.pow(distance / zoom, 2),\n i, l = points.length - 1, lastPoint = points[0], newPoints = [lastPoint],\n cDistance;\n for (i = 1; i < l - 1; i++) {\n cDistance = Math.pow(lastPoint.x - points[i].x, 2) + Math.pow(lastPoint.y - points[i].y, 2);\n if (cDistance >= adjustedDistance) {\n lastPoint = points[i];\n newPoints.push(lastPoint);\n }\n }\n /**\n * Add the last point from the original line to the end of the array.\n * This ensures decimate doesn't delete the last point on the line, and ensures the line is > 1 point.\n */\n newPoints.push(points[l]);\n return newPoints;\n },\n\n /**\n * On mouseup after drawing the path on contextTop canvas\n * we use the points captured to create an new fabric path object\n * and add it to the fabric canvas.\n */\n _finalizeAndAddPath: function() {\n var ctx = this.canvas.contextTop;\n ctx.closePath();\n if (this.decimate) {\n this._points = this.decimatePoints(this._points, this.decimate);\n }\n var pathData = this.convertPointsToSVGPath(this._points);\n if (this._isEmptySVGPath(pathData)) {\n // do not create 0 width/height paths, as they are\n // rendered inconsistently across browsers\n // Firefox 4, for example, renders a dot,\n // whereas Chrome 10 renders nothing\n this.canvas.requestRenderAll();\n return;\n }\n\n var path = this.createPath(pathData);\n this.canvas.clearContext(this.canvas.contextTop);\n this.canvas.fire('before:path:created', { path: path });\n this.canvas.add(path);\n this.canvas.requestRenderAll();\n path.setCoords();\n this._resetShadow();\n\n\n // fire event 'path' created\n this.canvas.fire('path:created', { path: path });\n }\n });\n})();\n\n\n/**\n * CircleBrush class\n * @class fabric.CircleBrush\n */\nfabric.CircleBrush = fabric.util.createClass(fabric.BaseBrush, /** @lends fabric.CircleBrush.prototype */ {\n\n /**\n * Width of a brush\n * @type Number\n * @default\n */\n width: 10,\n\n /**\n * Constructor\n * @param {fabric.Canvas} canvas\n * @return {fabric.CircleBrush} Instance of a circle brush\n */\n initialize: function(canvas) {\n this.canvas = canvas;\n this.points = [];\n },\n\n /**\n * Invoked inside on mouse down and mouse move\n * @param {Object} pointer\n */\n drawDot: function(pointer) {\n var point = this.addPoint(pointer),\n ctx = this.canvas.contextTop;\n this._saveAndTransform(ctx);\n this.dot(ctx, point);\n ctx.restore();\n },\n\n dot: function(ctx, point) {\n ctx.fillStyle = point.fill;\n ctx.beginPath();\n ctx.arc(point.x, point.y, point.radius, 0, Math.PI * 2, false);\n ctx.closePath();\n ctx.fill();\n },\n\n /**\n * Invoked on mouse down\n */\n onMouseDown: function(pointer) {\n this.points.length = 0;\n this.canvas.clearContext(this.canvas.contextTop);\n this._setShadow();\n this.drawDot(pointer);\n },\n\n /**\n * Render the full state of the brush\n * @private\n */\n _render: function() {\n var ctx = this.canvas.contextTop, i, len,\n points = this.points;\n this._saveAndTransform(ctx);\n for (i = 0, len = points.length; i < len; i++) {\n this.dot(ctx, points[i]);\n }\n ctx.restore();\n },\n\n /**\n * Invoked on mouse move\n * @param {Object} pointer\n */\n onMouseMove: function(pointer) {\n if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) {\n return;\n }\n if (this.needsFullRender()) {\n this.canvas.clearContext(this.canvas.contextTop);\n this.addPoint(pointer);\n this._render();\n }\n else {\n this.drawDot(pointer);\n }\n },\n\n /**\n * Invoked on mouse up\n */\n onMouseUp: function() {\n var originalRenderOnAddRemove = this.canvas.renderOnAddRemove, i, len;\n this.canvas.renderOnAddRemove = false;\n\n var circles = [];\n\n for (i = 0, len = this.points.length; i < len; i++) {\n var point = this.points[i],\n circle = new fabric.Circle({\n radius: point.radius,\n left: point.x,\n top: point.y,\n originX: 'center',\n originY: 'center',\n fill: point.fill\n });\n\n this.shadow && (circle.shadow = new fabric.Shadow(this.shadow));\n\n circles.push(circle);\n }\n var group = new fabric.Group(circles);\n group.canvas = this.canvas;\n\n this.canvas.fire('before:path:created', { path: group });\n this.canvas.add(group);\n this.canvas.fire('path:created', { path: group });\n\n this.canvas.clearContext(this.canvas.contextTop);\n this._resetShadow();\n this.canvas.renderOnAddRemove = originalRenderOnAddRemove;\n this.canvas.requestRenderAll();\n },\n\n /**\n * @param {Object} pointer\n * @return {fabric.Point} Just added pointer point\n */\n addPoint: function(pointer) {\n var pointerPoint = new fabric.Point(pointer.x, pointer.y),\n\n circleRadius = fabric.util.getRandomInt(\n Math.max(0, this.width - 20), this.width + 20) / 2,\n\n circleColor = new fabric.Color(this.color)\n .setAlpha(fabric.util.getRandomInt(0, 100) / 100)\n .toRgba();\n\n pointerPoint.radius = circleRadius;\n pointerPoint.fill = circleColor;\n\n this.points.push(pointerPoint);\n\n return pointerPoint;\n }\n});\n\n\n/**\n * SprayBrush class\n * @class fabric.SprayBrush\n */\nfabric.SprayBrush = fabric.util.createClass( fabric.BaseBrush, /** @lends fabric.SprayBrush.prototype */ {\n\n /**\n * Width of a spray\n * @type Number\n * @default\n */\n width: 10,\n\n /**\n * Density of a spray (number of dots per chunk)\n * @type Number\n * @default\n */\n density: 20,\n\n /**\n * Width of spray dots\n * @type Number\n * @default\n */\n dotWidth: 1,\n\n /**\n * Width variance of spray dots\n * @type Number\n * @default\n */\n dotWidthVariance: 1,\n\n /**\n * Whether opacity of a dot should be random\n * @type Boolean\n * @default\n */\n randomOpacity: false,\n\n /**\n * Whether overlapping dots (rectangles) should be removed (for performance reasons)\n * @type Boolean\n * @default\n */\n optimizeOverlapping: true,\n\n /**\n * Constructor\n * @param {fabric.Canvas} canvas\n * @return {fabric.SprayBrush} Instance of a spray brush\n */\n initialize: function(canvas) {\n this.canvas = canvas;\n this.sprayChunks = [];\n },\n\n /**\n * Invoked on mouse down\n * @param {Object} pointer\n */\n onMouseDown: function(pointer) {\n this.sprayChunks.length = 0;\n this.canvas.clearContext(this.canvas.contextTop);\n this._setShadow();\n\n this.addSprayChunk(pointer);\n this.render(this.sprayChunkPoints);\n },\n\n /**\n * Invoked on mouse move\n * @param {Object} pointer\n */\n onMouseMove: function(pointer) {\n if (this.limitedToCanvasSize === true && this._isOutSideCanvas(pointer)) {\n return;\n }\n this.addSprayChunk(pointer);\n this.render(this.sprayChunkPoints);\n },\n\n /**\n * Invoked on mouse up\n */\n onMouseUp: function() {\n var originalRenderOnAddRemove = this.canvas.renderOnAddRemove;\n this.canvas.renderOnAddRemove = false;\n\n var rects = [];\n\n for (var i = 0, ilen = this.sprayChunks.length; i < ilen; i++) {\n var sprayChunk = this.sprayChunks[i];\n\n for (var j = 0, jlen = sprayChunk.length; j < jlen; j++) {\n\n var rect = new fabric.Rect({\n width: sprayChunk[j].width,\n height: sprayChunk[j].width,\n left: sprayChunk[j].x + 1,\n top: sprayChunk[j].y + 1,\n originX: 'center',\n originY: 'center',\n fill: this.color\n });\n rects.push(rect);\n }\n }\n\n if (this.optimizeOverlapping) {\n rects = this._getOptimizedRects(rects);\n }\n\n var group = new fabric.Group(rects);\n this.shadow && group.set('shadow', new fabric.Shadow(this.shadow));\n this.canvas.fire('before:path:created', { path: group });\n this.canvas.add(group);\n this.canvas.fire('path:created', { path: group });\n\n this.canvas.clearContext(this.canvas.contextTop);\n this._resetShadow();\n this.canvas.renderOnAddRemove = originalRenderOnAddRemove;\n this.canvas.requestRenderAll();\n },\n\n /**\n * @private\n * @param {Array} rects\n */\n _getOptimizedRects: function(rects) {\n\n // avoid creating duplicate rects at the same coordinates\n var uniqueRects = { }, key, i, len;\n\n for (i = 0, len = rects.length; i < len; i++) {\n key = rects[i].left + '' + rects[i].top;\n if (!uniqueRects[key]) {\n uniqueRects[key] = rects[i];\n }\n }\n var uniqueRectsArray = [];\n for (key in uniqueRects) {\n uniqueRectsArray.push(uniqueRects[key]);\n }\n\n return uniqueRectsArray;\n },\n\n /**\n * Render new chunk of spray brush\n */\n render: function(sprayChunk) {\n var ctx = this.canvas.contextTop, i, len;\n ctx.fillStyle = this.color;\n\n this._saveAndTransform(ctx);\n\n for (i = 0, len = sprayChunk.length; i < len; i++) {\n var point = sprayChunk[i];\n if (typeof point.opacity !== 'undefined') {\n ctx.globalAlpha = point.opacity;\n }\n ctx.fillRect(point.x, point.y, point.width, point.width);\n }\n ctx.restore();\n },\n\n /**\n * Render all spray chunks\n */\n _render: function() {\n var ctx = this.canvas.contextTop, i, ilen;\n ctx.fillStyle = this.color;\n\n this._saveAndTransform(ctx);\n\n for (i = 0, ilen = this.sprayChunks.length; i < ilen; i++) {\n this.render(this.sprayChunks[i]);\n }\n ctx.restore();\n },\n\n /**\n * @param {Object} pointer\n */\n addSprayChunk: function(pointer) {\n this.sprayChunkPoints = [];\n\n var x, y, width, radius = this.width / 2, i;\n\n for (i = 0; i < this.density; i++) {\n\n x = fabric.util.getRandomInt(pointer.x - radius, pointer.x + radius);\n y = fabric.util.getRandomInt(pointer.y - radius, pointer.y + radius);\n\n if (this.dotWidthVariance) {\n width = fabric.util.getRandomInt(\n // bottom clamp width to 1\n Math.max(1, this.dotWidth - this.dotWidthVariance),\n this.dotWidth + this.dotWidthVariance);\n }\n else {\n width = this.dotWidth;\n }\n\n var point = new fabric.Point(x, y);\n point.width = width;\n\n if (this.randomOpacity) {\n point.opacity = fabric.util.getRandomInt(0, 100) / 100;\n }\n\n this.sprayChunkPoints.push(point);\n }\n\n this.sprayChunks.push(this.sprayChunkPoints);\n }\n});\n\n\n/**\n * PatternBrush class\n * @class fabric.PatternBrush\n * @extends fabric.BaseBrush\n */\nfabric.PatternBrush = fabric.util.createClass(fabric.PencilBrush, /** @lends fabric.PatternBrush.prototype */ {\n\n getPatternSrc: function() {\n\n var dotWidth = 20,\n dotDistance = 5,\n patternCanvas = fabric.util.createCanvasElement(),\n patternCtx = patternCanvas.getContext('2d');\n\n patternCanvas.width = patternCanvas.height = dotWidth + dotDistance;\n\n patternCtx.fillStyle = this.color;\n patternCtx.beginPath();\n patternCtx.arc(dotWidth / 2, dotWidth / 2, dotWidth / 2, 0, Math.PI * 2, false);\n patternCtx.closePath();\n patternCtx.fill();\n\n return patternCanvas;\n },\n\n getPatternSrcFunction: function() {\n return String(this.getPatternSrc).replace('this.color', '\"' + this.color + '\"');\n },\n\n /**\n * Creates \"pattern\" instance property\n * @param {CanvasRenderingContext2D} ctx\n */\n getPattern: function(ctx) {\n return ctx.createPattern(this.source || this.getPatternSrc(), 'repeat');\n },\n\n /**\n * Sets brush styles\n * @param {CanvasRenderingContext2D} ctx\n */\n _setBrushStyles: function(ctx) {\n this.callSuper('_setBrushStyles', ctx);\n ctx.strokeStyle = this.getPattern(ctx);\n },\n\n /**\n * Creates path\n */\n createPath: function(pathData) {\n var path = this.callSuper('createPath', pathData),\n topLeft = path._getLeftTopCoords().scalarAdd(path.strokeWidth / 2);\n\n path.stroke = new fabric.Pattern({\n source: this.source || this.getPatternSrcFunction(),\n offsetX: -topLeft.x,\n offsetY: -topLeft.y\n });\n return path;\n }\n});\n\n\n(function() {\n\n var getPointer = fabric.util.getPointer,\n degreesToRadians = fabric.util.degreesToRadians,\n isTouchEvent = fabric.util.isTouchEvent;\n\n /**\n * Canvas class\n * @class fabric.Canvas\n * @extends fabric.StaticCanvas\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#canvas}\n * @see {@link fabric.Canvas#initialize} for constructor definition\n *\n * @fires object:modified at the end of a transform or any change when statefull is true\n * @fires object:rotating while an object is being rotated from the control\n * @fires object:scaling while an object is being scaled by controls\n * @fires object:moving while an object is being dragged\n * @fires object:skewing while an object is being skewed from the controls\n *\n * @fires before:transform before a transform is is started\n * @fires before:selection:cleared\n * @fires selection:cleared\n * @fires selection:updated\n * @fires selection:created\n *\n * @fires path:created after a drawing operation ends and the path is added\n * @fires mouse:down\n * @fires mouse:move\n * @fires mouse:up\n * @fires mouse:down:before on mouse down, before the inner fabric logic runs\n * @fires mouse:move:before on mouse move, before the inner fabric logic runs\n * @fires mouse:up:before on mouse up, before the inner fabric logic runs\n * @fires mouse:over\n * @fires mouse:out\n * @fires mouse:dblclick whenever a native dbl click event fires on the canvas.\n *\n * @fires dragover\n * @fires dragenter\n * @fires dragleave\n * @fires drop:before before drop event. same native event. This is added to handle edge cases\n * @fires drop\n * @fires after:render at the end of the render process, receives the context in the callback\n * @fires before:render at start the render process, receives the context in the callback\n *\n */\n fabric.Canvas = fabric.util.createClass(fabric.StaticCanvas, /** @lends fabric.Canvas.prototype */ {\n\n /**\n * Constructor\n * @param {HTMLElement | String} el <canvas> element to initialize instance on\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(el, options) {\n options || (options = { });\n this.renderAndResetBound = this.renderAndReset.bind(this);\n this.requestRenderAllBound = this.requestRenderAll.bind(this);\n this._initStatic(el, options);\n this._initInteractive();\n this._createCacheCanvas();\n },\n\n /**\n * When true, objects can be transformed by one side (unproportionally)\n * when dragged on the corners that normally would not do that.\n * @type Boolean\n * @default\n * @since fabric 4.0 // changed name and default value\n */\n uniformScaling: true,\n\n /**\n * Indicates which key switches uniform scaling.\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled.\n * totally wrong named. this sounds like `uniform scaling`\n * if Canvas.uniformScaling is true, pressing this will set it to false\n * and viceversa.\n * @since 1.6.2\n * @type String\n * @default\n */\n uniScaleKey: 'shiftKey',\n\n /**\n * When true, objects use center point as the origin of scale transformation.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredScaling: false,\n\n /**\n * When true, objects use center point as the origin of rotate transformation.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredRotation: false,\n\n /**\n * Indicates which key enable centered Transform\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled feature disabled.\n * @since 1.6.2\n * @type String\n * @default\n */\n centeredKey: 'altKey',\n\n /**\n * Indicates which key enable alternate action on corner\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled feature disabled.\n * @since 1.6.2\n * @type String\n * @default\n */\n altActionKey: 'shiftKey',\n\n /**\n * Indicates that canvas is interactive. This property should not be changed.\n * @type Boolean\n * @default\n */\n interactive: true,\n\n /**\n * Indicates whether group selection should be enabled\n * @type Boolean\n * @default\n */\n selection: true,\n\n /**\n * Indicates which key or keys enable multiple click selection\n * Pass value as a string or array of strings\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * If `null` or empty or containing any other string that is not a modifier key\n * feature is disabled.\n * @since 1.6.2\n * @type String|Array\n * @default\n */\n selectionKey: 'shiftKey',\n\n /**\n * Indicates which key enable alternative selection\n * in case of target overlapping with active object\n * values: 'altKey', 'shiftKey', 'ctrlKey'.\n * For a series of reason that come from the general expectations on how\n * things should work, this feature works only for preserveObjectStacking true.\n * If `null` or 'none' or any other string that is not a modifier key\n * feature is disabled.\n * @since 1.6.5\n * @type null|String\n * @default\n */\n altSelectionKey: null,\n\n /**\n * Color of selection\n * @type String\n * @default\n */\n selectionColor: 'rgba(100, 100, 255, 0.3)', // blue\n\n /**\n * Default dash array pattern\n * If not empty the selection border is dashed\n * @type Array\n */\n selectionDashArray: [],\n\n /**\n * Color of the border of selection (usually slightly darker than color of selection itself)\n * @type String\n * @default\n */\n selectionBorderColor: 'rgba(255, 255, 255, 0.3)',\n\n /**\n * Width of a line used in object/group selection\n * @type Number\n * @default\n */\n selectionLineWidth: 1,\n\n /**\n * Select only shapes that are fully contained in the dragged selection rectangle.\n * @type Boolean\n * @default\n */\n selectionFullyContained: false,\n\n /**\n * Default cursor value used when hovering over an object on canvas\n * @type String\n * @default\n */\n hoverCursor: 'move',\n\n /**\n * Default cursor value used when moving an object on canvas\n * @type String\n * @default\n */\n moveCursor: 'move',\n\n /**\n * Default cursor value used for the entire canvas\n * @type String\n * @default\n */\n defaultCursor: 'default',\n\n /**\n * Cursor value used during free drawing\n * @type String\n * @default\n */\n freeDrawingCursor: 'crosshair',\n\n /**\n * Cursor value used for disabled elements ( corners with disabled action )\n * @type String\n * @since 2.0.0\n * @default\n */\n notAllowedCursor: 'not-allowed',\n\n /**\n * Default element class that's given to wrapper (div) element of canvas\n * @type String\n * @default\n */\n containerClass: 'canvas-container',\n\n /**\n * When true, object detection happens on per-pixel basis rather than on per-bounding-box\n * @type Boolean\n * @default\n */\n perPixelTargetFind: false,\n\n /**\n * Number of pixels around target pixel to tolerate (consider active) during object detection\n * @type Number\n * @default\n */\n targetFindTolerance: 0,\n\n /**\n * When true, target detection is skipped. Target detection will return always undefined.\n * click selection won't work anymore, events will fire with no targets.\n * if something is selected before setting it to true, it will be deselected at the first click.\n * area selection will still work. check the `selection` property too.\n * if you deactivate both, you should look into staticCanvas.\n * @type Boolean\n * @default\n */\n skipTargetFind: false,\n\n /**\n * When true, mouse events on canvas (mousedown/mousemove/mouseup) result in free drawing.\n * After mousedown, mousemove creates a shape,\n * and then mouseup finalizes it and adds an instance of `fabric.Path` onto canvas.\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-4#free_drawing}\n * @type Boolean\n * @default\n */\n isDrawingMode: false,\n\n /**\n * Indicates whether objects should remain in current stack position when selected.\n * When false objects are brought to top and rendered as part of the selection group\n * @type Boolean\n * @default\n */\n preserveObjectStacking: false,\n\n /**\n * Indicates the angle that an object will lock to while rotating.\n * @type Number\n * @since 1.6.7\n * @default\n */\n snapAngle: 0,\n\n /**\n * Indicates the distance from the snapAngle the rotation will lock to the snapAngle.\n * When `null`, the snapThreshold will default to the snapAngle.\n * @type null|Number\n * @since 1.6.7\n * @default\n */\n snapThreshold: null,\n\n /**\n * Indicates if the right click on canvas can output the context menu or not\n * @type Boolean\n * @since 1.6.5\n * @default\n */\n stopContextMenu: false,\n\n /**\n * Indicates if the canvas can fire right click events\n * @type Boolean\n * @since 1.6.5\n * @default\n */\n fireRightClick: false,\n\n /**\n * Indicates if the canvas can fire middle click events\n * @type Boolean\n * @since 1.7.8\n * @default\n */\n fireMiddleClick: false,\n\n /**\n * Keep track of the subTargets for Mouse Events\n * @type fabric.Object[]\n */\n targets: [],\n\n /**\n * When the option is enabled, PointerEvent is used instead of MouseEvent.\n * @type Boolean\n * @default\n */\n enablePointerEvents: false,\n\n /**\n * Keep track of the hovered target\n * @type fabric.Object\n * @private\n */\n _hoveredTarget: null,\n\n /**\n * hold the list of nested targets hovered\n * @type fabric.Object[]\n * @private\n */\n _hoveredTargets: [],\n\n /**\n * @private\n */\n _initInteractive: function() {\n this._currentTransform = null;\n this._groupSelector = null;\n this._initWrapperElement();\n this._createUpperCanvas();\n this._initEventListeners();\n\n this._initRetinaScaling();\n\n this.freeDrawingBrush = fabric.PencilBrush && new fabric.PencilBrush(this);\n\n this.calcOffset();\n },\n\n /**\n * Divides objects in two groups, one to render immediately\n * and one to render as activeGroup.\n * @return {Array} objects to render immediately and pushes the other in the activeGroup.\n */\n _chooseObjectsToRender: function() {\n var activeObjects = this.getActiveObjects(),\n object, objsToRender, activeGroupObjects;\n\n if (activeObjects.length > 0 && !this.preserveObjectStacking) {\n objsToRender = [];\n activeGroupObjects = [];\n for (var i = 0, length = this._objects.length; i < length; i++) {\n object = this._objects[i];\n if (activeObjects.indexOf(object) === -1 ) {\n objsToRender.push(object);\n }\n else {\n activeGroupObjects.push(object);\n }\n }\n if (activeObjects.length > 1) {\n this._activeObject._objects = activeGroupObjects;\n }\n objsToRender.push.apply(objsToRender, activeGroupObjects);\n }\n else {\n objsToRender = this._objects;\n }\n return objsToRender;\n },\n\n /**\n * Renders both the top canvas and the secondary container canvas.\n * @return {fabric.Canvas} instance\n * @chainable\n */\n renderAll: function () {\n if (this.contextTopDirty && !this._groupSelector && !this.isDrawingMode) {\n this.clearContext(this.contextTop);\n this.contextTopDirty = false;\n }\n if (this.hasLostContext) {\n this.renderTopLayer(this.contextTop);\n this.hasLostContext = false;\n }\n var canvasToDrawOn = this.contextContainer;\n this.renderCanvas(canvasToDrawOn, this._chooseObjectsToRender());\n return this;\n },\n\n renderTopLayer: function(ctx) {\n ctx.save();\n if (this.isDrawingMode && this._isCurrentlyDrawing) {\n this.freeDrawingBrush && this.freeDrawingBrush._render();\n this.contextTopDirty = true;\n }\n // we render the top context - last object\n if (this.selection && this._groupSelector) {\n this._drawSelection(ctx);\n this.contextTopDirty = true;\n }\n ctx.restore();\n },\n\n /**\n * Method to render only the top canvas.\n * Also used to render the group selection box.\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n renderTop: function () {\n var ctx = this.contextTop;\n this.clearContext(ctx);\n this.renderTopLayer(ctx);\n this.fire('after:render');\n return this;\n },\n\n /**\n * @private\n */\n _normalizePointer: function (object, pointer) {\n var m = object.calcTransformMatrix(),\n invertedM = fabric.util.invertTransform(m),\n vptPointer = this.restorePointerVpt(pointer);\n return fabric.util.transformPoint(vptPointer, invertedM);\n },\n\n /**\n * Returns true if object is transparent at a certain location\n * @param {fabric.Object} target Object to check\n * @param {Number} x Left coordinate\n * @param {Number} y Top coordinate\n * @return {Boolean}\n */\n isTargetTransparent: function (target, x, y) {\n // in case the target is the activeObject, we cannot execute this optimization\n // because we need to draw controls too.\n if (target.shouldCache() && target._cacheCanvas && target !== this._activeObject) {\n var normalizedPointer = this._normalizePointer(target, {x: x, y: y}),\n targetRelativeX = Math.max(target.cacheTranslationX + (normalizedPointer.x * target.zoomX), 0),\n targetRelativeY = Math.max(target.cacheTranslationY + (normalizedPointer.y * target.zoomY), 0);\n\n var isTransparent = fabric.util.isTransparent(\n target._cacheContext, Math.round(targetRelativeX), Math.round(targetRelativeY), this.targetFindTolerance);\n\n return isTransparent;\n }\n\n var ctx = this.contextCache,\n originalColor = target.selectionBackgroundColor, v = this.viewportTransform;\n\n target.selectionBackgroundColor = '';\n\n this.clearContext(ctx);\n\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n target.render(ctx);\n ctx.restore();\n\n target.selectionBackgroundColor = originalColor;\n\n var isTransparent = fabric.util.isTransparent(\n ctx, x, y, this.targetFindTolerance);\n\n return isTransparent;\n },\n\n /**\n * takes an event and determines if selection key has been pressed\n * @private\n * @param {Event} e Event object\n */\n _isSelectionKeyPressed: function(e) {\n var selectionKeyPressed = false;\n\n if (Array.isArray(this.selectionKey)) {\n selectionKeyPressed = !!this.selectionKey.find(function(key) { return e[key] === true; });\n }\n else {\n selectionKeyPressed = e[this.selectionKey];\n }\n\n return selectionKeyPressed;\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n */\n _shouldClearSelection: function (e, target) {\n var activeObjects = this.getActiveObjects(),\n activeObject = this._activeObject;\n\n return (\n !target\n ||\n (target &&\n activeObject &&\n activeObjects.length > 1 &&\n activeObjects.indexOf(target) === -1 &&\n activeObject !== target &&\n !this._isSelectionKeyPressed(e))\n ||\n (target && !target.evented)\n ||\n (target &&\n !target.selectable &&\n activeObject &&\n activeObject !== target)\n );\n },\n\n /**\n * centeredScaling from object can't override centeredScaling from canvas.\n * this should be fixed, since object setting should take precedence over canvas.\n * also this should be something that will be migrated in the control properties.\n * as ability to define the origin of the transformation that the control provide.\n * @private\n * @param {fabric.Object} target\n * @param {String} action\n * @param {Boolean} altKey\n */\n _shouldCenterTransform: function (target, action, altKey) {\n if (!target) {\n return;\n }\n\n var centerTransform;\n\n if (action === 'scale' || action === 'scaleX' || action === 'scaleY' || action === 'resizing') {\n centerTransform = this.centeredScaling || target.centeredScaling;\n }\n else if (action === 'rotate') {\n centerTransform = this.centeredRotation || target.centeredRotation;\n }\n\n return centerTransform ? !altKey : altKey;\n },\n\n /**\n * should disappear before release 4.0\n * @private\n */\n _getOriginFromCorner: function(target, corner) {\n var origin = {\n x: target.originX,\n y: target.originY\n };\n\n if (corner === 'ml' || corner === 'tl' || corner === 'bl') {\n origin.x = 'right';\n }\n else if (corner === 'mr' || corner === 'tr' || corner === 'br') {\n origin.x = 'left';\n }\n\n if (corner === 'tl' || corner === 'mt' || corner === 'tr') {\n origin.y = 'bottom';\n }\n else if (corner === 'bl' || corner === 'mb' || corner === 'br') {\n origin.y = 'top';\n }\n return origin;\n },\n\n /**\n * @private\n * @param {Boolean} alreadySelected true if target is already selected\n * @param {String} corner a string representing the corner ml, mr, tl ...\n * @param {Event} e Event object\n * @param {fabric.Object} [target] inserted back to help overriding. Unused\n */\n _getActionFromCorner: function(alreadySelected, corner, e, target) {\n if (!corner || !alreadySelected) {\n return 'drag';\n }\n var control = target.controls[corner];\n return control.getActionName(e, control, target);\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n */\n _setupCurrentTransform: function (e, target, alreadySelected) {\n if (!target) {\n return;\n }\n\n var pointer = this.getPointer(e), corner = target.__corner,\n control = target.controls[corner],\n actionHandler = (alreadySelected && corner) ?\n control.getActionHandler(e, target, control) : fabric.controlsUtils.dragHandler,\n action = this._getActionFromCorner(alreadySelected, corner, e, target),\n origin = this._getOriginFromCorner(target, corner),\n altKey = e[this.centeredKey],\n transform = {\n target: target,\n action: action,\n actionHandler: actionHandler,\n corner: corner,\n scaleX: target.scaleX,\n scaleY: target.scaleY,\n skewX: target.skewX,\n skewY: target.skewY,\n // used by transation\n offsetX: pointer.x - target.left,\n offsetY: pointer.y - target.top,\n originX: origin.x,\n originY: origin.y,\n ex: pointer.x,\n ey: pointer.y,\n lastX: pointer.x,\n lastY: pointer.y,\n // unsure they are useful anymore.\n // left: target.left,\n // top: target.top,\n theta: degreesToRadians(target.angle),\n // end of unsure\n width: target.width * target.scaleX,\n shiftKey: e.shiftKey,\n altKey: altKey,\n original: fabric.util.saveObjectTransform(target),\n };\n\n if (this._shouldCenterTransform(target, action, altKey)) {\n transform.originX = 'center';\n transform.originY = 'center';\n }\n transform.original.originX = origin.x;\n transform.original.originY = origin.y;\n this._currentTransform = transform;\n this._beforeTransform(e);\n },\n\n /**\n * Set the cursor type of the canvas element\n * @param {String} value Cursor type of the canvas element.\n * @see http://www.w3.org/TR/css3-ui/#cursor\n */\n setCursor: function (value) {\n this.upperCanvasEl.style.cursor = value;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx to draw the selection on\n */\n _drawSelection: function (ctx) {\n var selector = this._groupSelector,\n viewportStart = new fabric.Point(selector.ex, selector.ey),\n start = fabric.util.transformPoint(viewportStart, this.viewportTransform),\n viewportExtent = new fabric.Point(selector.ex + selector.left, selector.ey + selector.top),\n extent = fabric.util.transformPoint(viewportExtent, this.viewportTransform),\n minX = Math.min(start.x, extent.x),\n minY = Math.min(start.y, extent.y),\n maxX = Math.max(start.x, extent.x),\n maxY = Math.max(start.y, extent.y),\n strokeOffset = this.selectionLineWidth / 2;\n\n if (this.selectionColor) {\n ctx.fillStyle = this.selectionColor;\n ctx.fillRect(minX, minY, maxX - minX, maxY - minY);\n }\n\n if (!this.selectionLineWidth || !this.selectionBorderColor) {\n return;\n }\n ctx.lineWidth = this.selectionLineWidth;\n ctx.strokeStyle = this.selectionBorderColor;\n\n minX += strokeOffset;\n minY += strokeOffset;\n maxX -= strokeOffset;\n maxY -= strokeOffset;\n // selection border\n fabric.Object.prototype._setLineDash.call(this, ctx, this.selectionDashArray);\n ctx.strokeRect(minX, minY, maxX - minX, maxY - minY);\n },\n\n /**\n * Method that determines what object we are clicking on\n * the skipGroup parameter is for internal use, is needed for shift+click action\n * 11/09/2018 TODO: would be cool if findTarget could discern between being a full target\n * or the outside part of the corner.\n * @param {Event} e mouse event\n * @param {Boolean} skipGroup when true, activeGroup is skipped and only objects are traversed through\n * @return {fabric.Object} the target found\n */\n findTarget: function (e, skipGroup) {\n if (this.skipTargetFind) {\n return;\n }\n\n var ignoreZoom = true,\n pointer = this.getPointer(e, ignoreZoom),\n activeObject = this._activeObject,\n aObjects = this.getActiveObjects(),\n activeTarget, activeTargetSubs,\n isTouch = isTouchEvent(e),\n shouldLookForActive = (aObjects.length > 1 && !skipGroup) || aObjects.length === 1;\n\n // first check current group (if one exists)\n // active group does not check sub targets like normal groups.\n // if active group just exits.\n this.targets = [];\n\n // if we hit the corner of an activeObject, let's return that.\n if (shouldLookForActive && activeObject._findTargetCorner(pointer, isTouch)) {\n return activeObject;\n }\n if (aObjects.length > 1 && !skipGroup && activeObject === this._searchPossibleTargets([activeObject], pointer)) {\n return activeObject;\n }\n if (aObjects.length === 1 &&\n activeObject === this._searchPossibleTargets([activeObject], pointer)) {\n if (!this.preserveObjectStacking) {\n return activeObject;\n }\n else {\n activeTarget = activeObject;\n activeTargetSubs = this.targets;\n this.targets = [];\n }\n }\n var target = this._searchPossibleTargets(this._objects, pointer);\n if (e[this.altSelectionKey] && target && activeTarget && target !== activeTarget) {\n target = activeTarget;\n this.targets = activeTargetSubs;\n }\n return target;\n },\n\n /**\n * Checks point is inside the object.\n * @param {Object} [pointer] x,y object of point coordinates we want to check.\n * @param {fabric.Object} obj Object to test against\n * @param {Object} [globalPointer] x,y object of point coordinates relative to canvas used to search per pixel target.\n * @return {Boolean} true if point is contained within an area of given object\n * @private\n */\n _checkTarget: function(pointer, obj, globalPointer) {\n if (obj &&\n obj.visible &&\n obj.evented &&\n // http://www.geog.ubc.ca/courses/klink/gis.notes/ncgia/u32.html\n // http://idav.ucdavis.edu/~okreylos/TAship/Spring2000/PointInPolygon.html\n obj.containsPoint(pointer)\n ) {\n if ((this.perPixelTargetFind || obj.perPixelTargetFind) && !obj.isEditing) {\n var isTransparent = this.isTargetTransparent(obj, globalPointer.x, globalPointer.y);\n if (!isTransparent) {\n return true;\n }\n }\n else {\n return true;\n }\n }\n },\n\n /**\n * Function used to search inside objects an object that contains pointer in bounding box or that contains pointerOnCanvas when painted\n * @param {Array} [objects] objects array to look into\n * @param {Object} [pointer] x,y object of point coordinates we want to check.\n * @return {fabric.Object} object that contains pointer\n * @private\n */\n _searchPossibleTargets: function(objects, pointer) {\n // Cache all targets where their bounding box contains point.\n var target, i = objects.length, subTarget;\n // Do not check for currently grouped objects, since we check the parent group itself.\n // until we call this function specifically to search inside the activeGroup\n while (i--) {\n var objToCheck = objects[i];\n var pointerToUse = objToCheck.group ?\n this._normalizePointer(objToCheck.group, pointer) : pointer;\n if (this._checkTarget(pointerToUse, objToCheck, pointer)) {\n target = objects[i];\n if (target.subTargetCheck && target instanceof fabric.Group) {\n subTarget = this._searchPossibleTargets(target._objects, pointer);\n subTarget && this.targets.push(subTarget);\n }\n break;\n }\n }\n return target;\n },\n\n /**\n * Returns pointer coordinates without the effect of the viewport\n * @param {Object} pointer with \"x\" and \"y\" number values\n * @return {Object} object with \"x\" and \"y\" number values\n */\n restorePointerVpt: function(pointer) {\n return fabric.util.transformPoint(\n pointer,\n fabric.util.invertTransform(this.viewportTransform)\n );\n },\n\n /**\n * Returns pointer coordinates relative to canvas.\n * Can return coordinates with or without viewportTransform.\n * ignoreZoom false gives back coordinates that represent\n * the point clicked on canvas element.\n * ignoreZoom true gives back coordinates after being processed\n * by the viewportTransform ( sort of coordinates of what is displayed\n * on the canvas where you are clicking.\n * ignoreZoom true = HTMLElement coordinates relative to top,left\n * ignoreZoom false, default = fabric space coordinates, the same used for shape position\n * To interact with your shapes top and left you want to use ignoreZoom true\n * most of the time, while ignoreZoom false will give you coordinates\n * compatible with the object.oCoords system.\n * of the time.\n * @param {Event} e\n * @param {Boolean} ignoreZoom\n * @return {Object} object with \"x\" and \"y\" number values\n */\n getPointer: function (e, ignoreZoom) {\n // return cached values if we are in the event processing chain\n if (this._absolutePointer && !ignoreZoom) {\n return this._absolutePointer;\n }\n if (this._pointer && ignoreZoom) {\n return this._pointer;\n }\n\n var pointer = getPointer(e),\n upperCanvasEl = this.upperCanvasEl,\n bounds = upperCanvasEl.getBoundingClientRect(),\n boundsWidth = bounds.width || 0,\n boundsHeight = bounds.height || 0,\n cssScale;\n\n if (!boundsWidth || !boundsHeight ) {\n if ('top' in bounds && 'bottom' in bounds) {\n boundsHeight = Math.abs( bounds.top - bounds.bottom );\n }\n if ('right' in bounds && 'left' in bounds) {\n boundsWidth = Math.abs( bounds.right - bounds.left );\n }\n }\n\n this.calcOffset();\n pointer.x = pointer.x - this._offset.left;\n pointer.y = pointer.y - this._offset.top;\n if (!ignoreZoom) {\n pointer = this.restorePointerVpt(pointer);\n }\n\n var retinaScaling = this.getRetinaScaling();\n if (retinaScaling !== 1) {\n pointer.x /= retinaScaling;\n pointer.y /= retinaScaling;\n }\n\n if (boundsWidth === 0 || boundsHeight === 0) {\n // If bounds are not available (i.e. not visible), do not apply scale.\n cssScale = { width: 1, height: 1 };\n }\n else {\n cssScale = {\n width: upperCanvasEl.width / boundsWidth,\n height: upperCanvasEl.height / boundsHeight\n };\n }\n\n return {\n x: pointer.x * cssScale.width,\n y: pointer.y * cssScale.height\n };\n },\n\n /**\n * @private\n * @throws {CANVAS_INIT_ERROR} If canvas can not be initialized\n */\n _createUpperCanvas: function () {\n var lowerCanvasClass = this.lowerCanvasEl.className.replace(/\\s*lower-canvas\\s*/, ''),\n lowerCanvasEl = this.lowerCanvasEl, upperCanvasEl = this.upperCanvasEl;\n\n // there is no need to create a new upperCanvas element if we have already one.\n if (upperCanvasEl) {\n upperCanvasEl.className = '';\n }\n else {\n upperCanvasEl = this._createCanvasElement();\n this.upperCanvasEl = upperCanvasEl;\n }\n fabric.util.addClass(upperCanvasEl, 'upper-canvas ' + lowerCanvasClass);\n\n this.wrapperEl.appendChild(upperCanvasEl);\n\n this._copyCanvasStyle(lowerCanvasEl, upperCanvasEl);\n this._applyCanvasStyle(upperCanvasEl);\n this.contextTop = upperCanvasEl.getContext('2d');\n },\n\n /**\n * Returns context of top canvas where interactions are drawn\n * @returns {CanvasRenderingContext2D}\n */\n getTopContext: function () {\n return this.contextTop;\n },\n\n /**\n * @private\n */\n _createCacheCanvas: function () {\n this.cacheCanvasEl = this._createCanvasElement();\n this.cacheCanvasEl.setAttribute('width', this.width);\n this.cacheCanvasEl.setAttribute('height', this.height);\n this.contextCache = this.cacheCanvasEl.getContext('2d');\n },\n\n /**\n * @private\n */\n _initWrapperElement: function () {\n this.wrapperEl = fabric.util.wrapElement(this.lowerCanvasEl, 'div', {\n 'class': this.containerClass\n });\n fabric.util.setStyle(this.wrapperEl, {\n width: this.width + 'px',\n height: this.height + 'px',\n position: 'relative'\n });\n fabric.util.makeElementUnselectable(this.wrapperEl);\n },\n\n /**\n * @private\n * @param {HTMLElement} element canvas element to apply styles on\n */\n _applyCanvasStyle: function (element) {\n var width = this.width || element.width,\n height = this.height || element.height;\n\n fabric.util.setStyle(element, {\n position: 'absolute',\n width: width + 'px',\n height: height + 'px',\n left: 0,\n top: 0,\n 'touch-action': this.allowTouchScrolling ? 'manipulation' : 'none',\n '-ms-touch-action': this.allowTouchScrolling ? 'manipulation' : 'none'\n });\n element.width = width;\n element.height = height;\n fabric.util.makeElementUnselectable(element);\n },\n\n /**\n * Copy the entire inline style from one element (fromEl) to another (toEl)\n * @private\n * @param {Element} fromEl Element style is copied from\n * @param {Element} toEl Element copied style is applied to\n */\n _copyCanvasStyle: function (fromEl, toEl) {\n toEl.style.cssText = fromEl.style.cssText;\n },\n\n /**\n * Returns context of canvas where object selection is drawn\n * @return {CanvasRenderingContext2D}\n */\n getSelectionContext: function() {\n return this.contextTop;\n },\n\n /**\n * Returns <canvas> element on which object selection is drawn\n * @return {HTMLCanvasElement}\n */\n getSelectionElement: function () {\n return this.upperCanvasEl;\n },\n\n /**\n * Returns currently active object\n * @return {fabric.Object} active object\n */\n getActiveObject: function () {\n return this._activeObject;\n },\n\n /**\n * Returns an array with the current selected objects\n * @return {fabric.Object} active object\n */\n getActiveObjects: function () {\n var active = this._activeObject;\n if (active) {\n if (active.type === 'activeSelection' && active._objects) {\n return active._objects.slice(0);\n }\n else {\n return [active];\n }\n }\n return [];\n },\n\n /**\n * @private\n * @param {fabric.Object} obj Object that was removed\n */\n _onObjectRemoved: function(obj) {\n // removing active object should fire \"selection:cleared\" events\n if (obj === this._activeObject) {\n this.fire('before:selection:cleared', { target: obj });\n this._discardActiveObject();\n this.fire('selection:cleared', { target: obj });\n obj.fire('deselected');\n }\n if (obj === this._hoveredTarget){\n this._hoveredTarget = null;\n this._hoveredTargets = [];\n }\n this.callSuper('_onObjectRemoved', obj);\n },\n\n /**\n * @private\n * Compares the old activeObject with the current one and fires correct events\n * @param {fabric.Object} obj old activeObject\n */\n _fireSelectionEvents: function(oldObjects, e) {\n var somethingChanged = false, objects = this.getActiveObjects(),\n added = [], removed = [];\n oldObjects.forEach(function(oldObject) {\n if (objects.indexOf(oldObject) === -1) {\n somethingChanged = true;\n oldObject.fire('deselected', {\n e: e,\n target: oldObject\n });\n removed.push(oldObject);\n }\n });\n objects.forEach(function(object) {\n if (oldObjects.indexOf(object) === -1) {\n somethingChanged = true;\n object.fire('selected', {\n e: e,\n target: object\n });\n added.push(object);\n }\n });\n if (oldObjects.length > 0 && objects.length > 0) {\n somethingChanged && this.fire('selection:updated', {\n e: e,\n selected: added,\n deselected: removed,\n });\n }\n else if (objects.length > 0) {\n this.fire('selection:created', {\n e: e,\n selected: added,\n });\n }\n else if (oldObjects.length > 0) {\n this.fire('selection:cleared', {\n e: e,\n deselected: removed,\n });\n }\n },\n\n /**\n * Sets given object as the only active object on canvas\n * @param {fabric.Object} object Object to set as an active one\n * @param {Event} [e] Event (passed along when firing \"object:selected\")\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n setActiveObject: function (object, e) {\n var currentActives = this.getActiveObjects();\n this._setActiveObject(object, e);\n this._fireSelectionEvents(currentActives, e);\n return this;\n },\n\n /**\n * This is a private method for now.\n * This is supposed to be equivalent to setActiveObject but without firing\n * any event. There is commitment to have this stay this way.\n * This is the functional part of setActiveObject.\n * @private\n * @param {Object} object to set as active\n * @param {Event} [e] Event (passed along when firing \"object:selected\")\n * @return {Boolean} true if the selection happened\n */\n _setActiveObject: function(object, e) {\n if (this._activeObject === object) {\n return false;\n }\n if (!this._discardActiveObject(e, object)) {\n return false;\n }\n if (object.onSelect({ e: e })) {\n return false;\n }\n this._activeObject = object;\n return true;\n },\n\n /**\n * This is a private method for now.\n * This is supposed to be equivalent to discardActiveObject but without firing\n * any events. There is commitment to have this stay this way.\n * This is the functional part of discardActiveObject.\n * @param {Event} [e] Event (passed along when firing \"object:deselected\")\n * @param {Object} object to set as active\n * @return {Boolean} true if the selection happened\n * @private\n */\n _discardActiveObject: function(e, object) {\n var obj = this._activeObject;\n if (obj) {\n // onDeselect return TRUE to cancel selection;\n if (obj.onDeselect({ e: e, object: object })) {\n return false;\n }\n this._activeObject = null;\n }\n return true;\n },\n\n /**\n * Discards currently active object and fire events. If the function is called by fabric\n * as a consequence of a mouse event, the event is passed as a parameter and\n * sent to the fire function for the custom events. When used as a method the\n * e param does not have any application.\n * @param {event} e\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n discardActiveObject: function (e) {\n var currentActives = this.getActiveObjects(), activeObject = this.getActiveObject();\n if (currentActives.length) {\n this.fire('before:selection:cleared', { target: activeObject, e: e });\n }\n this._discardActiveObject(e);\n this._fireSelectionEvents(currentActives, e);\n return this;\n },\n\n /**\n * Clears a canvas element and removes all event listeners\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n dispose: function () {\n var wrapper = this.wrapperEl;\n this.removeListeners();\n wrapper.removeChild(this.upperCanvasEl);\n wrapper.removeChild(this.lowerCanvasEl);\n this.contextCache = null;\n this.contextTop = null;\n ['upperCanvasEl', 'cacheCanvasEl'].forEach((function(element) {\n fabric.util.cleanUpJsdomNode(this[element]);\n this[element] = undefined;\n }).bind(this));\n if (wrapper.parentNode) {\n wrapper.parentNode.replaceChild(this.lowerCanvasEl, this.wrapperEl);\n }\n delete this.wrapperEl;\n fabric.StaticCanvas.prototype.dispose.call(this);\n return this;\n },\n\n /**\n * Clears all contexts (background, main, top) of an instance\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n clear: function () {\n // this.discardActiveGroup();\n this.discardActiveObject();\n this.clearContext(this.contextTop);\n return this.callSuper('clear');\n },\n\n /**\n * Draws objects' controls (borders/controls)\n * @param {CanvasRenderingContext2D} ctx Context to render controls on\n */\n drawControls: function(ctx) {\n var activeObject = this._activeObject;\n\n if (activeObject) {\n activeObject._renderControls(ctx);\n }\n },\n\n /**\n * @private\n */\n _toObject: function(instance, methodName, propertiesToInclude) {\n //If the object is part of the current selection group, it should\n //be transformed appropriately\n //i.e. it should be serialised as it would appear if the selection group\n //were to be destroyed.\n var originalProperties = this._realizeGroupTransformOnObject(instance),\n object = this.callSuper('_toObject', instance, methodName, propertiesToInclude);\n //Undo the damage we did by changing all of its properties\n this._unwindGroupTransformOnObject(instance, originalProperties);\n return object;\n },\n\n /**\n * Realises an object's group transformation on it\n * @private\n * @param {fabric.Object} [instance] the object to transform (gets mutated)\n * @returns the original values of instance which were changed\n */\n _realizeGroupTransformOnObject: function(instance) {\n if (instance.group && instance.group.type === 'activeSelection' && this._activeObject === instance.group) {\n var layoutProps = ['angle', 'flipX', 'flipY', 'left', 'scaleX', 'scaleY', 'skewX', 'skewY', 'top'];\n //Copy all the positionally relevant properties across now\n var originalValues = {};\n layoutProps.forEach(function(prop) {\n originalValues[prop] = instance[prop];\n });\n fabric.util.addTransformToObject(instance, this._activeObject.calcOwnMatrix());\n return originalValues;\n }\n else {\n return null;\n }\n },\n\n /**\n * Restores the changed properties of instance\n * @private\n * @param {fabric.Object} [instance] the object to un-transform (gets mutated)\n * @param {Object} [originalValues] the original values of instance, as returned by _realizeGroupTransformOnObject\n */\n _unwindGroupTransformOnObject: function(instance, originalValues) {\n if (originalValues) {\n instance.set(originalValues);\n }\n },\n\n /**\n * @private\n */\n _setSVGObject: function(markup, instance, reviver) {\n //If the object is in a selection group, simulate what would happen to that\n //object when the group is deselected\n var originalProperties = this._realizeGroupTransformOnObject(instance);\n this.callSuper('_setSVGObject', markup, instance, reviver);\n this._unwindGroupTransformOnObject(instance, originalProperties);\n },\n\n setViewportTransform: function (vpt) {\n if (this.renderOnAddRemove && this._activeObject && this._activeObject.isEditing) {\n this._activeObject.clearContextTop();\n }\n fabric.StaticCanvas.prototype.setViewportTransform.call(this, vpt);\n }\n });\n\n // copying static properties manually to work around Opera's bug,\n // where \"prototype\" property is enumerable and overrides existing prototype\n for (var prop in fabric.StaticCanvas) {\n if (prop !== 'prototype') {\n fabric.Canvas[prop] = fabric.StaticCanvas[prop];\n }\n }\n})();\n\n\n(function() {\n\n var addListener = fabric.util.addListener,\n removeListener = fabric.util.removeListener,\n RIGHT_CLICK = 3, MIDDLE_CLICK = 2, LEFT_CLICK = 1,\n addEventOptions = { passive: false };\n\n function checkClick(e, value) {\n return e.button && (e.button === value - 1);\n }\n\n fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ {\n\n /**\n * Contains the id of the touch event that owns the fabric transform\n * @type Number\n * @private\n */\n mainTouchId: null,\n\n /**\n * Adds mouse listeners to canvas\n * @private\n */\n _initEventListeners: function () {\n // in case we initialized the class twice. This should not happen normally\n // but in some kind of applications where the canvas element may be changed\n // this is a workaround to having double listeners.\n this.removeListeners();\n this._bindEvents();\n this.addOrRemove(addListener, 'add');\n },\n\n /**\n * return an event prefix pointer or mouse.\n * @private\n */\n _getEventPrefix: function () {\n return this.enablePointerEvents ? 'pointer' : 'mouse';\n },\n\n addOrRemove: function(functor, eventjsFunctor) {\n var canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n functor(fabric.window, 'resize', this._onResize);\n functor(canvasElement, eventTypePrefix + 'down', this._onMouseDown);\n functor(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n functor(canvasElement, eventTypePrefix + 'out', this._onMouseOut);\n functor(canvasElement, eventTypePrefix + 'enter', this._onMouseEnter);\n functor(canvasElement, 'wheel', this._onMouseWheel);\n functor(canvasElement, 'contextmenu', this._onContextMenu);\n functor(canvasElement, 'dblclick', this._onDoubleClick);\n functor(canvasElement, 'dragover', this._onDragOver);\n functor(canvasElement, 'dragenter', this._onDragEnter);\n functor(canvasElement, 'dragleave', this._onDragLeave);\n functor(canvasElement, 'drop', this._onDrop);\n if (!this.enablePointerEvents) {\n functor(canvasElement, 'touchstart', this._onTouchStart, addEventOptions);\n }\n if (typeof eventjs !== 'undefined' && eventjsFunctor in eventjs) {\n eventjs[eventjsFunctor](canvasElement, 'gesture', this._onGesture);\n eventjs[eventjsFunctor](canvasElement, 'drag', this._onDrag);\n eventjs[eventjsFunctor](canvasElement, 'orientation', this._onOrientationChange);\n eventjs[eventjsFunctor](canvasElement, 'shake', this._onShake);\n eventjs[eventjsFunctor](canvasElement, 'longpress', this._onLongPress);\n }\n },\n\n /**\n * Removes all event listeners\n */\n removeListeners: function() {\n this.addOrRemove(removeListener, 'remove');\n // if you dispose on a mouseDown, before mouse up, you need to clean document to...\n var eventTypePrefix = this._getEventPrefix();\n removeListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp);\n removeListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions);\n removeListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n removeListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n },\n\n /**\n * @private\n */\n _bindEvents: function() {\n if (this.eventsBound) {\n // for any reason we pass here twice we do not want to bind events twice.\n return;\n }\n this._onMouseDown = this._onMouseDown.bind(this);\n this._onTouchStart = this._onTouchStart.bind(this);\n this._onMouseMove = this._onMouseMove.bind(this);\n this._onMouseUp = this._onMouseUp.bind(this);\n this._onTouchEnd = this._onTouchEnd.bind(this);\n this._onResize = this._onResize.bind(this);\n this._onGesture = this._onGesture.bind(this);\n this._onDrag = this._onDrag.bind(this);\n this._onShake = this._onShake.bind(this);\n this._onLongPress = this._onLongPress.bind(this);\n this._onOrientationChange = this._onOrientationChange.bind(this);\n this._onMouseWheel = this._onMouseWheel.bind(this);\n this._onMouseOut = this._onMouseOut.bind(this);\n this._onMouseEnter = this._onMouseEnter.bind(this);\n this._onContextMenu = this._onContextMenu.bind(this);\n this._onDoubleClick = this._onDoubleClick.bind(this);\n this._onDragOver = this._onDragOver.bind(this);\n this._onDragEnter = this._simpleEventHandler.bind(this, 'dragenter');\n this._onDragLeave = this._simpleEventHandler.bind(this, 'dragleave');\n this._onDrop = this._onDrop.bind(this);\n this.eventsBound = true;\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js gesture\n * @param {Event} [self] Inner Event object\n */\n _onGesture: function(e, self) {\n this.__onTransformGesture && this.__onTransformGesture(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js drag\n * @param {Event} [self] Inner Event object\n */\n _onDrag: function(e, self) {\n this.__onDrag && this.__onDrag(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on wheel event\n */\n _onMouseWheel: function(e) {\n this.__onMouseWheel(e);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseOut: function(e) {\n var target = this._hoveredTarget;\n this.fire('mouse:out', { target: target, e: e });\n this._hoveredTarget = null;\n target && target.fire('mouseout', { e: e });\n\n var _this = this;\n this._hoveredTargets.forEach(function(_target){\n _this.fire('mouse:out', { target: target, e: e });\n _target && target.fire('mouseout', { e: e });\n });\n this._hoveredTargets = [];\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseenter\n */\n _onMouseEnter: function(e) {\n // This find target and consequent 'mouse:over' is used to\n // clear old instances on hovered target.\n // calling findTarget has the side effect of killing target.__corner.\n // as a short term fix we are not firing this if we are currently transforming.\n // as a long term fix we need to separate the action of finding a target with the\n // side effects we added to it.\n if (!this._currentTransform && !this.findTarget(e)) {\n this.fire('mouse:over', { target: null, e: e });\n this._hoveredTarget = null;\n this._hoveredTargets = [];\n }\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js orientation change\n * @param {Event} [self] Inner Event object\n */\n _onOrientationChange: function(e, self) {\n this.__onOrientationChange && this.__onOrientationChange(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n * @param {Event} [self] Inner Event object\n */\n _onShake: function(e, self) {\n this.__onShake && this.__onShake(e, self);\n },\n\n /**\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n * @param {Event} [self] Inner Event object\n */\n _onLongPress: function(e, self) {\n this.__onLongPress && this.__onLongPress(e, self);\n },\n\n /**\n * prevent default to allow drop event to be fired\n * @private\n * @param {Event} [e] Event object fired on Event.js shake\n */\n _onDragOver: function(e) {\n e.preventDefault();\n var target = this._simpleEventHandler('dragover', e);\n this._fireEnterLeaveEvents(target, e);\n },\n\n /**\n * `drop:before` is a an event that allow you to schedule logic\n * before the `drop` event. Prefer `drop` event always, but if you need\n * to run some drop-disabling logic on an event, since there is no way\n * to handle event handlers ordering, use `drop:before`\n * @param {Event} e\n */\n _onDrop: function (e) {\n this._simpleEventHandler('drop:before', e);\n return this._simpleEventHandler('drop', e);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onContextMenu: function (e) {\n if (this.stopContextMenu) {\n e.stopPropagation();\n e.preventDefault();\n }\n return false;\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onDoubleClick: function (e) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'dblclick');\n this._resetTransformEventData(e);\n },\n\n /**\n * Return a the id of an event.\n * returns either the pointerId or the identifier or 0 for the mouse event\n * @private\n * @param {Event} evt Event object\n */\n getPointerId: function(evt) {\n var changedTouches = evt.changedTouches;\n\n if (changedTouches) {\n return changedTouches[0] && changedTouches[0].identifier;\n }\n\n if (this.enablePointerEvents) {\n return evt.pointerId;\n }\n\n return -1;\n },\n\n /**\n * Determines if an event has the id of the event that is considered main\n * @private\n * @param {evt} event Event object\n */\n _isMainEvent: function(evt) {\n if (evt.isPrimary === true) {\n return true;\n }\n if (evt.isPrimary === false) {\n return false;\n }\n if (evt.type === 'touchend' && evt.touches.length === 0) {\n return true;\n }\n if (evt.changedTouches) {\n return evt.changedTouches[0].identifier === this.mainTouchId;\n }\n return true;\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onTouchStart: function(e) {\n e.preventDefault();\n if (this.mainTouchId === null) {\n this.mainTouchId = this.getPointerId(e);\n }\n this.__onMouseDown(e);\n this._resetTransformEventData();\n var canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n addListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions);\n addListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n // Unbind mousedown to prevent double triggers from touch devices\n removeListener(canvasElement, eventTypePrefix + 'down', this._onMouseDown);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseDown: function (e) {\n this.__onMouseDown(e);\n this._resetTransformEventData();\n var canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n removeListener(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n addListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp);\n addListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onTouchEnd: function(e) {\n if (e.touches.length > 0) {\n // if there are still touches stop here\n return;\n }\n this.__onMouseUp(e);\n this._resetTransformEventData();\n this.mainTouchId = null;\n var eventTypePrefix = this._getEventPrefix();\n removeListener(fabric.document, 'touchend', this._onTouchEnd, addEventOptions);\n removeListener(fabric.document, 'touchmove', this._onMouseMove, addEventOptions);\n var _this = this;\n if (this._willAddMouseDown) {\n clearTimeout(this._willAddMouseDown);\n }\n this._willAddMouseDown = setTimeout(function() {\n // Wait 400ms before rebinding mousedown to prevent double triggers\n // from touch devices\n addListener(_this.upperCanvasEl, eventTypePrefix + 'down', _this._onMouseDown);\n _this._willAddMouseDown = 0;\n }, 400);\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n _onMouseUp: function (e) {\n this.__onMouseUp(e);\n this._resetTransformEventData();\n var canvasElement = this.upperCanvasEl,\n eventTypePrefix = this._getEventPrefix();\n if (this._isMainEvent(e)) {\n removeListener(fabric.document, eventTypePrefix + 'up', this._onMouseUp);\n removeListener(fabric.document, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n addListener(canvasElement, eventTypePrefix + 'move', this._onMouseMove, addEventOptions);\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n _onMouseMove: function (e) {\n !this.allowTouchScrolling && e.preventDefault && e.preventDefault();\n this.__onMouseMove(e);\n },\n\n /**\n * @private\n */\n _onResize: function () {\n this.calcOffset();\n },\n\n /**\n * Decides whether the canvas should be redrawn in mouseup and mousedown events.\n * @private\n * @param {Object} target\n */\n _shouldRender: function(target) {\n var activeObject = this._activeObject;\n\n if (\n !!activeObject !== !!target ||\n (activeObject && target && (activeObject !== target))\n ) {\n // this covers: switch of target, from target to no target, selection of target\n // multiSelection with key and mouse\n return true;\n }\n else if (activeObject && activeObject.isEditing) {\n // if we mouse up/down over a editing textbox a cursor change,\n // there is no need to re render\n return false;\n }\n return false;\n },\n\n /**\n * Method that defines the actions when mouse is released on canvas.\n * The method resets the currentTransform parameters, store the image corner\n * position in the image object and render the canvas on top.\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n __onMouseUp: function (e) {\n var target, transform = this._currentTransform,\n groupSelector = this._groupSelector, shouldRender = false,\n isClick = (!groupSelector || (groupSelector.left === 0 && groupSelector.top === 0));\n this._cacheTransformEventData(e);\n target = this._target;\n this._handleEvent(e, 'up:before');\n // if right/middle click just fire events and return\n // target undefined will make the _handleEvent search the target\n if (checkClick(e, RIGHT_CLICK)) {\n if (this.fireRightClick) {\n this._handleEvent(e, 'up', RIGHT_CLICK, isClick);\n }\n return;\n }\n\n if (checkClick(e, MIDDLE_CLICK)) {\n if (this.fireMiddleClick) {\n this._handleEvent(e, 'up', MIDDLE_CLICK, isClick);\n }\n this._resetTransformEventData();\n return;\n }\n\n if (this.isDrawingMode && this._isCurrentlyDrawing) {\n this._onMouseUpInDrawingMode(e);\n return;\n }\n\n if (!this._isMainEvent(e)) {\n return;\n }\n if (transform) {\n this._finalizeCurrentTransform(e);\n shouldRender = transform.actionPerformed;\n }\n if (!isClick) {\n var targetWasActive = target === this._activeObject;\n this._maybeGroupObjects(e);\n if (!shouldRender) {\n shouldRender = (\n this._shouldRender(target) ||\n (!targetWasActive && target === this._activeObject)\n );\n }\n }\n var corner, pointer;\n if (target) {\n corner = target._findTargetCorner(\n this.getPointer(e, true),\n fabric.util.isTouchEvent(e)\n );\n if (target.selectable && target !== this._activeObject && target.activeOn === 'up') {\n this.setActiveObject(target, e);\n shouldRender = true;\n }\n else {\n var control = target.controls[corner],\n mouseUpHandler = control && control.getMouseUpHandler(e, target, control);\n if (mouseUpHandler) {\n pointer = this.getPointer(e);\n mouseUpHandler(e, transform, pointer.x, pointer.y);\n }\n }\n target.isMoving = false;\n }\n // if we are ending up a transform on a different control or a new object\n // fire the original mouse up from the corner that started the transform\n if (transform && (transform.target !== target || transform.corner !== corner)) {\n var originalControl = transform.target && transform.target.controls[transform.corner],\n originalMouseUpHandler = originalControl && originalControl.getMouseUpHandler(e, target, control);\n pointer = pointer || this.getPointer(e);\n originalMouseUpHandler && originalMouseUpHandler(e, transform, pointer.x, pointer.y);\n }\n this._setCursorFromEvent(e, target);\n this._handleEvent(e, 'up', LEFT_CLICK, isClick);\n this._groupSelector = null;\n this._currentTransform = null;\n // reset the target information about which corner is selected\n target && (target.__corner = 0);\n if (shouldRender) {\n this.requestRenderAll();\n }\n else if (!isClick) {\n this.renderTop();\n }\n },\n\n /**\n * @private\n * Handle event firing for target and subtargets\n * @param {Event} e event from mouse\n * @param {String} eventType event to fire (up, down or move)\n * @return {Fabric.Object} target return the the target found, for internal reasons.\n */\n _simpleEventHandler: function(eventType, e) {\n var target = this.findTarget(e),\n targets = this.targets,\n options = {\n e: e,\n target: target,\n subTargets: targets,\n };\n this.fire(eventType, options);\n target && target.fire(eventType, options);\n if (!targets) {\n return target;\n }\n for (var i = 0; i < targets.length; i++) {\n targets[i].fire(eventType, options);\n }\n return target;\n },\n\n /**\n * @private\n * Handle event firing for target and subtargets\n * @param {Event} e event from mouse\n * @param {String} eventType event to fire (up, down or move)\n * @param {fabric.Object} targetObj receiving event\n * @param {Number} [button] button used in the event 1 = left, 2 = middle, 3 = right\n * @param {Boolean} isClick for left button only, indicates that the mouse up happened without move.\n */\n _handleEvent: function(e, eventType, button, isClick) {\n var target = this._target,\n targets = this.targets || [],\n options = {\n e: e,\n target: target,\n subTargets: targets,\n button: button || LEFT_CLICK,\n isClick: isClick || false,\n pointer: this._pointer,\n absolutePointer: this._absolutePointer,\n transform: this._currentTransform\n };\n if (eventType === 'up') {\n options.currentTarget = this.findTarget(e);\n options.currentSubTargets = this.targets;\n }\n this.fire('mouse:' + eventType, options);\n target && target.fire('mouse' + eventType, options);\n for (var i = 0; i < targets.length; i++) {\n targets[i].fire('mouse' + eventType, options);\n }\n },\n\n /**\n * @private\n * @param {Event} e send the mouse event that generate the finalize down, so it can be used in the event\n */\n _finalizeCurrentTransform: function(e) {\n\n var transform = this._currentTransform,\n target = transform.target,\n options = {\n e: e,\n target: target,\n transform: transform,\n action: transform.action,\n };\n\n if (target._scaling) {\n target._scaling = false;\n }\n\n target.setCoords();\n\n if (transform.actionPerformed || (this.stateful && target.hasStateChanged())) {\n this._fire('modified', options);\n }\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n _onMouseDownInDrawingMode: function(e) {\n this._isCurrentlyDrawing = true;\n if (this.getActiveObject()) {\n this.discardActiveObject(e).requestRenderAll();\n }\n var pointer = this.getPointer(e);\n this.freeDrawingBrush.onMouseDown(pointer, { e: e, pointer: pointer });\n this._handleEvent(e, 'down');\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n _onMouseMoveInDrawingMode: function(e) {\n if (this._isCurrentlyDrawing) {\n var pointer = this.getPointer(e);\n this.freeDrawingBrush.onMouseMove(pointer, { e: e, pointer: pointer });\n }\n this.setCursor(this.freeDrawingCursor);\n this._handleEvent(e, 'move');\n },\n\n /**\n * @private\n * @param {Event} e Event object fired on mouseup\n */\n _onMouseUpInDrawingMode: function(e) {\n var pointer = this.getPointer(e);\n this._isCurrentlyDrawing = this.freeDrawingBrush.onMouseUp({ e: e, pointer: pointer });\n this._handleEvent(e, 'up');\n },\n\n /**\n * Method that defines the actions when mouse is clicked on canvas.\n * The method inits the currentTransform parameters and renders all the\n * canvas so the current image can be placed on the top canvas and the rest\n * in on the container one.\n * @private\n * @param {Event} e Event object fired on mousedown\n */\n __onMouseDown: function (e) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'down:before');\n var target = this._target;\n // if right click just fire events\n if (checkClick(e, RIGHT_CLICK)) {\n if (this.fireRightClick) {\n this._handleEvent(e, 'down', RIGHT_CLICK);\n }\n return;\n }\n\n if (checkClick(e, MIDDLE_CLICK)) {\n if (this.fireMiddleClick) {\n this._handleEvent(e, 'down', MIDDLE_CLICK);\n }\n return;\n }\n\n if (this.isDrawingMode) {\n this._onMouseDownInDrawingMode(e);\n return;\n }\n\n if (!this._isMainEvent(e)) {\n return;\n }\n\n // ignore if some object is being transformed at this moment\n if (this._currentTransform) {\n return;\n }\n\n var pointer = this._pointer;\n // save pointer for check in __onMouseUp event\n this._previousPointer = pointer;\n var shouldRender = this._shouldRender(target),\n shouldGroup = this._shouldGroup(e, target);\n if (this._shouldClearSelection(e, target)) {\n this.discardActiveObject(e);\n }\n else if (shouldGroup) {\n this._handleGrouping(e, target);\n target = this._activeObject;\n }\n\n if (this.selection && (!target ||\n (!target.selectable && !target.isEditing && target !== this._activeObject))) {\n this._groupSelector = {\n ex: this._absolutePointer.x,\n ey: this._absolutePointer.y,\n top: 0,\n left: 0\n };\n }\n\n if (target) {\n var alreadySelected = target === this._activeObject;\n if (target.selectable && target.activeOn === 'down') {\n this.setActiveObject(target, e);\n }\n var corner = target._findTargetCorner(\n this.getPointer(e, true),\n fabric.util.isTouchEvent(e)\n );\n target.__corner = corner;\n if (target === this._activeObject && (corner || !shouldGroup)) {\n this._setupCurrentTransform(e, target, alreadySelected);\n var control = target.controls[corner],\n pointer = this.getPointer(e),\n mouseDownHandler = control && control.getMouseDownHandler(e, target, control);\n if (mouseDownHandler) {\n mouseDownHandler(e, this._currentTransform, pointer.x, pointer.y);\n }\n }\n }\n this._handleEvent(e, 'down');\n // we must renderAll so that we update the visuals\n (shouldRender || shouldGroup) && this.requestRenderAll();\n },\n\n /**\n * reset cache form common information needed during event processing\n * @private\n */\n _resetTransformEventData: function() {\n this._target = null;\n this._pointer = null;\n this._absolutePointer = null;\n },\n\n /**\n * Cache common information needed during event processing\n * @private\n * @param {Event} e Event object fired on event\n */\n _cacheTransformEventData: function(e) {\n // reset in order to avoid stale caching\n this._resetTransformEventData();\n this._pointer = this.getPointer(e, true);\n this._absolutePointer = this.restorePointerVpt(this._pointer);\n this._target = this._currentTransform ? this._currentTransform.target : this.findTarget(e) || null;\n },\n\n /**\n * @private\n */\n _beforeTransform: function(e) {\n var t = this._currentTransform;\n this.stateful && t.target.saveState();\n this.fire('before:transform', {\n e: e,\n transform: t,\n });\n },\n\n /**\n * Method that defines the actions when mouse is hovering the canvas.\n * The currentTransform parameter will define whether the user is rotating/scaling/translating\n * an image or neither of them (only hovering). A group selection is also possible and would cancel\n * all any other type of action.\n * In case of an image transformation only the top canvas will be rendered.\n * @private\n * @param {Event} e Event object fired on mousemove\n */\n __onMouseMove: function (e) {\n this._handleEvent(e, 'move:before');\n this._cacheTransformEventData(e);\n var target, pointer;\n\n if (this.isDrawingMode) {\n this._onMouseMoveInDrawingMode(e);\n return;\n }\n\n if (!this._isMainEvent(e)) {\n return;\n }\n\n var groupSelector = this._groupSelector;\n\n // We initially clicked in an empty area, so we draw a box for multiple selection\n if (groupSelector) {\n pointer = this._absolutePointer;\n\n groupSelector.left = pointer.x - groupSelector.ex;\n groupSelector.top = pointer.y - groupSelector.ey;\n\n this.renderTop();\n }\n else if (!this._currentTransform) {\n target = this.findTarget(e) || null;\n this._setCursorFromEvent(e, target);\n this._fireOverOutEvents(target, e);\n }\n else {\n this._transformObject(e);\n }\n this._handleEvent(e, 'move');\n this._resetTransformEventData();\n },\n\n /**\n * Manage the mouseout, mouseover events for the fabric object on the canvas\n * @param {Fabric.Object} target the target where the target from the mousemove event\n * @param {Event} e Event object fired on mousemove\n * @private\n */\n _fireOverOutEvents: function(target, e) {\n var _hoveredTarget = this._hoveredTarget,\n _hoveredTargets = this._hoveredTargets, targets = this.targets,\n length = Math.max(_hoveredTargets.length, targets.length);\n\n this.fireSyntheticInOutEvents(target, e, {\n oldTarget: _hoveredTarget,\n evtOut: 'mouseout',\n canvasEvtOut: 'mouse:out',\n evtIn: 'mouseover',\n canvasEvtIn: 'mouse:over',\n });\n for (var i = 0; i < length; i++){\n this.fireSyntheticInOutEvents(targets[i], e, {\n oldTarget: _hoveredTargets[i],\n evtOut: 'mouseout',\n evtIn: 'mouseover',\n });\n }\n this._hoveredTarget = target;\n this._hoveredTargets = this.targets.concat();\n },\n\n /**\n * Manage the dragEnter, dragLeave events for the fabric objects on the canvas\n * @param {Fabric.Object} target the target where the target from the onDrag event\n * @param {Event} e Event object fired on ondrag\n * @private\n */\n _fireEnterLeaveEvents: function(target, e) {\n var _draggedoverTarget = this._draggedoverTarget,\n _hoveredTargets = this._hoveredTargets, targets = this.targets,\n length = Math.max(_hoveredTargets.length, targets.length);\n\n this.fireSyntheticInOutEvents(target, e, {\n oldTarget: _draggedoverTarget,\n evtOut: 'dragleave',\n evtIn: 'dragenter',\n });\n for (var i = 0; i < length; i++) {\n this.fireSyntheticInOutEvents(targets[i], e, {\n oldTarget: _hoveredTargets[i],\n evtOut: 'dragleave',\n evtIn: 'dragenter',\n });\n }\n this._draggedoverTarget = target;\n },\n\n /**\n * Manage the synthetic in/out events for the fabric objects on the canvas\n * @param {Fabric.Object} target the target where the target from the supported events\n * @param {Event} e Event object fired\n * @param {Object} config configuration for the function to work\n * @param {String} config.targetName property on the canvas where the old target is stored\n * @param {String} [config.canvasEvtOut] name of the event to fire at canvas level for out\n * @param {String} config.evtOut name of the event to fire for out\n * @param {String} [config.canvasEvtIn] name of the event to fire at canvas level for in\n * @param {String} config.evtIn name of the event to fire for in\n * @private\n */\n fireSyntheticInOutEvents: function(target, e, config) {\n var inOpt, outOpt, oldTarget = config.oldTarget, outFires, inFires,\n targetChanged = oldTarget !== target, canvasEvtIn = config.canvasEvtIn, canvasEvtOut = config.canvasEvtOut;\n if (targetChanged) {\n inOpt = { e: e, target: target, previousTarget: oldTarget };\n outOpt = { e: e, target: oldTarget, nextTarget: target };\n }\n inFires = target && targetChanged;\n outFires = oldTarget && targetChanged;\n if (outFires) {\n canvasEvtOut && this.fire(canvasEvtOut, outOpt);\n oldTarget.fire(config.evtOut, outOpt);\n }\n if (inFires) {\n canvasEvtIn && this.fire(canvasEvtIn, inOpt);\n target.fire(config.evtIn, inOpt);\n }\n },\n\n /**\n * Method that defines actions when an Event Mouse Wheel\n * @param {Event} e Event object fired on mouseup\n */\n __onMouseWheel: function(e) {\n this._cacheTransformEventData(e);\n this._handleEvent(e, 'wheel');\n this._resetTransformEventData();\n },\n\n /**\n * @private\n * @param {Event} e Event fired on mousemove\n */\n _transformObject: function(e) {\n var pointer = this.getPointer(e),\n transform = this._currentTransform;\n\n transform.reset = false;\n transform.shiftKey = e.shiftKey;\n transform.altKey = e[this.centeredKey];\n\n this._performTransformAction(e, transform, pointer);\n transform.actionPerformed && this.requestRenderAll();\n },\n\n /**\n * @private\n */\n _performTransformAction: function(e, transform, pointer) {\n var x = pointer.x,\n y = pointer.y,\n action = transform.action,\n actionPerformed = false,\n actionHandler = transform.actionHandler;\n // this object could be created from the function in the control handlers\n\n\n if (actionHandler) {\n actionPerformed = actionHandler(e, transform, x, y);\n }\n if (action === 'drag' && actionPerformed) {\n transform.target.isMoving = true;\n this.setCursor(transform.target.moveCursor || this.moveCursor);\n }\n transform.actionPerformed = transform.actionPerformed || actionPerformed;\n },\n\n /**\n * @private\n */\n _fire: fabric.controlsUtils.fireEvent,\n\n /**\n * Sets the cursor depending on where the canvas is being hovered.\n * Note: very buggy in Opera\n * @param {Event} e Event object\n * @param {Object} target Object that the mouse is hovering, if so.\n */\n _setCursorFromEvent: function (e, target) {\n if (!target) {\n this.setCursor(this.defaultCursor);\n return false;\n }\n var hoverCursor = target.hoverCursor || this.hoverCursor,\n activeSelection = this._activeObject && this._activeObject.type === 'activeSelection' ?\n this._activeObject : null,\n // only show proper corner when group selection is not active\n corner = (!activeSelection || !activeSelection.contains(target))\n // here we call findTargetCorner always with undefined for the touch parameter.\n // we assume that if you are using a cursor you do not need to interact with\n // the bigger touch area.\n && target._findTargetCorner(this.getPointer(e, true));\n\n if (!corner) {\n if (target.subTargetCheck){\n // hoverCursor should come from top-most subTarget,\n // so we walk the array backwards\n this.targets.concat().reverse().map(function(_target){\n hoverCursor = _target.hoverCursor || hoverCursor;\n });\n }\n this.setCursor(hoverCursor);\n }\n else {\n this.setCursor(this.getCornerCursor(corner, target, e));\n }\n },\n\n /**\n * @private\n */\n getCornerCursor: function(corner, target, e) {\n var control = target.controls[corner];\n return control.cursorStyleHandler(e, control, target);\n }\n });\n})();\n\n\n(function() {\n\n var min = Math.min,\n max = Math.max;\n\n fabric.util.object.extend(fabric.Canvas.prototype, /** @lends fabric.Canvas.prototype */ {\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n * @return {Boolean}\n */\n _shouldGroup: function(e, target) {\n var activeObject = this._activeObject;\n return activeObject && this._isSelectionKeyPressed(e) && target && target.selectable && this.selection &&\n (activeObject !== target || activeObject.type === 'activeSelection') && !target.onSelect({ e: e });\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @param {fabric.Object} target\n */\n _handleGrouping: function (e, target) {\n var activeObject = this._activeObject;\n // avoid multi select when shift click on a corner\n if (activeObject.__corner) {\n return;\n }\n if (target === activeObject) {\n // if it's a group, find target again, using activeGroup objects\n target = this.findTarget(e, true);\n // if even object is not found or we are on activeObjectCorner, bail out\n if (!target || !target.selectable) {\n return;\n }\n }\n if (activeObject && activeObject.type === 'activeSelection') {\n this._updateActiveSelection(target, e);\n }\n else {\n this._createActiveSelection(target, e);\n }\n },\n\n /**\n * @private\n */\n _updateActiveSelection: function(target, e) {\n var activeSelection = this._activeObject,\n currentActiveObjects = activeSelection._objects.slice(0);\n if (activeSelection.contains(target)) {\n activeSelection.removeWithUpdate(target);\n this._hoveredTarget = target;\n this._hoveredTargets = this.targets.concat();\n if (activeSelection.size() === 1) {\n // activate last remaining object\n this._setActiveObject(activeSelection.item(0), e);\n }\n }\n else {\n activeSelection.addWithUpdate(target);\n this._hoveredTarget = activeSelection;\n this._hoveredTargets = this.targets.concat();\n }\n this._fireSelectionEvents(currentActiveObjects, e);\n },\n\n /**\n * @private\n */\n _createActiveSelection: function(target, e) {\n var currentActives = this.getActiveObjects(), group = this._createGroup(target);\n this._hoveredTarget = group;\n // ISSUE 4115: should we consider subTargets here?\n // this._hoveredTargets = [];\n // this._hoveredTargets = this.targets.concat();\n this._setActiveObject(group, e);\n this._fireSelectionEvents(currentActives, e);\n },\n\n /**\n * @private\n * @param {Object} target\n */\n _createGroup: function(target) {\n var objects = this._objects,\n isActiveLower = objects.indexOf(this._activeObject) < objects.indexOf(target),\n groupObjects = isActiveLower\n ? [this._activeObject, target]\n : [target, this._activeObject];\n this._activeObject.isEditing && this._activeObject.exitEditing();\n return new fabric.ActiveSelection(groupObjects, {\n canvas: this\n });\n },\n\n /**\n * @private\n * @param {Event} e mouse event\n */\n _groupSelectedObjects: function (e) {\n\n var group = this._collectObjects(e),\n aGroup;\n\n // do not create group for 1 element only\n if (group.length === 1) {\n this.setActiveObject(group[0], e);\n }\n else if (group.length > 1) {\n aGroup = new fabric.ActiveSelection(group.reverse(), {\n canvas: this\n });\n this.setActiveObject(aGroup, e);\n }\n },\n\n /**\n * @private\n */\n _collectObjects: function(e) {\n var group = [],\n currentObject,\n x1 = this._groupSelector.ex,\n y1 = this._groupSelector.ey,\n x2 = x1 + this._groupSelector.left,\n y2 = y1 + this._groupSelector.top,\n selectionX1Y1 = new fabric.Point(min(x1, x2), min(y1, y2)),\n selectionX2Y2 = new fabric.Point(max(x1, x2), max(y1, y2)),\n allowIntersect = !this.selectionFullyContained,\n isClick = x1 === x2 && y1 === y2;\n // we iterate reverse order to collect top first in case of click.\n for (var i = this._objects.length; i--; ) {\n currentObject = this._objects[i];\n\n if (!currentObject || !currentObject.selectable || !currentObject.visible) {\n continue;\n }\n\n if ((allowIntersect && currentObject.intersectsWithRect(selectionX1Y1, selectionX2Y2, true)) ||\n currentObject.isContainedWithinRect(selectionX1Y1, selectionX2Y2, true) ||\n (allowIntersect && currentObject.containsPoint(selectionX1Y1, null, true)) ||\n (allowIntersect && currentObject.containsPoint(selectionX2Y2, null, true))\n ) {\n group.push(currentObject);\n // only add one object if it's a click\n if (isClick) {\n break;\n }\n }\n }\n\n if (group.length > 1) {\n group = group.filter(function(object) {\n return !object.onSelect({ e: e });\n });\n }\n\n return group;\n },\n\n /**\n * @private\n */\n _maybeGroupObjects: function(e) {\n if (this.selection && this._groupSelector) {\n this._groupSelectedObjects(e);\n }\n this.setCursor(this.defaultCursor);\n // clear selection and current transformation\n this._groupSelector = null;\n }\n });\n\n})();\n\n\n(function () {\n fabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Exports canvas element to a dataurl image. Note that when multiplier is used, cropping is scaled appropriately\n * @param {Object} [options] Options object\n * @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n * @param {Number} [options.multiplier=1] Multiplier to scale by, to have consistent\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 2.0.0\n * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format\n * @see {@link http://jsfiddle.net/fabricjs/NfZVb/|jsFiddle demo}\n * @example Generate jpeg dataURL with lower quality\n * var dataURL = canvas.toDataURL({\n * format: 'jpeg',\n * quality: 0.8\n * });\n * @example Generate cropped png dataURL (clipping of canvas)\n * var dataURL = canvas.toDataURL({\n * format: 'png',\n * left: 100,\n * top: 100,\n * width: 200,\n * height: 200\n * });\n * @example Generate double scaled png dataURL\n * var dataURL = canvas.toDataURL({\n * format: 'png',\n * multiplier: 2\n * });\n */\n toDataURL: function (options) {\n options || (options = { });\n\n var format = options.format || 'png',\n quality = options.quality || 1,\n multiplier = (options.multiplier || 1) * (options.enableRetinaScaling ? this.getRetinaScaling() : 1),\n canvasEl = this.toCanvasElement(multiplier, options);\n return fabric.util.toDataURL(canvasEl, format, quality);\n },\n\n /**\n * Create a new HTMLCanvas element painted with the current canvas content.\n * No need to resize the actual one or repaint it.\n * Will transfer object ownership to a new canvas, paint it, and set everything back.\n * This is an intermediary step used to get to a dataUrl but also it is useful to\n * create quick image copies of a canvas without passing for the dataUrl string\n * @param {Number} [multiplier] a zoom factor.\n * @param {Object} [cropping] Cropping informations\n * @param {Number} [cropping.left] Cropping left offset.\n * @param {Number} [cropping.top] Cropping top offset.\n * @param {Number} [cropping.width] Cropping width.\n * @param {Number} [cropping.height] Cropping height.\n */\n toCanvasElement: function(multiplier, cropping) {\n multiplier = multiplier || 1;\n cropping = cropping || { };\n var scaledWidth = (cropping.width || this.width) * multiplier,\n scaledHeight = (cropping.height || this.height) * multiplier,\n zoom = this.getZoom(),\n originalWidth = this.width,\n originalHeight = this.height,\n newZoom = zoom * multiplier,\n vp = this.viewportTransform,\n translateX = (vp[4] - (cropping.left || 0)) * multiplier,\n translateY = (vp[5] - (cropping.top || 0)) * multiplier,\n originalInteractive = this.interactive,\n newVp = [newZoom, 0, 0, newZoom, translateX, translateY],\n originalRetina = this.enableRetinaScaling,\n canvasEl = fabric.util.createCanvasElement(),\n originalContextTop = this.contextTop;\n canvasEl.width = scaledWidth;\n canvasEl.height = scaledHeight;\n this.contextTop = null;\n this.enableRetinaScaling = false;\n this.interactive = false;\n this.viewportTransform = newVp;\n this.width = scaledWidth;\n this.height = scaledHeight;\n this.calcViewportBoundaries();\n this.renderCanvas(canvasEl.getContext('2d'), this._objects);\n this.viewportTransform = vp;\n this.width = originalWidth;\n this.height = originalHeight;\n this.calcViewportBoundaries();\n this.interactive = originalInteractive;\n this.enableRetinaScaling = originalRetina;\n this.contextTop = originalContextTop;\n return canvasEl;\n },\n });\n\n})();\n\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n /**\n * Populates canvas with data from the specified JSON.\n * JSON format must conform to the one of {@link fabric.Canvas#toJSON}\n * @param {String|Object} json JSON string or object\n * @param {Function} callback Callback, invoked when json is parsed\n * and corresponding objects (e.g: {@link fabric.Image})\n * are initialized\n * @param {Function} [reviver] Method for further parsing of JSON elements, called after each fabric object created.\n * @return {fabric.Canvas} instance\n * @chainable\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#deserialization}\n * @see {@link http://jsfiddle.net/fabricjs/fmgXt/|jsFiddle demo}\n * @example loadFromJSON\n * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas));\n * @example loadFromJSON with reviver\n * canvas.loadFromJSON(json, canvas.renderAll.bind(canvas), function(o, object) {\n * // `o` = json object\n * // `object` = fabric.Object instance\n * // ... do some stuff ...\n * });\n */\n loadFromJSON: function (json, callback, reviver) {\n if (!json) {\n return;\n }\n\n // serialize if it wasn't already\n var serialized = (typeof json === 'string')\n ? JSON.parse(json)\n : fabric.util.object.clone(json);\n\n var _this = this,\n clipPath = serialized.clipPath,\n renderOnAddRemove = this.renderOnAddRemove;\n\n this.renderOnAddRemove = false;\n\n delete serialized.clipPath;\n\n this._enlivenObjects(serialized.objects, function (enlivenedObjects) {\n _this.clear();\n _this._setBgOverlay(serialized, function () {\n if (clipPath) {\n _this._enlivenObjects([clipPath], function (enlivenedCanvasClip) {\n _this.clipPath = enlivenedCanvasClip[0];\n _this.__setupCanvas.call(_this, serialized, enlivenedObjects, renderOnAddRemove, callback);\n });\n }\n else {\n _this.__setupCanvas.call(_this, serialized, enlivenedObjects, renderOnAddRemove, callback);\n }\n });\n }, reviver);\n return this;\n },\n\n /**\n * @private\n * @param {Object} serialized Object with background and overlay information\n * @param {Array} restored canvas objects\n * @param {Function} cached renderOnAddRemove callback\n * @param {Function} callback Invoked after all background and overlay images/patterns loaded\n */\n __setupCanvas: function(serialized, enlivenedObjects, renderOnAddRemove, callback) {\n var _this = this;\n enlivenedObjects.forEach(function(obj, index) {\n // we splice the array just in case some custom classes restored from JSON\n // will add more object to canvas at canvas init.\n _this.insertAt(obj, index);\n });\n this.renderOnAddRemove = renderOnAddRemove;\n // remove parts i cannot set as options\n delete serialized.objects;\n delete serialized.backgroundImage;\n delete serialized.overlayImage;\n delete serialized.background;\n delete serialized.overlay;\n // this._initOptions does too many things to just\n // call it. Normally loading an Object from JSON\n // create the Object instance. Here the Canvas is\n // already an instance and we are just loading things over it\n this._setOptions(serialized);\n this.renderAll();\n callback && callback();\n },\n\n /**\n * @private\n * @param {Object} serialized Object with background and overlay information\n * @param {Function} callback Invoked after all background and overlay images/patterns loaded\n */\n _setBgOverlay: function(serialized, callback) {\n var loaded = {\n backgroundColor: false,\n overlayColor: false,\n backgroundImage: false,\n overlayImage: false\n };\n\n if (!serialized.backgroundImage && !serialized.overlayImage && !serialized.background && !serialized.overlay) {\n callback && callback();\n return;\n }\n\n var cbIfLoaded = function () {\n if (loaded.backgroundImage && loaded.overlayImage && loaded.backgroundColor && loaded.overlayColor) {\n callback && callback();\n }\n };\n\n this.__setBgOverlay('backgroundImage', serialized.backgroundImage, loaded, cbIfLoaded);\n this.__setBgOverlay('overlayImage', serialized.overlayImage, loaded, cbIfLoaded);\n this.__setBgOverlay('backgroundColor', serialized.background, loaded, cbIfLoaded);\n this.__setBgOverlay('overlayColor', serialized.overlay, loaded, cbIfLoaded);\n },\n\n /**\n * @private\n * @param {String} property Property to set (backgroundImage, overlayImage, backgroundColor, overlayColor)\n * @param {(Object|String)} value Value to set\n * @param {Object} loaded Set loaded property to true if property is set\n * @param {Object} callback Callback function to invoke after property is set\n */\n __setBgOverlay: function(property, value, loaded, callback) {\n var _this = this;\n\n if (!value) {\n loaded[property] = true;\n callback && callback();\n return;\n }\n\n if (property === 'backgroundImage' || property === 'overlayImage') {\n fabric.util.enlivenObjects([value], function(enlivedObject){\n _this[property] = enlivedObject[0];\n loaded[property] = true;\n callback && callback();\n });\n }\n else {\n this['set' + fabric.util.string.capitalize(property, true)](value, function() {\n loaded[property] = true;\n callback && callback();\n });\n }\n },\n\n /**\n * @private\n * @param {Array} objects\n * @param {Function} callback\n * @param {Function} [reviver]\n */\n _enlivenObjects: function (objects, callback, reviver) {\n if (!objects || objects.length === 0) {\n callback && callback([]);\n return;\n }\n\n fabric.util.enlivenObjects(objects, function(enlivenedObjects) {\n callback && callback(enlivenedObjects);\n }, null, reviver);\n },\n\n /**\n * @private\n * @param {String} format\n * @param {Function} callback\n */\n _toDataURL: function (format, callback) {\n this.clone(function (clone) {\n callback(clone.toDataURL(format));\n });\n },\n\n /**\n * @private\n * @param {String} format\n * @param {Number} multiplier\n * @param {Function} callback\n */\n _toDataURLWithMultiplier: function (format, multiplier, callback) {\n this.clone(function (clone) {\n callback(clone.toDataURLWithMultiplier(format, multiplier));\n });\n },\n\n /**\n * Clones canvas instance\n * @param {Object} [callback] Receives cloned instance as a first argument\n * @param {Array} [properties] Array of properties to include in the cloned canvas and children\n */\n clone: function (callback, properties) {\n var data = JSON.stringify(this.toJSON(properties));\n this.cloneWithoutData(function(clone) {\n clone.loadFromJSON(data, function() {\n callback && callback(clone);\n });\n });\n },\n\n /**\n * Clones canvas instance without cloning existing data.\n * This essentially copies canvas dimensions, clipping properties, etc.\n * but leaves data empty (so that you can populate it with your own)\n * @param {Object} [callback] Receives cloned instance as a first argument\n */\n cloneWithoutData: function(callback) {\n var el = fabric.util.createCanvasElement();\n\n el.width = this.width;\n el.height = this.height;\n\n var clone = new fabric.Canvas(el);\n if (this.backgroundImage) {\n clone.setBackgroundImage(this.backgroundImage.src, function() {\n clone.renderAll();\n callback && callback(clone);\n });\n clone.backgroundImageOpacity = this.backgroundImageOpacity;\n clone.backgroundImageStretch = this.backgroundImageStretch;\n }\n else {\n callback && callback(clone);\n }\n }\n});\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n clone = fabric.util.object.clone,\n toFixed = fabric.util.toFixed,\n capitalize = fabric.util.string.capitalize,\n degreesToRadians = fabric.util.degreesToRadians,\n objectCaching = !fabric.isLikelyNode,\n ALIASING_LIMIT = 2;\n\n if (fabric.Object) {\n return;\n }\n\n /**\n * Root object class from which all 2d shape classes inherit from\n * @class fabric.Object\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#objects}\n * @see {@link fabric.Object#initialize} for constructor definition\n *\n * @fires added\n * @fires removed\n *\n * @fires selected\n * @fires deselected\n * @fires modified\n * @fires modified\n * @fires moved\n * @fires scaled\n * @fires rotated\n * @fires skewed\n *\n * @fires rotating\n * @fires scaling\n * @fires moving\n * @fires skewing\n *\n * @fires mousedown\n * @fires mouseup\n * @fires mouseover\n * @fires mouseout\n * @fires mousewheel\n * @fires mousedblclick\n *\n * @fires dragover\n * @fires dragenter\n * @fires dragleave\n * @fires drop\n */\n fabric.Object = fabric.util.createClass(fabric.CommonMethods, /** @lends fabric.Object.prototype */ {\n\n /**\n * Type of an object (rect, circle, path, etc.).\n * Note that this property is meant to be read-only and not meant to be modified.\n * If you modify, certain parts of Fabric (such as JSON loading) won't work correctly.\n * @type String\n * @default\n */\n type: 'object',\n\n /**\n * Horizontal origin of transformation of an object (one of \"left\", \"right\", \"center\")\n * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups\n * @type String\n * @default\n */\n originX: 'left',\n\n /**\n * Vertical origin of transformation of an object (one of \"top\", \"bottom\", \"center\")\n * See http://jsfiddle.net/1ow02gea/244/ on how originX/originY affect objects in groups\n * @type String\n * @default\n */\n originY: 'top',\n\n /**\n * Top position of an object. Note that by default it's relative to object top. You can change this by setting originY={top/center/bottom}\n * @type Number\n * @default\n */\n top: 0,\n\n /**\n * Left position of an object. Note that by default it's relative to object left. You can change this by setting originX={left/center/right}\n * @type Number\n * @default\n */\n left: 0,\n\n /**\n * Object width\n * @type Number\n * @default\n */\n width: 0,\n\n /**\n * Object height\n * @type Number\n * @default\n */\n height: 0,\n\n /**\n * Object scale factor (horizontal)\n * @type Number\n * @default\n */\n scaleX: 1,\n\n /**\n * Object scale factor (vertical)\n * @type Number\n * @default\n */\n scaleY: 1,\n\n /**\n * When true, an object is rendered as flipped horizontally\n * @type Boolean\n * @default\n */\n flipX: false,\n\n /**\n * When true, an object is rendered as flipped vertically\n * @type Boolean\n * @default\n */\n flipY: false,\n\n /**\n * Opacity of an object\n * @type Number\n * @default\n */\n opacity: 1,\n\n /**\n * Angle of rotation of an object (in degrees)\n * @type Number\n * @default\n */\n angle: 0,\n\n /**\n * Angle of skew on x axes of an object (in degrees)\n * @type Number\n * @default\n */\n skewX: 0,\n\n /**\n * Angle of skew on y axes of an object (in degrees)\n * @type Number\n * @default\n */\n skewY: 0,\n\n /**\n * Size of object's controlling corners (in pixels)\n * @type Number\n * @default\n */\n cornerSize: 13,\n\n /**\n * Size of object's controlling corners when touch interaction is detected\n * @type Number\n * @default\n */\n touchCornerSize: 24,\n\n /**\n * When true, object's controlling corners are rendered as transparent inside (i.e. stroke instead of fill)\n * @type Boolean\n * @default\n */\n transparentCorners: true,\n\n /**\n * Default cursor value used when hovering over this object on canvas\n * @type String\n * @default\n */\n hoverCursor: null,\n\n /**\n * Default cursor value used when moving this object on canvas\n * @type String\n * @default\n */\n moveCursor: null,\n\n /**\n * Padding between object and its controlling borders (in pixels)\n * @type Number\n * @default\n */\n padding: 0,\n\n /**\n * Color of controlling borders of an object (when it's active)\n * @type String\n * @default\n */\n borderColor: 'rgb(178,204,255)',\n\n /**\n * Array specifying dash pattern of an object's borders (hasBorder must be true)\n * @since 1.6.2\n * @type Array\n */\n borderDashArray: null,\n\n /**\n * Color of controlling corners of an object (when it's active)\n * @type String\n * @default\n */\n cornerColor: 'rgb(178,204,255)',\n\n /**\n * Color of controlling corners of an object (when it's active and transparentCorners false)\n * @since 1.6.2\n * @type String\n * @default\n */\n cornerStrokeColor: null,\n\n /**\n * Specify style of control, 'rect' or 'circle'\n * @since 1.6.2\n * @type String\n */\n cornerStyle: 'rect',\n\n /**\n * Array specifying dash pattern of an object's control (hasBorder must be true)\n * @since 1.6.2\n * @type Array\n */\n cornerDashArray: null,\n\n /**\n * When true, this object will use center point as the origin of transformation\n * when being scaled via the controls.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredScaling: false,\n\n /**\n * When true, this object will use center point as the origin of transformation\n * when being rotated via the controls.\n * Backwards incompatibility note: This property replaces \"centerTransform\" (Boolean).\n * @since 1.3.4\n * @type Boolean\n * @default\n */\n centeredRotation: true,\n\n /**\n * Color of object's fill\n * takes css colors https://www.w3.org/TR/css-color-3/\n * @type String\n * @default\n */\n fill: 'rgb(0,0,0)',\n\n /**\n * Fill rule used to fill an object\n * accepted values are nonzero, evenodd\n * Backwards incompatibility note: This property was used for setting globalCompositeOperation until v1.4.12 (use `fabric.Object#globalCompositeOperation` instead)\n * @type String\n * @default\n */\n fillRule: 'nonzero',\n\n /**\n * Composite rule used for canvas globalCompositeOperation\n * @type String\n * @default\n */\n globalCompositeOperation: 'source-over',\n\n /**\n * Background color of an object.\n * takes css colors https://www.w3.org/TR/css-color-3/\n * @type String\n * @default\n */\n backgroundColor: '',\n\n /**\n * Selection Background color of an object. colored layer behind the object when it is active.\n * does not mix good with globalCompositeOperation methods.\n * @type String\n * @default\n */\n selectionBackgroundColor: '',\n\n /**\n * When defined, an object is rendered via stroke and this property specifies its color\n * takes css colors https://www.w3.org/TR/css-color-3/\n * @type String\n * @default\n */\n stroke: null,\n\n /**\n * Width of a stroke used to render this object\n * @type Number\n * @default\n */\n strokeWidth: 1,\n\n /**\n * Array specifying dash pattern of an object's stroke (stroke must be defined)\n * @type Array\n */\n strokeDashArray: null,\n\n /**\n * Line offset of an object's stroke\n * @type Number\n * @default\n */\n strokeDashOffset: 0,\n\n /**\n * Line endings style of an object's stroke (one of \"butt\", \"round\", \"square\")\n * @type String\n * @default\n */\n strokeLineCap: 'butt',\n\n /**\n * Corner style of an object's stroke (one of \"bevel\", \"round\", \"miter\")\n * @type String\n * @default\n */\n strokeLineJoin: 'miter',\n\n /**\n * Maximum miter length (used for strokeLineJoin = \"miter\") of an object's stroke\n * @type Number\n * @default\n */\n strokeMiterLimit: 4,\n\n /**\n * Shadow object representing shadow of this shape\n * @type fabric.Shadow\n * @default\n */\n shadow: null,\n\n /**\n * Opacity of object's controlling borders when object is active and moving\n * @type Number\n * @default\n */\n borderOpacityWhenMoving: 0.4,\n\n /**\n * Scale factor of object's controlling borders\n * bigger number will make a thicker border\n * border is 1, so this is basically a border thickness\n * since there is no way to change the border itself.\n * @type Number\n * @default\n */\n borderScaleFactor: 1,\n\n /**\n * Minimum allowed scale value of an object\n * @type Number\n * @default\n */\n minScaleLimit: 0,\n\n /**\n * When set to `false`, an object can not be selected for modification (using either point-click-based or group-based selection).\n * But events still fire on it.\n * @type Boolean\n * @default\n */\n selectable: true,\n\n /**\n * When set to `false`, an object can not be a target of events. All events propagate through it. Introduced in v1.3.4\n * @type Boolean\n * @default\n */\n evented: true,\n\n /**\n * When set to `false`, an object is not rendered on canvas\n * @type Boolean\n * @default\n */\n visible: true,\n\n /**\n * When set to `false`, object's controls are not displayed and can not be used to manipulate object\n * @type Boolean\n * @default\n */\n hasControls: true,\n\n /**\n * When set to `false`, object's controlling borders are not rendered\n * @type Boolean\n * @default\n */\n hasBorders: true,\n\n /**\n * When set to `true`, objects are \"found\" on canvas on per-pixel basis rather than according to bounding box\n * @type Boolean\n * @default\n */\n perPixelTargetFind: false,\n\n /**\n * When `false`, default object's values are not included in its serialization\n * @type Boolean\n * @default\n */\n includeDefaultValues: true,\n\n /**\n * When `true`, object horizontal movement is locked\n * @type Boolean\n * @default\n */\n lockMovementX: false,\n\n /**\n * When `true`, object vertical movement is locked\n * @type Boolean\n * @default\n */\n lockMovementY: false,\n\n /**\n * When `true`, object rotation is locked\n * @type Boolean\n * @default\n */\n lockRotation: false,\n\n /**\n * When `true`, object horizontal scaling is locked\n * @type Boolean\n * @default\n */\n lockScalingX: false,\n\n /**\n * When `true`, object vertical scaling is locked\n * @type Boolean\n * @default\n */\n lockScalingY: false,\n\n /**\n * When `true`, object horizontal skewing is locked\n * @type Boolean\n * @default\n */\n lockSkewingX: false,\n\n /**\n * When `true`, object vertical skewing is locked\n * @type Boolean\n * @default\n */\n lockSkewingY: false,\n\n /**\n * When `true`, object cannot be flipped by scaling into negative values\n * @type Boolean\n * @default\n */\n lockScalingFlip: false,\n\n /**\n * When `true`, object is not exported in OBJECT/JSON\n * @since 1.6.3\n * @type Boolean\n * @default\n */\n excludeFromExport: false,\n\n /**\n * When `true`, object is cached on an additional canvas.\n * When `false`, object is not cached unless necessary ( clipPath )\n * default to true\n * @since 1.7.0\n * @type Boolean\n * @default true\n */\n objectCaching: objectCaching,\n\n /**\n * When `true`, object properties are checked for cache invalidation. In some particular\n * situation you may want this to be disabled ( spray brush, very big, groups)\n * or if your application does not allow you to modify properties for groups child you want\n * to disable it for groups.\n * default to false\n * since 1.7.0\n * @type Boolean\n * @default false\n */\n statefullCache: false,\n\n /**\n * When `true`, cache does not get updated during scaling. The picture will get blocky if scaled\n * too much and will be redrawn with correct details at the end of scaling.\n * this setting is performance and application dependant.\n * default to true\n * since 1.7.0\n * @type Boolean\n * @default true\n */\n noScaleCache: true,\n\n /**\n * When `false`, the stoke width will scale with the object.\n * When `true`, the stroke will always match the exact pixel size entered for stroke width.\n * this Property does not work on Text classes or drawing call that uses strokeText,fillText methods\n * default to false\n * @since 2.6.0\n * @type Boolean\n * @default false\n * @type Boolean\n * @default false\n */\n strokeUniform: false,\n\n /**\n * When set to `true`, object's cache will be rerendered next render call.\n * since 1.7.0\n * @type Boolean\n * @default true\n */\n dirty: true,\n\n /**\n * keeps the value of the last hovered corner during mouse move.\n * 0 is no corner, or 'mt', 'ml', 'mtr' etc..\n * It should be private, but there is no harm in using it as\n * a read-only property.\n * @type number|string|any\n * @default 0\n */\n __corner: 0,\n\n /**\n * Determines if the fill or the stroke is drawn first (one of \"fill\" or \"stroke\")\n * @type String\n * @default\n */\n paintFirst: 'fill',\n\n /**\n * When 'down', object is set to active on mousedown/touchstart\n * When 'up', object is set to active on mouseup/touchend\n * Experimental. Let's see if this breaks anything before supporting officially\n * @private\n * since 4.4.0\n * @type String\n * @default 'down'\n */\n activeOn: 'down',\n\n /**\n * List of properties to consider when checking if state\n * of an object is changed (fabric.Object#hasStateChanged)\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: (\n 'top left width height scaleX scaleY flipX flipY originX originY transformMatrix ' +\n 'stroke strokeWidth strokeDashArray strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit ' +\n 'angle opacity fill globalCompositeOperation shadow visible backgroundColor ' +\n 'skewX skewY fillRule paintFirst clipPath strokeUniform'\n ).split(' '),\n\n /**\n * List of properties to consider when checking if cache needs refresh\n * Those properties are checked by statefullCache ON ( or lazy mode if we want ) or from single\n * calls to Object.set(key, value). If the key is in this list, the object is marked as dirty\n * and refreshed at the next render\n * @type Array\n */\n cacheProperties: (\n 'fill stroke strokeWidth strokeDashArray width height paintFirst strokeUniform' +\n ' strokeLineCap strokeDashOffset strokeLineJoin strokeMiterLimit backgroundColor clipPath'\n ).split(' '),\n\n /**\n * List of properties to consider for animating colors.\n * @type Array\n */\n colorProperties: (\n 'fill stroke backgroundColor'\n ).split(' '),\n\n /**\n * a fabricObject that, without stroke define a clipping area with their shape. filled in black\n * the clipPath object gets used when the object has rendered, and the context is placed in the center\n * of the object cacheCanvas.\n * If you want 0,0 of a clipPath to align with an object center, use clipPath.originX/Y to 'center'\n * @type fabric.Object\n */\n clipPath: undefined,\n\n /**\n * Meaningful ONLY when the object is used as clipPath.\n * if true, the clipPath will make the object clip to the outside of the clipPath\n * since 2.4.0\n * @type boolean\n * @default false\n */\n inverted: false,\n\n /**\n * Meaningful ONLY when the object is used as clipPath.\n * if true, the clipPath will have its top and left relative to canvas, and will\n * not be influenced by the object transform. This will make the clipPath relative\n * to the canvas, but clipping just a particular object.\n * WARNING this is beta, this feature may change or be renamed.\n * since 2.4.0\n * @type boolean\n * @default false\n */\n absolutePositioned: false,\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n if (options) {\n this.setOptions(options);\n }\n },\n\n /**\n * Create a the canvas used to keep the cached copy of the object\n * @private\n */\n _createCacheCanvas: function() {\n this._cacheProperties = {};\n this._cacheCanvas = fabric.util.createCanvasElement();\n this._cacheContext = this._cacheCanvas.getContext('2d');\n this._updateCacheCanvas();\n // if canvas gets created, is empty, so dirty.\n this.dirty = true;\n },\n\n /**\n * Limit the cache dimensions so that X * Y do not cross fabric.perfLimitSizeTotal\n * and each side do not cross fabric.cacheSideLimit\n * those numbers are configurable so that you can get as much detail as you want\n * making bargain with performances.\n * @param {Object} dims\n * @param {Object} dims.width width of canvas\n * @param {Object} dims.height height of canvas\n * @param {Object} dims.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @param {Object} dims.zoomY zoomY zoom value to unscale the canvas before drawing cache\n * @return {Object}.width width of canvas\n * @return {Object}.height height of canvas\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n */\n _limitCacheSize: function(dims) {\n var perfLimitSizeTotal = fabric.perfLimitSizeTotal,\n width = dims.width, height = dims.height,\n max = fabric.maxCacheSideLimit, min = fabric.minCacheSideLimit;\n if (width <= max && height <= max && width * height <= perfLimitSizeTotal) {\n if (width < min) {\n dims.width = min;\n }\n if (height < min) {\n dims.height = min;\n }\n return dims;\n }\n var ar = width / height, limitedDims = fabric.util.limitDimsByArea(ar, perfLimitSizeTotal),\n capValue = fabric.util.capValue,\n x = capValue(min, limitedDims.x, max),\n y = capValue(min, limitedDims.y, max);\n if (width > x) {\n dims.zoomX /= width / x;\n dims.width = x;\n dims.capped = true;\n }\n if (height > y) {\n dims.zoomY /= height / y;\n dims.height = y;\n dims.capped = true;\n }\n return dims;\n },\n\n /**\n * Return the dimension and the zoom level needed to create a cache canvas\n * big enough to host the object to be cached.\n * @private\n * @return {Object}.x width of object to be cached\n * @return {Object}.y height of object to be cached\n * @return {Object}.width width of canvas\n * @return {Object}.height height of canvas\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n */\n _getCacheCanvasDimensions: function() {\n var objectScale = this.getTotalObjectScaling(),\n // caculate dimensions without skewing\n dim = this._getTransformedDimensions(0, 0),\n neededX = dim.x * objectScale.scaleX / this.scaleX,\n neededY = dim.y * objectScale.scaleY / this.scaleY;\n return {\n // for sure this ALIASING_LIMIT is slightly creating problem\n // in situation in which the cache canvas gets an upper limit\n // also objectScale contains already scaleX and scaleY\n width: neededX + ALIASING_LIMIT,\n height: neededY + ALIASING_LIMIT,\n zoomX: objectScale.scaleX,\n zoomY: objectScale.scaleY,\n x: neededX,\n y: neededY\n };\n },\n\n /**\n * Update width and height of the canvas for cache\n * returns true or false if canvas needed resize.\n * @private\n * @return {Boolean} true if the canvas has been resized\n */\n _updateCacheCanvas: function() {\n var targetCanvas = this.canvas;\n if (this.noScaleCache && targetCanvas && targetCanvas._currentTransform) {\n var target = targetCanvas._currentTransform.target,\n action = targetCanvas._currentTransform.action;\n if (this === target && action.slice && action.slice(0, 5) === 'scale') {\n return false;\n }\n }\n var canvas = this._cacheCanvas,\n dims = this._limitCacheSize(this._getCacheCanvasDimensions()),\n minCacheSize = fabric.minCacheSideLimit,\n width = dims.width, height = dims.height, drawingWidth, drawingHeight,\n zoomX = dims.zoomX, zoomY = dims.zoomY,\n dimensionsChanged = width !== this.cacheWidth || height !== this.cacheHeight,\n zoomChanged = this.zoomX !== zoomX || this.zoomY !== zoomY,\n shouldRedraw = dimensionsChanged || zoomChanged,\n additionalWidth = 0, additionalHeight = 0, shouldResizeCanvas = false;\n if (dimensionsChanged) {\n var canvasWidth = this._cacheCanvas.width,\n canvasHeight = this._cacheCanvas.height,\n sizeGrowing = width > canvasWidth || height > canvasHeight,\n sizeShrinking = (width < canvasWidth * 0.9 || height < canvasHeight * 0.9) &&\n canvasWidth > minCacheSize && canvasHeight > minCacheSize;\n shouldResizeCanvas = sizeGrowing || sizeShrinking;\n if (sizeGrowing && !dims.capped && (width > minCacheSize || height > minCacheSize)) {\n additionalWidth = width * 0.1;\n additionalHeight = height * 0.1;\n }\n }\n if (this instanceof fabric.Text && this.path) {\n shouldRedraw = true;\n shouldResizeCanvas = true;\n additionalWidth += this.getHeightOfLine(0) * this.zoomX;\n additionalHeight += this.getHeightOfLine(0) * this.zoomY;\n }\n if (shouldRedraw) {\n if (shouldResizeCanvas) {\n canvas.width = Math.ceil(width + additionalWidth);\n canvas.height = Math.ceil(height + additionalHeight);\n }\n else {\n this._cacheContext.setTransform(1, 0, 0, 1, 0, 0);\n this._cacheContext.clearRect(0, 0, canvas.width, canvas.height);\n }\n drawingWidth = dims.x / 2;\n drawingHeight = dims.y / 2;\n this.cacheTranslationX = Math.round(canvas.width / 2 - drawingWidth) + drawingWidth;\n this.cacheTranslationY = Math.round(canvas.height / 2 - drawingHeight) + drawingHeight;\n this.cacheWidth = width;\n this.cacheHeight = height;\n this._cacheContext.translate(this.cacheTranslationX, this.cacheTranslationY);\n this._cacheContext.scale(zoomX, zoomY);\n this.zoomX = zoomX;\n this.zoomY = zoomY;\n return true;\n }\n return false;\n },\n\n /**\n * Sets object's properties from options\n * @param {Object} [options] Options object\n */\n setOptions: function(options) {\n this._setOptions(options);\n this._initGradient(options.fill, 'fill');\n this._initGradient(options.stroke, 'stroke');\n this._initPattern(options.fill, 'fill');\n this._initPattern(options.stroke, 'stroke');\n },\n\n /**\n * Transforms context when rendering an object\n * @param {CanvasRenderingContext2D} ctx Context\n */\n transform: function(ctx) {\n var needFullTransform = (this.group && !this.group._transformDone) ||\n (this.group && this.canvas && ctx === this.canvas.contextTop);\n var m = this.calcTransformMatrix(!needFullTransform);\n ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n },\n\n /**\n * Returns an object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS,\n\n object = {\n type: this.type,\n version: fabric.version,\n originX: this.originX,\n originY: this.originY,\n left: toFixed(this.left, NUM_FRACTION_DIGITS),\n top: toFixed(this.top, NUM_FRACTION_DIGITS),\n width: toFixed(this.width, NUM_FRACTION_DIGITS),\n height: toFixed(this.height, NUM_FRACTION_DIGITS),\n fill: (this.fill && this.fill.toObject) ? this.fill.toObject() : this.fill,\n stroke: (this.stroke && this.stroke.toObject) ? this.stroke.toObject() : this.stroke,\n strokeWidth: toFixed(this.strokeWidth, NUM_FRACTION_DIGITS),\n strokeDashArray: this.strokeDashArray ? this.strokeDashArray.concat() : this.strokeDashArray,\n strokeLineCap: this.strokeLineCap,\n strokeDashOffset: this.strokeDashOffset,\n strokeLineJoin: this.strokeLineJoin,\n strokeUniform: this.strokeUniform,\n strokeMiterLimit: toFixed(this.strokeMiterLimit, NUM_FRACTION_DIGITS),\n scaleX: toFixed(this.scaleX, NUM_FRACTION_DIGITS),\n scaleY: toFixed(this.scaleY, NUM_FRACTION_DIGITS),\n angle: toFixed(this.angle, NUM_FRACTION_DIGITS),\n flipX: this.flipX,\n flipY: this.flipY,\n opacity: toFixed(this.opacity, NUM_FRACTION_DIGITS),\n shadow: (this.shadow && this.shadow.toObject) ? this.shadow.toObject() : this.shadow,\n visible: this.visible,\n backgroundColor: this.backgroundColor,\n fillRule: this.fillRule,\n paintFirst: this.paintFirst,\n globalCompositeOperation: this.globalCompositeOperation,\n skewX: toFixed(this.skewX, NUM_FRACTION_DIGITS),\n skewY: toFixed(this.skewY, NUM_FRACTION_DIGITS),\n };\n\n if (this.clipPath && !this.clipPath.excludeFromExport) {\n object.clipPath = this.clipPath.toObject(propertiesToInclude);\n object.clipPath.inverted = this.clipPath.inverted;\n object.clipPath.absolutePositioned = this.clipPath.absolutePositioned;\n }\n\n fabric.util.populateWithProperties(this, object, propertiesToInclude);\n if (!this.includeDefaultValues) {\n object = this._removeDefaultValues(object);\n }\n\n return object;\n },\n\n /**\n * Returns (dataless) object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toDatalessObject: function(propertiesToInclude) {\n // will be overwritten by subclasses\n return this.toObject(propertiesToInclude);\n },\n\n /**\n * @private\n * @param {Object} object\n */\n _removeDefaultValues: function(object) {\n var prototype = fabric.util.getKlass(object.type).prototype,\n stateProperties = prototype.stateProperties;\n stateProperties.forEach(function(prop) {\n if (prop === 'left' || prop === 'top') {\n return;\n }\n if (object[prop] === prototype[prop]) {\n delete object[prop];\n }\n // basically a check for [] === []\n if (Array.isArray(object[prop]) && Array.isArray(prototype[prop])\n && object[prop].length === 0 && prototype[prop].length === 0) {\n delete object[prop];\n }\n });\n\n return object;\n },\n\n /**\n * Returns a string representation of an instance\n * @return {String}\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Return the object scale factor counting also the group scaling\n * @return {Object} object with scaleX and scaleY properties\n */\n getObjectScaling: function() {\n // if the object is a top level one, on the canvas, we go for simple aritmetic\n // otherwise the complex method with angles will return approximations and decimals\n // and will likely kill the cache when not needed\n // https://github.com/fabricjs/fabric.js/issues/7157\n if (!this.group) {\n return {\n scaleX: this.scaleX,\n scaleY: this.scaleY,\n };\n }\n // if we are inside a group total zoom calculation is complex, we defer to generic matrices\n var options = fabric.util.qrDecompose(this.calcTransformMatrix());\n return { scaleX: Math.abs(options.scaleX), scaleY: Math.abs(options.scaleY) };\n },\n\n /**\n * Return the object scale factor counting also the group scaling, zoom and retina\n * @return {Object} object with scaleX and scaleY properties\n */\n getTotalObjectScaling: function() {\n var scale = this.getObjectScaling(), scaleX = scale.scaleX, scaleY = scale.scaleY;\n if (this.canvas) {\n var zoom = this.canvas.getZoom();\n var retina = this.canvas.getRetinaScaling();\n scaleX *= zoom * retina;\n scaleY *= zoom * retina;\n }\n return { scaleX: scaleX, scaleY: scaleY };\n },\n\n /**\n * Return the object opacity counting also the group property\n * @return {Number}\n */\n getObjectOpacity: function() {\n var opacity = this.opacity;\n if (this.group) {\n opacity *= this.group.getObjectOpacity();\n }\n return opacity;\n },\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n * @return {fabric.Object} thisArg\n */\n _set: function(key, value) {\n var shouldConstrainValue = (key === 'scaleX' || key === 'scaleY'),\n isChanged = this[key] !== value, groupNeedsUpdate = false;\n\n if (shouldConstrainValue) {\n value = this._constrainScale(value);\n }\n if (key === 'scaleX' && value < 0) {\n this.flipX = !this.flipX;\n value *= -1;\n }\n else if (key === 'scaleY' && value < 0) {\n this.flipY = !this.flipY;\n value *= -1;\n }\n else if (key === 'shadow' && value && !(value instanceof fabric.Shadow)) {\n value = new fabric.Shadow(value);\n }\n else if (key === 'dirty' && this.group) {\n this.group.set('dirty', value);\n }\n\n this[key] = value;\n\n if (isChanged) {\n groupNeedsUpdate = this.group && this.group.isOnACache();\n if (this.cacheProperties.indexOf(key) > -1) {\n this.dirty = true;\n groupNeedsUpdate && this.group.set('dirty', true);\n }\n else if (groupNeedsUpdate && this.stateProperties.indexOf(key) > -1) {\n this.group.set('dirty', true);\n }\n }\n return this;\n },\n\n /**\n * This callback function is called by the parent group of an object every\n * time a non-delegated property changes on the group. It is passed the key\n * and value as parameters. Not adding in this function's signature to avoid\n * Travis build error about unused variables.\n */\n setOnGroup: function() {\n // implemented by sub-classes, as needed.\n },\n\n /**\n * Retrieves viewportTransform from Object's canvas if possible\n * @method getViewportTransform\n * @memberOf fabric.Object.prototype\n * @return {Array}\n */\n getViewportTransform: function() {\n if (this.canvas && this.canvas.viewportTransform) {\n return this.canvas.viewportTransform;\n }\n return fabric.iMatrix.concat();\n },\n\n /*\n * @private\n * return if the object would be visible in rendering\n * @memberOf fabric.Object.prototype\n * @return {Boolean}\n */\n isNotVisible: function() {\n return this.opacity === 0 ||\n (!this.width && !this.height && this.strokeWidth === 0) ||\n !this.visible;\n },\n\n /**\n * Renders an object on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render: function(ctx) {\n // do not render if width/height are zeros or object is not visible\n if (this.isNotVisible()) {\n return;\n }\n if (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen()) {\n return;\n }\n ctx.save();\n this._setupCompositeOperation(ctx);\n this.drawSelectionBackground(ctx);\n this.transform(ctx);\n this._setOpacity(ctx);\n this._setShadow(ctx, this);\n if (this.shouldCache()) {\n this.renderCache();\n this.drawCacheOnCanvas(ctx);\n }\n else {\n this._removeCacheCanvas();\n this.dirty = false;\n this.drawObject(ctx);\n if (this.objectCaching && this.statefullCache) {\n this.saveState({ propertySet: 'cacheProperties' });\n }\n }\n ctx.restore();\n },\n\n renderCache: function(options) {\n options = options || {};\n if (!this._cacheCanvas || !this._cacheContext) {\n this._createCacheCanvas();\n }\n if (this.isCacheDirty()) {\n this.statefullCache && this.saveState({ propertySet: 'cacheProperties' });\n this.drawObject(this._cacheContext, options.forClipping);\n this.dirty = false;\n }\n },\n\n /**\n * Remove cacheCanvas and its dimensions from the objects\n */\n _removeCacheCanvas: function() {\n this._cacheCanvas = null;\n this._cacheContext = null;\n this.cacheWidth = 0;\n this.cacheHeight = 0;\n },\n\n /**\n * return true if the object will draw a stroke\n * Does not consider text styles. This is just a shortcut used at rendering time\n * We want it to be an approximation and be fast.\n * wrote to avoid extra caching, it has to return true when stroke happens,\n * can guess when it will not happen at 100% chance, does not matter if it misses\n * some use case where the stroke is invisible.\n * @since 3.0.0\n * @returns Boolean\n */\n hasStroke: function() {\n return this.stroke && this.stroke !== 'transparent' && this.strokeWidth !== 0;\n },\n\n /**\n * return true if the object will draw a fill\n * Does not consider text styles. This is just a shortcut used at rendering time\n * We want it to be an approximation and be fast.\n * wrote to avoid extra caching, it has to return true when fill happens,\n * can guess when it will not happen at 100% chance, does not matter if it misses\n * some use case where the fill is invisible.\n * @since 3.0.0\n * @returns Boolean\n */\n hasFill: function() {\n return this.fill && this.fill !== 'transparent';\n },\n\n /**\n * When set to `true`, force the object to have its own cache, even if it is inside a group\n * it may be needed when your object behave in a particular way on the cache and always needs\n * its own isolated canvas to render correctly.\n * Created to be overridden\n * since 1.7.12\n * @returns Boolean\n */\n needsItsOwnCache: function() {\n if (this.paintFirst === 'stroke' &&\n this.hasFill() && this.hasStroke() && typeof this.shadow === 'object') {\n return true;\n }\n if (this.clipPath) {\n return true;\n }\n return false;\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * objectCaching is a global flag, wins over everything\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group outside is cached.\n * Read as: cache if is needed, or if the feature is enabled but we are not already caching.\n * @return {Boolean}\n */\n shouldCache: function() {\n this.ownCaching = this.needsItsOwnCache() || (\n this.objectCaching &&\n (!this.group || !this.group.isOnACache())\n );\n return this.ownCaching;\n },\n\n /**\n * Check if this object or a child object will cast a shadow\n * used by Group.shouldCache to know if child has a shadow recursively\n * @return {Boolean}\n */\n willDrawShadow: function() {\n return !!this.shadow && (this.shadow.offsetX !== 0 || this.shadow.offsetY !== 0);\n },\n\n /**\n * Execute the drawing operation for an object clipPath\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {fabric.Object} clipPath\n */\n drawClipPathOnCache: function(ctx, clipPath) {\n ctx.save();\n // DEBUG: uncomment this line, comment the following\n // ctx.globalAlpha = 0.4\n if (clipPath.inverted) {\n ctx.globalCompositeOperation = 'destination-out';\n }\n else {\n ctx.globalCompositeOperation = 'destination-in';\n }\n //ctx.scale(1 / 2, 1 / 2);\n if (clipPath.absolutePositioned) {\n var m = fabric.util.invertTransform(this.calcTransformMatrix());\n ctx.transform(m[0], m[1], m[2], m[3], m[4], m[5]);\n }\n clipPath.transform(ctx);\n ctx.scale(1 / clipPath.zoomX, 1 / clipPath.zoomY);\n ctx.drawImage(clipPath._cacheCanvas, -clipPath.cacheTranslationX, -clipPath.cacheTranslationY);\n ctx.restore();\n },\n\n /**\n * Execute the drawing operation for an object on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawObject: function(ctx, forClipping) {\n var originalFill = this.fill, originalStroke = this.stroke;\n if (forClipping) {\n this.fill = 'black';\n this.stroke = '';\n this._setClippingProperties(ctx);\n }\n else {\n this._renderBackground(ctx);\n }\n this._render(ctx);\n this._drawClipPath(ctx, this.clipPath);\n this.fill = originalFill;\n this.stroke = originalStroke;\n },\n\n /**\n * Prepare clipPath state and cache and draw it on instance's cache\n * @param {CanvasRenderingContext2D} ctx\n * @param {fabric.Object} clipPath\n */\n _drawClipPath: function (ctx, clipPath) {\n if (!clipPath) { return; }\n // needed to setup a couple of variables\n // path canvas gets overridden with this one.\n // TODO find a better solution?\n clipPath.canvas = this.canvas;\n clipPath.shouldCache();\n clipPath._transformDone = true;\n clipPath.renderCache({ forClipping: true });\n this.drawClipPathOnCache(ctx, clipPath);\n },\n\n /**\n * Paint the cached copy of the object on the target context.\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawCacheOnCanvas: function(ctx) {\n ctx.scale(1 / this.zoomX, 1 / this.zoomY);\n ctx.drawImage(this._cacheCanvas, -this.cacheTranslationX, -this.cacheTranslationY);\n },\n\n /**\n * Check if cache is dirty\n * @param {Boolean} skipCanvas skip canvas checks because this object is painted\n * on parent canvas.\n */\n isCacheDirty: function(skipCanvas) {\n if (this.isNotVisible()) {\n return false;\n }\n if (this._cacheCanvas && this._cacheContext && !skipCanvas && this._updateCacheCanvas()) {\n // in this case the context is already cleared.\n return true;\n }\n else {\n if (this.dirty ||\n (this.clipPath && this.clipPath.absolutePositioned) ||\n (this.statefullCache && this.hasStateChanged('cacheProperties'))\n ) {\n if (this._cacheCanvas && this._cacheContext && !skipCanvas) {\n var width = this.cacheWidth / this.zoomX;\n var height = this.cacheHeight / this.zoomY;\n this._cacheContext.clearRect(-width / 2, -height / 2, width, height);\n }\n return true;\n }\n }\n return false;\n },\n\n /**\n * Draws a background for the object big as its untransformed dimensions\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderBackground: function(ctx) {\n if (!this.backgroundColor) {\n return;\n }\n var dim = this._getNonTransformedDimensions();\n ctx.fillStyle = this.backgroundColor;\n\n ctx.fillRect(\n -dim.x / 2,\n -dim.y / 2,\n dim.x,\n dim.y\n );\n // if there is background color no other shadows\n // should be casted\n this._removeShadow(ctx);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _setOpacity: function(ctx) {\n if (this.group && !this.group._transformDone) {\n ctx.globalAlpha = this.getObjectOpacity();\n }\n else {\n ctx.globalAlpha *= this.opacity;\n }\n },\n\n _setStrokeStyles: function(ctx, decl) {\n var stroke = decl.stroke;\n if (stroke) {\n ctx.lineWidth = decl.strokeWidth;\n ctx.lineCap = decl.strokeLineCap;\n ctx.lineDashOffset = decl.strokeDashOffset;\n ctx.lineJoin = decl.strokeLineJoin;\n ctx.miterLimit = decl.strokeMiterLimit;\n if (stroke.toLive) {\n if (stroke.gradientUnits === 'percentage' || stroke.gradientTransform || stroke.patternTransform) {\n // need to transform gradient in a pattern.\n // this is a slow process. If you are hitting this codepath, and the object\n // is not using caching, you should consider switching it on.\n // we need a canvas as big as the current object caching canvas.\n this._applyPatternForTransformedGradient(ctx, stroke);\n }\n else {\n // is a simple gradient or pattern\n ctx.strokeStyle = stroke.toLive(ctx, this);\n this._applyPatternGradientTransform(ctx, stroke);\n }\n }\n else {\n // is a color\n ctx.strokeStyle = decl.stroke;\n }\n }\n },\n\n _setFillStyles: function(ctx, decl) {\n var fill = decl.fill;\n if (fill) {\n if (fill.toLive) {\n ctx.fillStyle = fill.toLive(ctx, this);\n this._applyPatternGradientTransform(ctx, decl.fill);\n }\n else {\n ctx.fillStyle = fill;\n }\n }\n },\n\n _setClippingProperties: function(ctx) {\n ctx.globalAlpha = 1;\n ctx.strokeStyle = 'transparent';\n ctx.fillStyle = '#000000';\n },\n\n /**\n * @private\n * Sets line dash\n * @param {CanvasRenderingContext2D} ctx Context to set the dash line on\n * @param {Array} dashArray array representing dashes\n */\n _setLineDash: function(ctx, dashArray) {\n if (!dashArray || dashArray.length === 0) {\n return;\n }\n // Spec requires the concatenation of two copies the dash list when the number of elements is odd\n if (1 & dashArray.length) {\n dashArray.push.apply(dashArray, dashArray);\n }\n ctx.setLineDash(dashArray);\n },\n\n /**\n * Renders controls and borders for the object\n * the context here is not transformed\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} [styleOverride] properties to override the object style\n */\n _renderControls: function(ctx, styleOverride) {\n var vpt = this.getViewportTransform(),\n matrix = this.calcTransformMatrix(),\n options, drawBorders, drawControls;\n styleOverride = styleOverride || { };\n drawBorders = typeof styleOverride.hasBorders !== 'undefined' ? styleOverride.hasBorders : this.hasBorders;\n drawControls = typeof styleOverride.hasControls !== 'undefined' ? styleOverride.hasControls : this.hasControls;\n matrix = fabric.util.multiplyTransformMatrices(vpt, matrix);\n options = fabric.util.qrDecompose(matrix);\n ctx.save();\n ctx.translate(options.translateX, options.translateY);\n ctx.lineWidth = 1 * this.borderScaleFactor;\n if (!this.group) {\n ctx.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1;\n }\n if (this.flipX) {\n options.angle -= 180;\n }\n ctx.rotate(degreesToRadians(this.group ? options.angle : this.angle));\n if (styleOverride.forActiveSelection || this.group) {\n drawBorders && this.drawBordersInGroup(ctx, options, styleOverride);\n }\n else {\n drawBorders && this.drawBorders(ctx, styleOverride);\n }\n drawControls && this.drawControls(ctx, styleOverride);\n ctx.restore();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _setShadow: function(ctx) {\n if (!this.shadow) {\n return;\n }\n\n var shadow = this.shadow, canvas = this.canvas, scaling,\n multX = (canvas && canvas.viewportTransform[0]) || 1,\n multY = (canvas && canvas.viewportTransform[3]) || 1;\n if (shadow.nonScaling) {\n scaling = { scaleX: 1, scaleY: 1 };\n }\n else {\n scaling = this.getObjectScaling();\n }\n if (canvas && canvas._isRetinaScaling()) {\n multX *= fabric.devicePixelRatio;\n multY *= fabric.devicePixelRatio;\n }\n ctx.shadowColor = shadow.color;\n ctx.shadowBlur = shadow.blur * fabric.browserShadowBlurConstant *\n (multX + multY) * (scaling.scaleX + scaling.scaleY) / 4;\n ctx.shadowOffsetX = shadow.offsetX * multX * scaling.scaleX;\n ctx.shadowOffsetY = shadow.offsetY * multY * scaling.scaleY;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _removeShadow: function(ctx) {\n if (!this.shadow) {\n return;\n }\n\n ctx.shadowColor = '';\n ctx.shadowBlur = ctx.shadowOffsetX = ctx.shadowOffsetY = 0;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} filler fabric.Pattern or fabric.Gradient\n * @return {Object} offset.offsetX offset for text rendering\n * @return {Object} offset.offsetY offset for text rendering\n */\n _applyPatternGradientTransform: function(ctx, filler) {\n if (!filler || !filler.toLive) {\n return { offsetX: 0, offsetY: 0 };\n }\n var t = filler.gradientTransform || filler.patternTransform;\n var offsetX = -this.width / 2 + filler.offsetX || 0,\n offsetY = -this.height / 2 + filler.offsetY || 0;\n\n if (filler.gradientUnits === 'percentage') {\n ctx.transform(this.width, 0, 0, this.height, offsetX, offsetY);\n }\n else {\n ctx.transform(1, 0, 0, 1, offsetX, offsetY);\n }\n if (t) {\n ctx.transform(t[0], t[1], t[2], t[3], t[4], t[5]);\n }\n return { offsetX: offsetX, offsetY: offsetY };\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderPaintInOrder: function(ctx) {\n if (this.paintFirst === 'stroke') {\n this._renderStroke(ctx);\n this._renderFill(ctx);\n }\n else {\n this._renderFill(ctx);\n this._renderStroke(ctx);\n }\n },\n\n /**\n * @private\n * function that actually render something on the context.\n * empty here to allow Obects to work on tests to benchmark fabric functionalites\n * not related to rendering\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(/* ctx */) {\n\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderFill: function(ctx) {\n if (!this.fill) {\n return;\n }\n\n ctx.save();\n this._setFillStyles(ctx, this);\n if (this.fillRule === 'evenodd') {\n ctx.fill('evenodd');\n }\n else {\n ctx.fill();\n }\n ctx.restore();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderStroke: function(ctx) {\n if (!this.stroke || this.strokeWidth === 0) {\n return;\n }\n\n if (this.shadow && !this.shadow.affectStroke) {\n this._removeShadow(ctx);\n }\n\n ctx.save();\n if (this.strokeUniform && this.group) {\n var scaling = this.getObjectScaling();\n ctx.scale(1 / scaling.scaleX, 1 / scaling.scaleY);\n }\n else if (this.strokeUniform) {\n ctx.scale(1 / this.scaleX, 1 / this.scaleY);\n }\n this._setLineDash(ctx, this.strokeDashArray);\n this._setStrokeStyles(ctx, this);\n ctx.stroke();\n ctx.restore();\n },\n\n /**\n * This function try to patch the missing gradientTransform on canvas gradients.\n * transforming a context to transform the gradient, is going to transform the stroke too.\n * we want to transform the gradient but not the stroke operation, so we create\n * a transformed gradient on a pattern and then we use the pattern instead of the gradient.\n * this method has drwabacks: is slow, is in low resolution, needs a patch for when the size\n * is limited.\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {fabric.Gradient} filler a fabric gradient instance\n */\n _applyPatternForTransformedGradient: function(ctx, filler) {\n var dims = this._limitCacheSize(this._getCacheCanvasDimensions()),\n pCanvas = fabric.util.createCanvasElement(), pCtx, retinaScaling = this.canvas.getRetinaScaling(),\n width = dims.x / this.scaleX / retinaScaling, height = dims.y / this.scaleY / retinaScaling;\n pCanvas.width = width;\n pCanvas.height = height;\n pCtx = pCanvas.getContext('2d');\n pCtx.beginPath(); pCtx.moveTo(0, 0); pCtx.lineTo(width, 0); pCtx.lineTo(width, height);\n pCtx.lineTo(0, height); pCtx.closePath();\n pCtx.translate(width / 2, height / 2);\n pCtx.scale(\n dims.zoomX / this.scaleX / retinaScaling,\n dims.zoomY / this.scaleY / retinaScaling\n );\n this._applyPatternGradientTransform(pCtx, filler);\n pCtx.fillStyle = filler.toLive(ctx);\n pCtx.fill();\n ctx.translate(-this.width / 2 - this.strokeWidth / 2, -this.height / 2 - this.strokeWidth / 2);\n ctx.scale(\n retinaScaling * this.scaleX / dims.zoomX,\n retinaScaling * this.scaleY / dims.zoomY\n );\n ctx.strokeStyle = pCtx.createPattern(pCanvas, 'no-repeat');\n },\n\n /**\n * This function is an helper for svg import. it returns the center of the object in the svg\n * untransformed coordinates\n * @private\n * @return {Object} center point from element coordinates\n */\n _findCenterFromElement: function() {\n return { x: this.left + this.width / 2, y: this.top + this.height / 2 };\n },\n\n /**\n * This function is an helper for svg import. it decompose the transformMatrix\n * and assign properties to object.\n * untransformed coordinates\n * @private\n * @chainable\n */\n _assignTransformMatrixProps: function() {\n if (this.transformMatrix) {\n var options = fabric.util.qrDecompose(this.transformMatrix);\n this.flipX = false;\n this.flipY = false;\n this.set('scaleX', options.scaleX);\n this.set('scaleY', options.scaleY);\n this.angle = options.angle;\n this.skewX = options.skewX;\n this.skewY = 0;\n }\n },\n\n /**\n * This function is an helper for svg import. it removes the transform matrix\n * and set to object properties that fabricjs can handle\n * @private\n * @param {Object} preserveAspectRatioOptions\n * @return {thisArg}\n */\n _removeTransformMatrix: function(preserveAspectRatioOptions) {\n var center = this._findCenterFromElement();\n if (this.transformMatrix) {\n this._assignTransformMatrixProps();\n center = fabric.util.transformPoint(center, this.transformMatrix);\n }\n this.transformMatrix = null;\n if (preserveAspectRatioOptions) {\n this.scaleX *= preserveAspectRatioOptions.scaleX;\n this.scaleY *= preserveAspectRatioOptions.scaleY;\n this.cropX = preserveAspectRatioOptions.cropX;\n this.cropY = preserveAspectRatioOptions.cropY;\n center.x += preserveAspectRatioOptions.offsetLeft;\n center.y += preserveAspectRatioOptions.offsetTop;\n this.width = preserveAspectRatioOptions.width;\n this.height = preserveAspectRatioOptions.height;\n }\n this.setPositionByOrigin(center, 'center', 'center');\n },\n\n /**\n * Clones an instance, using a callback method will work for every object.\n * @param {Function} callback Callback is invoked with a clone as a first argument\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n */\n clone: function(callback, propertiesToInclude) {\n var objectForm = this.toObject(propertiesToInclude);\n if (this.constructor.fromObject) {\n this.constructor.fromObject(objectForm, callback);\n }\n else {\n fabric.Object._fromObject('Object', objectForm, callback);\n }\n },\n\n /**\n * Creates an instance of fabric.Image out of an object\n * makes use of toCanvasElement.\n * Once this method was based on toDataUrl and loadImage, so it also had a quality\n * and format option. toCanvasElement is faster and produce no loss of quality.\n * If you need to get a real Jpeg or Png from an object, using toDataURL is the right way to do it.\n * toCanvasElement and then toBlob from the obtained canvas is also a good option.\n * This method is sync now, but still support the callback because we did not want to break.\n * When fabricJS 5.0 will be planned, this will probably be changed to not have a callback.\n * @param {Function} callback callback, invoked with an instance as a first argument\n * @param {Object} [options] for clone as image, passed to toDataURL\n * @param {Number} [options.multiplier=1] Multiplier to scale by\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4\n * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4\n * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2\n * @return {fabric.Object} thisArg\n */\n cloneAsImage: function(callback, options) {\n var canvasEl = this.toCanvasElement(options);\n if (callback) {\n callback(new fabric.Image(canvasEl));\n }\n return this;\n },\n\n /**\n * Converts an object into a HTMLCanvas element\n * @param {Object} options Options object\n * @param {Number} [options.multiplier=1] Multiplier to scale by\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4\n * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4\n * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2\n * @return {HTMLCanvasElement} Returns DOM element with the fabric.Object\n */\n toCanvasElement: function(options) {\n options || (options = { });\n\n var utils = fabric.util, origParams = utils.saveObjectTransform(this),\n originalGroup = this.group,\n originalShadow = this.shadow, abs = Math.abs,\n multiplier = (options.multiplier || 1) * (options.enableRetinaScaling ? fabric.devicePixelRatio : 1);\n delete this.group;\n if (options.withoutTransform) {\n utils.resetObjectTransform(this);\n }\n if (options.withoutShadow) {\n this.shadow = null;\n }\n\n var el = fabric.util.createCanvasElement(),\n // skip canvas zoom and calculate with setCoords now.\n boundingRect = this.getBoundingRect(true, true),\n shadow = this.shadow, scaling,\n shadowOffset = { x: 0, y: 0 }, shadowBlur,\n width, height;\n\n if (shadow) {\n shadowBlur = shadow.blur;\n if (shadow.nonScaling) {\n scaling = { scaleX: 1, scaleY: 1 };\n }\n else {\n scaling = this.getObjectScaling();\n }\n // consider non scaling shadow.\n shadowOffset.x = 2 * Math.round(abs(shadow.offsetX) + shadowBlur) * (abs(scaling.scaleX));\n shadowOffset.y = 2 * Math.round(abs(shadow.offsetY) + shadowBlur) * (abs(scaling.scaleY));\n }\n width = boundingRect.width + shadowOffset.x;\n height = boundingRect.height + shadowOffset.y;\n // if the current width/height is not an integer\n // we need to make it so.\n el.width = Math.ceil(width);\n el.height = Math.ceil(height);\n var canvas = new fabric.StaticCanvas(el, {\n enableRetinaScaling: false,\n renderOnAddRemove: false,\n skipOffscreen: false,\n });\n if (options.format === 'jpeg') {\n canvas.backgroundColor = '#fff';\n }\n this.setPositionByOrigin(new fabric.Point(canvas.width / 2, canvas.height / 2), 'center', 'center');\n\n var originalCanvas = this.canvas;\n canvas.add(this);\n var canvasEl = canvas.toCanvasElement(multiplier || 1, options);\n this.shadow = originalShadow;\n this.set('canvas', originalCanvas);\n if (originalGroup) {\n this.group = originalGroup;\n }\n this.set(origParams).setCoords();\n // canvas.dispose will call image.dispose that will nullify the elements\n // since this canvas is a simple element for the process, we remove references\n // to objects in this way in order to avoid object trashing.\n canvas._objects = [];\n canvas.dispose();\n canvas = null;\n\n return canvasEl;\n },\n\n /**\n * Converts an object into a data-url-like string\n * @param {Object} options Options object\n * @param {String} [options.format=png] The format of the output image. Either \"jpeg\" or \"png\"\n * @param {Number} [options.quality=1] Quality level (0..1). Only used for jpeg.\n * @param {Number} [options.multiplier=1] Multiplier to scale by\n * @param {Number} [options.left] Cropping left offset. Introduced in v1.2.14\n * @param {Number} [options.top] Cropping top offset. Introduced in v1.2.14\n * @param {Number} [options.width] Cropping width. Introduced in v1.2.14\n * @param {Number} [options.height] Cropping height. Introduced in v1.2.14\n * @param {Boolean} [options.enableRetinaScaling] Enable retina scaling for clone image. Introduce in 1.6.4\n * @param {Boolean} [options.withoutTransform] Remove current object transform ( no scale , no angle, no flip, no skew ). Introduced in 2.3.4\n * @param {Boolean} [options.withoutShadow] Remove current object shadow. Introduced in 2.4.2\n * @return {String} Returns a data: URL containing a representation of the object in the format specified by options.format\n */\n toDataURL: function(options) {\n options || (options = { });\n return fabric.util.toDataURL(this.toCanvasElement(options), options.format || 'png', options.quality || 1);\n },\n\n /**\n * Returns true if specified type is identical to the type of an instance\n * @param {String} type Type to check against\n * @return {Boolean}\n */\n isType: function(type) {\n return arguments.length > 1 ? Array.from(arguments).includes(this.type) : this.type === type;\n },\n\n /**\n * Returns complexity of an instance\n * @return {Number} complexity of this instance (is 1 unless subclassed)\n */\n complexity: function() {\n return 1;\n },\n\n /**\n * Returns a JSON representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} JSON\n */\n toJSON: function(propertiesToInclude) {\n // delegate, not alias\n return this.toObject(propertiesToInclude);\n },\n\n /**\n * Sets \"angle\" of an instance with centered rotation\n * @param {Number} angle Angle value (in degrees)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n rotate: function(angle) {\n var shouldCenterOrigin = (this.originX !== 'center' || this.originY !== 'center') && this.centeredRotation;\n\n if (shouldCenterOrigin) {\n this._setOriginToCenter();\n }\n\n this.set('angle', angle);\n\n if (shouldCenterOrigin) {\n this._resetOrigin();\n }\n\n return this;\n },\n\n /**\n * Centers object horizontally on canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n centerH: function () {\n this.canvas && this.canvas.centerObjectH(this);\n return this;\n },\n\n /**\n * Centers object horizontally on current viewport of canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n viewportCenterH: function () {\n this.canvas && this.canvas.viewportCenterObjectH(this);\n return this;\n },\n\n /**\n * Centers object vertically on canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n centerV: function () {\n this.canvas && this.canvas.centerObjectV(this);\n return this;\n },\n\n /**\n * Centers object vertically on current viewport of canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n viewportCenterV: function () {\n this.canvas && this.canvas.viewportCenterObjectV(this);\n return this;\n },\n\n /**\n * Centers object vertically and horizontally on canvas to which is was added last\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n center: function () {\n this.canvas && this.canvas.centerObject(this);\n return this;\n },\n\n /**\n * Centers object on current viewport of canvas to which it was added last.\n * You might need to call `setCoords` on an object after centering, to update controls area.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n viewportCenter: function () {\n this.canvas && this.canvas.viewportCenterObject(this);\n return this;\n },\n\n /**\n * Returns coordinates of a pointer relative to an object\n * @param {Event} e Event to operate upon\n * @param {Object} [pointer] Pointer to operate upon (instead of event)\n * @return {Object} Coordinates of a pointer (x, y)\n */\n getLocalPointer: function(e, pointer) {\n pointer = pointer || this.canvas.getPointer(e);\n var pClicked = new fabric.Point(pointer.x, pointer.y),\n objectLeftTop = this._getLeftTopCoords();\n if (this.angle) {\n pClicked = fabric.util.rotatePoint(\n pClicked, objectLeftTop, degreesToRadians(-this.angle));\n }\n return {\n x: pClicked.x - objectLeftTop.x,\n y: pClicked.y - objectLeftTop.y\n };\n },\n\n /**\n * Sets canvas globalCompositeOperation for specific object\n * custom composition operation for the particular object can be specified using globalCompositeOperation property\n * @param {CanvasRenderingContext2D} ctx Rendering canvas context\n */\n _setupCompositeOperation: function (ctx) {\n if (this.globalCompositeOperation) {\n ctx.globalCompositeOperation = this.globalCompositeOperation;\n }\n },\n\n /**\n * cancel instance's running animations\n * override if necessary to dispose artifacts such as `clipPath`\n */\n dispose: function () {\n if (fabric.runningAnimations) {\n fabric.runningAnimations.cancelByTarget(this);\n }\n }\n });\n\n fabric.util.createAccessors && fabric.util.createAccessors(fabric.Object);\n\n extend(fabric.Object.prototype, fabric.Observable);\n\n /**\n * Defines the number of fraction digits to use when serializing object values.\n * You can use it to increase/decrease precision of such values like left, top, scaleX, scaleY, etc.\n * @static\n * @memberOf fabric.Object\n * @constant\n * @type Number\n */\n fabric.Object.NUM_FRACTION_DIGITS = 2;\n\n /**\n * Defines which properties should be enlivened from the object passed to {@link fabric.Object._fromObject}\n * @static\n * @memberOf fabric.Object\n * @constant\n * @type string[]\n */\n fabric.Object.ENLIVEN_PROPS = ['clipPath'];\n\n fabric.Object._fromObject = function(className, object, callback, extraParam) {\n var klass = fabric[className];\n object = clone(object, true);\n fabric.util.enlivenPatterns([object.fill, object.stroke], function(patterns) {\n if (typeof patterns[0] !== 'undefined') {\n object.fill = patterns[0];\n }\n if (typeof patterns[1] !== 'undefined') {\n object.stroke = patterns[1];\n }\n fabric.util.enlivenObjectEnlivables(object, object, function () {\n var instance = extraParam ? new klass(object[extraParam], object) : new klass(object);\n callback && callback(instance);\n });\n });\n };\n\n /**\n * Unique id used internally when creating SVG elements\n * @static\n * @memberOf fabric.Object\n * @type Number\n */\n fabric.Object.__uid = 0;\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n var degreesToRadians = fabric.util.degreesToRadians,\n originXOffset = {\n left: -0.5,\n center: 0,\n right: 0.5\n },\n originYOffset = {\n top: -0.5,\n center: 0,\n bottom: 0.5\n };\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Translates the coordinates from a set of origin to another (based on the object's dimensions)\n * @param {fabric.Point} point The point which corresponds to the originX and originY params\n * @param {String} fromOriginX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} fromOriginY Vertical origin: 'top', 'center' or 'bottom'\n * @param {String} toOriginX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} toOriginY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n translateToGivenOrigin: function(point, fromOriginX, fromOriginY, toOriginX, toOriginY) {\n var x = point.x,\n y = point.y,\n offsetX, offsetY, dim;\n\n if (typeof fromOriginX === 'string') {\n fromOriginX = originXOffset[fromOriginX];\n }\n else {\n fromOriginX -= 0.5;\n }\n\n if (typeof toOriginX === 'string') {\n toOriginX = originXOffset[toOriginX];\n }\n else {\n toOriginX -= 0.5;\n }\n\n offsetX = toOriginX - fromOriginX;\n\n if (typeof fromOriginY === 'string') {\n fromOriginY = originYOffset[fromOriginY];\n }\n else {\n fromOriginY -= 0.5;\n }\n\n if (typeof toOriginY === 'string') {\n toOriginY = originYOffset[toOriginY];\n }\n else {\n toOriginY -= 0.5;\n }\n\n offsetY = toOriginY - fromOriginY;\n\n if (offsetX || offsetY) {\n dim = this._getTransformedDimensions();\n x = point.x + offsetX * dim.x;\n y = point.y + offsetY * dim.y;\n }\n\n return new fabric.Point(x, y);\n },\n\n /**\n * Translates the coordinates from origin to center coordinates (based on the object's dimensions)\n * @param {fabric.Point} point The point which corresponds to the originX and originY params\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n translateToCenterPoint: function(point, originX, originY) {\n var p = this.translateToGivenOrigin(point, originX, originY, 'center', 'center');\n if (this.angle) {\n return fabric.util.rotatePoint(p, point, degreesToRadians(this.angle));\n }\n return p;\n },\n\n /**\n * Translates the coordinates from center to origin coordinates (based on the object's dimensions)\n * @param {fabric.Point} center The point which corresponds to center of the object\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n translateToOriginPoint: function(center, originX, originY) {\n var p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY);\n if (this.angle) {\n return fabric.util.rotatePoint(p, center, degreesToRadians(this.angle));\n }\n return p;\n },\n\n /**\n * Returns the real center coordinates of the object\n * @return {fabric.Point}\n */\n getCenterPoint: function() {\n var leftTop = new fabric.Point(this.left, this.top);\n return this.translateToCenterPoint(leftTop, this.originX, this.originY);\n },\n\n /**\n * Returns the coordinates of the object based on center coordinates\n * @param {fabric.Point} point The point which corresponds to the originX and originY params\n * @return {fabric.Point}\n */\n // getOriginPoint: function(center) {\n // return this.translateToOriginPoint(center, this.originX, this.originY);\n // },\n\n /**\n * Returns the coordinates of the object as if it has a different origin\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n getPointByOrigin: function(originX, originY) {\n var center = this.getCenterPoint();\n return this.translateToOriginPoint(center, originX, originY);\n },\n\n /**\n * Returns the point in local coordinates\n * @param {fabric.Point} point The point relative to the global coordinate system\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {fabric.Point}\n */\n toLocalPoint: function(point, originX, originY) {\n var center = this.getCenterPoint(),\n p, p2;\n\n if (typeof originX !== 'undefined' && typeof originY !== 'undefined' ) {\n p = this.translateToGivenOrigin(center, 'center', 'center', originX, originY);\n }\n else {\n p = new fabric.Point(this.left, this.top);\n }\n\n p2 = new fabric.Point(point.x, point.y);\n if (this.angle) {\n p2 = fabric.util.rotatePoint(p2, center, -degreesToRadians(this.angle));\n }\n return p2.subtractEquals(p);\n },\n\n /**\n * Returns the point in global coordinates\n * @param {fabric.Point} The point relative to the local coordinate system\n * @return {fabric.Point}\n */\n // toGlobalPoint: function(point) {\n // return fabric.util.rotatePoint(point, this.getCenterPoint(), degreesToRadians(this.angle)).addEquals(new fabric.Point(this.left, this.top));\n // },\n\n /**\n * Sets the position of the object taking into consideration the object's origin\n * @param {fabric.Point} pos The new position of the object\n * @param {String} originX Horizontal origin: 'left', 'center' or 'right'\n * @param {String} originY Vertical origin: 'top', 'center' or 'bottom'\n * @return {void}\n */\n setPositionByOrigin: function(pos, originX, originY) {\n var center = this.translateToCenterPoint(pos, originX, originY),\n position = this.translateToOriginPoint(center, this.originX, this.originY);\n this.set('left', position.x);\n this.set('top', position.y);\n },\n\n /**\n * @param {String} to One of 'left', 'center', 'right'\n */\n adjustPosition: function(to) {\n var angle = degreesToRadians(this.angle),\n hypotFull = this.getScaledWidth(),\n xFull = fabric.util.cos(angle) * hypotFull,\n yFull = fabric.util.sin(angle) * hypotFull,\n offsetFrom, offsetTo;\n\n //TODO: this function does not consider mixed situation like top, center.\n if (typeof this.originX === 'string') {\n offsetFrom = originXOffset[this.originX];\n }\n else {\n offsetFrom = this.originX - 0.5;\n }\n if (typeof to === 'string') {\n offsetTo = originXOffset[to];\n }\n else {\n offsetTo = to - 0.5;\n }\n this.left += xFull * (offsetTo - offsetFrom);\n this.top += yFull * (offsetTo - offsetFrom);\n this.setCoords();\n this.originX = to;\n },\n\n /**\n * Sets the origin/position of the object to it's center point\n * @private\n * @return {void}\n */\n _setOriginToCenter: function() {\n this._originalOriginX = this.originX;\n this._originalOriginY = this.originY;\n\n var center = this.getCenterPoint();\n\n this.originX = 'center';\n this.originY = 'center';\n\n this.left = center.x;\n this.top = center.y;\n },\n\n /**\n * Resets the origin/position of the object to it's original origin\n * @private\n * @return {void}\n */\n _resetOrigin: function() {\n var originPoint = this.translateToOriginPoint(\n this.getCenterPoint(),\n this._originalOriginX,\n this._originalOriginY);\n\n this.originX = this._originalOriginX;\n this.originY = this._originalOriginY;\n\n this.left = originPoint.x;\n this.top = originPoint.y;\n\n this._originalOriginX = null;\n this._originalOriginY = null;\n },\n\n /**\n * @private\n */\n _getLeftTopCoords: function() {\n return this.translateToOriginPoint(this.getCenterPoint(), 'left', 'top');\n },\n });\n\n})();\n\n\n(function() {\n\n function arrayFromCoords(coords) {\n return [\n new fabric.Point(coords.tl.x, coords.tl.y),\n new fabric.Point(coords.tr.x, coords.tr.y),\n new fabric.Point(coords.br.x, coords.br.y),\n new fabric.Point(coords.bl.x, coords.bl.y)\n ];\n }\n\n var util = fabric.util,\n degreesToRadians = util.degreesToRadians,\n multiplyMatrices = util.multiplyTransformMatrices,\n transformPoint = util.transformPoint;\n\n util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Describe object's corner position in canvas element coordinates.\n * properties are depending on control keys and padding the main controls.\n * each property is an object with x, y and corner.\n * The `corner` property contains in a similar manner the 4 points of the\n * interactive area of the corner.\n * The coordinates depends from the controls positionHandler and are used\n * to draw and locate controls\n * @memberOf fabric.Object.prototype\n */\n oCoords: null,\n\n /**\n * Describe object's corner position in canvas object absolute coordinates\n * properties are tl,tr,bl,br and describe the four main corner.\n * each property is an object with x, y, instance of Fabric.Point.\n * The coordinates depends from this properties: width, height, scaleX, scaleY\n * skewX, skewY, angle, strokeWidth, top, left.\n * Those coordinates are useful to understand where an object is. They get updated\n * with oCoords but they do not need to be updated when zoom or panning change.\n * The coordinates get updated with @method setCoords.\n * You can calculate them without updating with @method calcACoords();\n * @memberOf fabric.Object.prototype\n */\n aCoords: null,\n\n /**\n * Describe object's corner position in canvas element coordinates.\n * includes padding. Used of object detection.\n * set and refreshed with setCoords.\n * @memberOf fabric.Object.prototype\n */\n lineCoords: null,\n\n /**\n * storage for object transform matrix\n */\n ownMatrixCache: null,\n\n /**\n * storage for object full transform matrix\n */\n matrixCache: null,\n\n /**\n * custom controls interface\n * controls are added by default_controls.js\n */\n controls: { },\n\n /**\n * return correct set of coordinates for intersection\n * this will return either aCoords or lineCoords.\n * @param {Boolean} absolute will return aCoords if true or lineCoords\n * @return {Object} {tl, tr, br, bl} points\n */\n _getCoords: function(absolute, calculate) {\n if (calculate) {\n return (absolute ? this.calcACoords() : this.calcLineCoords());\n }\n if (!this.aCoords || !this.lineCoords) {\n this.setCoords(true);\n }\n return (absolute ? this.aCoords : this.lineCoords);\n },\n\n /**\n * return correct set of coordinates for intersection\n * this will return either aCoords or lineCoords.\n * The coords are returned in an array.\n * @return {Array} [tl, tr, br, bl] of points\n */\n getCoords: function(absolute, calculate) {\n return arrayFromCoords(this._getCoords(absolute, calculate));\n },\n\n /**\n * Checks if object intersects with an area formed by 2 points\n * @param {Object} pointTL top-left point of area\n * @param {Object} pointBR bottom-right point of area\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object intersects with an area formed by 2 points\n */\n intersectsWithRect: function(pointTL, pointBR, absolute, calculate) {\n var coords = this.getCoords(absolute, calculate),\n intersection = fabric.Intersection.intersectPolygonRectangle(\n coords,\n pointTL,\n pointBR\n );\n return intersection.status === 'Intersection';\n },\n\n /**\n * Checks if object intersects with another object\n * @param {Object} other Object to test\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object intersects with another object\n */\n intersectsWithObject: function(other, absolute, calculate) {\n var intersection = fabric.Intersection.intersectPolygonPolygon(\n this.getCoords(absolute, calculate),\n other.getCoords(absolute, calculate)\n );\n\n return intersection.status === 'Intersection'\n || other.isContainedWithinObject(this, absolute, calculate)\n || this.isContainedWithinObject(other, absolute, calculate);\n },\n\n /**\n * Checks if object is fully contained within area of another object\n * @param {Object} other Object to test\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object is fully contained within area of another object\n */\n isContainedWithinObject: function(other, absolute, calculate) {\n var points = this.getCoords(absolute, calculate),\n otherCoords = absolute ? other.aCoords : other.lineCoords,\n i = 0, lines = other._getImageLines(otherCoords);\n for (; i < 4; i++) {\n if (!other.containsPoint(points[i], lines)) {\n return false;\n }\n }\n return true;\n },\n\n /**\n * Checks if object is fully contained within area formed by 2 points\n * @param {Object} pointTL top-left point of area\n * @param {Object} pointBR bottom-right point of area\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object is fully contained within area formed by 2 points\n */\n isContainedWithinRect: function(pointTL, pointBR, absolute, calculate) {\n var boundingRect = this.getBoundingRect(absolute, calculate);\n\n return (\n boundingRect.left >= pointTL.x &&\n boundingRect.left + boundingRect.width <= pointBR.x &&\n boundingRect.top >= pointTL.y &&\n boundingRect.top + boundingRect.height <= pointBR.y\n );\n },\n\n /**\n * Checks if point is inside the object\n * @param {fabric.Point} point Point to check against\n * @param {Object} [lines] object returned from @method _getImageLines\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if point is inside the object\n */\n containsPoint: function(point, lines, absolute, calculate) {\n var coords = this._getCoords(absolute, calculate),\n lines = lines || this._getImageLines(coords),\n xPoints = this._findCrossPoints(point, lines);\n // if xPoints is odd then point is inside the object\n return (xPoints !== 0 && xPoints % 2 === 1);\n },\n\n /**\n * Checks if object is contained within the canvas with current viewportTransform\n * the check is done stopping at first point that appears on screen\n * @param {Boolean} [calculate] use coordinates of current position instead of .aCoords\n * @return {Boolean} true if object is fully or partially contained within canvas\n */\n isOnScreen: function(calculate) {\n if (!this.canvas) {\n return false;\n }\n var pointTL = this.canvas.vptCoords.tl, pointBR = this.canvas.vptCoords.br;\n var points = this.getCoords(true, calculate);\n // if some point is on screen, the object is on screen.\n if (points.some(function(point) {\n return point.x <= pointBR.x && point.x >= pointTL.x &&\n point.y <= pointBR.y && point.y >= pointTL.y;\n })) {\n return true;\n }\n // no points on screen, check intersection with absolute coordinates\n if (this.intersectsWithRect(pointTL, pointBR, true, calculate)) {\n return true;\n }\n return this._containsCenterOfCanvas(pointTL, pointBR, calculate);\n },\n\n /**\n * Checks if the object contains the midpoint between canvas extremities\n * Does not make sense outside the context of isOnScreen and isPartiallyOnScreen\n * @private\n * @param {Fabric.Point} pointTL Top Left point\n * @param {Fabric.Point} pointBR Top Right point\n * @param {Boolean} calculate use coordinates of current position instead of .oCoords\n * @return {Boolean} true if the object contains the point\n */\n _containsCenterOfCanvas: function(pointTL, pointBR, calculate) {\n // worst case scenario the object is so big that contains the screen\n var centerPoint = { x: (pointTL.x + pointBR.x) / 2, y: (pointTL.y + pointBR.y) / 2 };\n if (this.containsPoint(centerPoint, null, true, calculate)) {\n return true;\n }\n return false;\n },\n\n /**\n * Checks if object is partially contained within the canvas with current viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords\n * @return {Boolean} true if object is partially contained within canvas\n */\n isPartiallyOnScreen: function(calculate) {\n if (!this.canvas) {\n return false;\n }\n var pointTL = this.canvas.vptCoords.tl, pointBR = this.canvas.vptCoords.br;\n if (this.intersectsWithRect(pointTL, pointBR, true, calculate)) {\n return true;\n }\n var allPointsAreOutside = this.getCoords(true, calculate).every(function(point) {\n return (point.x >= pointBR.x || point.x <= pointTL.x) &&\n (point.y >= pointBR.y || point.y <= pointTL.y);\n });\n return allPointsAreOutside && this._containsCenterOfCanvas(pointTL, pointBR, calculate);\n },\n\n /**\n * Method that returns an object with the object edges in it, given the coordinates of the corners\n * @private\n * @param {Object} oCoords Coordinates of the object corners\n */\n _getImageLines: function(oCoords) {\n\n var lines = {\n topline: {\n o: oCoords.tl,\n d: oCoords.tr\n },\n rightline: {\n o: oCoords.tr,\n d: oCoords.br\n },\n bottomline: {\n o: oCoords.br,\n d: oCoords.bl\n },\n leftline: {\n o: oCoords.bl,\n d: oCoords.tl\n }\n };\n\n // // debugging\n // if (this.canvas.contextTop) {\n // this.canvas.contextTop.fillRect(lines.bottomline.d.x, lines.bottomline.d.y, 2, 2);\n // this.canvas.contextTop.fillRect(lines.bottomline.o.x, lines.bottomline.o.y, 2, 2);\n //\n // this.canvas.contextTop.fillRect(lines.leftline.d.x, lines.leftline.d.y, 2, 2);\n // this.canvas.contextTop.fillRect(lines.leftline.o.x, lines.leftline.o.y, 2, 2);\n //\n // this.canvas.contextTop.fillRect(lines.topline.d.x, lines.topline.d.y, 2, 2);\n // this.canvas.contextTop.fillRect(lines.topline.o.x, lines.topline.o.y, 2, 2);\n //\n // this.canvas.contextTop.fillRect(lines.rightline.d.x, lines.rightline.d.y, 2, 2);\n // this.canvas.contextTop.fillRect(lines.rightline.o.x, lines.rightline.o.y, 2, 2);\n // }\n\n return lines;\n },\n\n /**\n * Helper method to determine how many cross points are between the 4 object edges\n * and the horizontal line determined by a point on canvas\n * @private\n * @param {fabric.Point} point Point to check\n * @param {Object} lines Coordinates of the object being evaluated\n */\n // remove yi, not used but left code here just in case.\n _findCrossPoints: function(point, lines) {\n var b1, b2, a1, a2, xi, // yi,\n xcount = 0,\n iLine;\n\n for (var lineKey in lines) {\n iLine = lines[lineKey];\n // optimisation 1: line below point. no cross\n if ((iLine.o.y < point.y) && (iLine.d.y < point.y)) {\n continue;\n }\n // optimisation 2: line above point. no cross\n if ((iLine.o.y >= point.y) && (iLine.d.y >= point.y)) {\n continue;\n }\n // optimisation 3: vertical line case\n if ((iLine.o.x === iLine.d.x) && (iLine.o.x >= point.x)) {\n xi = iLine.o.x;\n // yi = point.y;\n }\n // calculate the intersection point\n else {\n b1 = 0;\n b2 = (iLine.d.y - iLine.o.y) / (iLine.d.x - iLine.o.x);\n a1 = point.y - b1 * point.x;\n a2 = iLine.o.y - b2 * iLine.o.x;\n\n xi = -(a1 - a2) / (b1 - b2);\n // yi = a1 + b1 * xi;\n }\n // dont count xi < point.x cases\n if (xi >= point.x) {\n xcount += 1;\n }\n // optimisation 4: specific for square images\n if (xcount === 2) {\n break;\n }\n }\n return xcount;\n },\n\n /**\n * Returns coordinates of object's bounding rectangle (left, top, width, height)\n * the box is intended as aligned to axis of canvas.\n * @param {Boolean} [absolute] use coordinates without viewportTransform\n * @param {Boolean} [calculate] use coordinates of current position instead of .oCoords / .aCoords\n * @return {Object} Object with left, top, width, height properties\n */\n getBoundingRect: function(absolute, calculate) {\n var coords = this.getCoords(absolute, calculate);\n return util.makeBoundingBoxFromPoints(coords);\n },\n\n /**\n * Returns width of an object's bounding box counting transformations\n * before 2.0 it was named getWidth();\n * @return {Number} width value\n */\n getScaledWidth: function() {\n return this._getTransformedDimensions().x;\n },\n\n /**\n * Returns height of an object bounding box counting transformations\n * before 2.0 it was named getHeight();\n * @return {Number} height value\n */\n getScaledHeight: function() {\n return this._getTransformedDimensions().y;\n },\n\n /**\n * Makes sure the scale is valid and modifies it if necessary\n * @private\n * @param {Number} value\n * @return {Number}\n */\n _constrainScale: function(value) {\n if (Math.abs(value) < this.minScaleLimit) {\n if (value < 0) {\n return -this.minScaleLimit;\n }\n else {\n return this.minScaleLimit;\n }\n }\n else if (value === 0) {\n return 0.0001;\n }\n return value;\n },\n\n /**\n * Scales an object (equally by x and y)\n * @param {Number} value Scale factor\n * @return {fabric.Object} thisArg\n * @chainable\n */\n scale: function(value) {\n this._set('scaleX', value);\n this._set('scaleY', value);\n return this.setCoords();\n },\n\n /**\n * Scales an object to a given width, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New width value\n * @param {Boolean} absolute ignore viewport\n * @return {fabric.Object} thisArg\n * @chainable\n */\n scaleToWidth: function(value, absolute) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n var boundingRectFactor = this.getBoundingRect(absolute).width / this.getScaledWidth();\n return this.scale(value / this.width / boundingRectFactor);\n },\n\n /**\n * Scales an object to a given height, with respect to bounding box (scaling by x/y equally)\n * @param {Number} value New height value\n * @param {Boolean} absolute ignore viewport\n * @return {fabric.Object} thisArg\n * @chainable\n */\n scaleToHeight: function(value, absolute) {\n // adjust to bounding rect factor so that rotated shapes would fit as well\n var boundingRectFactor = this.getBoundingRect(absolute).height / this.getScaledHeight();\n return this.scale(value / this.height / boundingRectFactor);\n },\n\n calcLineCoords: function() {\n var vpt = this.getViewportTransform(),\n padding = this.padding, angle = degreesToRadians(this.angle),\n cos = util.cos(angle), sin = util.sin(angle),\n cosP = cos * padding, sinP = sin * padding, cosPSinP = cosP + sinP,\n cosPMinusSinP = cosP - sinP, aCoords = this.calcACoords();\n\n var lineCoords = {\n tl: transformPoint(aCoords.tl, vpt),\n tr: transformPoint(aCoords.tr, vpt),\n bl: transformPoint(aCoords.bl, vpt),\n br: transformPoint(aCoords.br, vpt),\n };\n\n if (padding) {\n lineCoords.tl.x -= cosPMinusSinP;\n lineCoords.tl.y -= cosPSinP;\n lineCoords.tr.x += cosPSinP;\n lineCoords.tr.y -= cosPMinusSinP;\n lineCoords.bl.x -= cosPSinP;\n lineCoords.bl.y += cosPMinusSinP;\n lineCoords.br.x += cosPMinusSinP;\n lineCoords.br.y += cosPSinP;\n }\n\n return lineCoords;\n },\n\n calcOCoords: function() {\n var rotateMatrix = this._calcRotateMatrix(),\n translateMatrix = this._calcTranslateMatrix(),\n vpt = this.getViewportTransform(),\n startMatrix = multiplyMatrices(vpt, translateMatrix),\n finalMatrix = multiplyMatrices(startMatrix, rotateMatrix),\n finalMatrix = multiplyMatrices(finalMatrix, [1 / vpt[0], 0, 0, 1 / vpt[3], 0, 0]),\n dim = this._calculateCurrentDimensions(),\n coords = {};\n this.forEachControl(function(control, key, fabricObject) {\n coords[key] = control.positionHandler(dim, finalMatrix, fabricObject);\n });\n\n // debug code\n // var canvas = this.canvas;\n // setTimeout(function() {\n // canvas.contextTop.clearRect(0, 0, 700, 700);\n // canvas.contextTop.fillStyle = 'green';\n // Object.keys(coords).forEach(function(key) {\n // var control = coords[key];\n // canvas.contextTop.fillRect(control.x, control.y, 3, 3);\n // });\n // }, 50);\n return coords;\n },\n\n calcACoords: function() {\n var rotateMatrix = this._calcRotateMatrix(),\n translateMatrix = this._calcTranslateMatrix(),\n finalMatrix = multiplyMatrices(translateMatrix, rotateMatrix),\n dim = this._getTransformedDimensions(),\n w = dim.x / 2, h = dim.y / 2;\n return {\n // corners\n tl: transformPoint({ x: -w, y: -h }, finalMatrix),\n tr: transformPoint({ x: w, y: -h }, finalMatrix),\n bl: transformPoint({ x: -w, y: h }, finalMatrix),\n br: transformPoint({ x: w, y: h }, finalMatrix)\n };\n },\n\n /**\n * Sets corner and controls position coordinates based on current angle, width and height, left and top.\n * oCoords are used to find the corners\n * aCoords are used to quickly find an object on the canvas\n * lineCoords are used to quickly find object during pointer events.\n * See {@link https://github.com/fabricjs/fabric.js/wiki/When-to-call-setCoords} and {@link http://fabricjs.com/fabric-gotchas}\n *\n * @param {Boolean} [skipCorners] skip calculation of oCoords.\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setCoords: function(skipCorners) {\n this.aCoords = this.calcACoords();\n // in case we are in a group, for how the inner group target check works,\n // lineCoords are exactly aCoords. Since the vpt gets absorbed by the normalized pointer.\n this.lineCoords = this.group ? this.aCoords : this.calcLineCoords();\n if (skipCorners) {\n return this;\n }\n // set coordinates of the draggable boxes in the corners used to scale/rotate the image\n this.oCoords = this.calcOCoords();\n this._setCornerCoords && this._setCornerCoords();\n return this;\n },\n\n /**\n * calculate rotation matrix of an object\n * @return {Array} rotation matrix for the object\n */\n _calcRotateMatrix: function() {\n return util.calcRotateMatrix(this);\n },\n\n /**\n * calculate the translation matrix for an object transform\n * @return {Array} rotation matrix for the object\n */\n _calcTranslateMatrix: function() {\n var center = this.getCenterPoint();\n return [1, 0, 0, 1, center.x, center.y];\n },\n\n transformMatrixKey: function(skipGroup) {\n var sep = '_', prefix = '';\n if (!skipGroup && this.group) {\n prefix = this.group.transformMatrixKey(skipGroup) + sep;\n };\n return prefix + this.top + sep + this.left + sep + this.scaleX + sep + this.scaleY +\n sep + this.skewX + sep + this.skewY + sep + this.angle + sep + this.originX + sep + this.originY +\n sep + this.width + sep + this.height + sep + this.strokeWidth + this.flipX + this.flipY;\n },\n\n /**\n * calculate transform matrix that represents the current transformations from the\n * object's properties.\n * @param {Boolean} [skipGroup] return transform matrix for object not counting parent transformations\n * There are some situation in which this is useful to avoid the fake rotation.\n * @return {Array} transform matrix for the object\n */\n calcTransformMatrix: function(skipGroup) {\n var matrix = this.calcOwnMatrix();\n if (skipGroup || !this.group) {\n return matrix;\n }\n var key = this.transformMatrixKey(skipGroup), cache = this.matrixCache || (this.matrixCache = {});\n if (cache.key === key) {\n return cache.value;\n }\n if (this.group) {\n matrix = multiplyMatrices(this.group.calcTransformMatrix(false), matrix);\n }\n cache.key = key;\n cache.value = matrix;\n return matrix;\n },\n\n /**\n * calculate transform matrix that represents the current transformations from the\n * object's properties, this matrix does not include the group transformation\n * @return {Array} transform matrix for the object\n */\n calcOwnMatrix: function() {\n var key = this.transformMatrixKey(true), cache = this.ownMatrixCache || (this.ownMatrixCache = {});\n if (cache.key === key) {\n return cache.value;\n }\n var tMatrix = this._calcTranslateMatrix(),\n options = {\n angle: this.angle,\n translateX: tMatrix[4],\n translateY: tMatrix[5],\n scaleX: this.scaleX,\n scaleY: this.scaleY,\n skewX: this.skewX,\n skewY: this.skewY,\n flipX: this.flipX,\n flipY: this.flipY,\n };\n cache.key = key;\n cache.value = util.composeMatrix(options);\n return cache.value;\n },\n\n /*\n * Calculate object dimensions from its properties\n * @private\n * @return {Object} .x width dimension\n * @return {Object} .y height dimension\n */\n _getNonTransformedDimensions: function() {\n var strokeWidth = this.strokeWidth,\n w = this.width + strokeWidth,\n h = this.height + strokeWidth;\n return { x: w, y: h };\n },\n\n /*\n * Calculate object bounding box dimensions from its properties scale, skew.\n * @param {Number} skewX, a value to override current skewX\n * @param {Number} skewY, a value to override current skewY\n * @private\n * @return {Object} .x width dimension\n * @return {Object} .y height dimension\n */\n _getTransformedDimensions: function(skewX, skewY) {\n if (typeof skewX === 'undefined') {\n skewX = this.skewX;\n }\n if (typeof skewY === 'undefined') {\n skewY = this.skewY;\n }\n var dimensions, dimX, dimY,\n noSkew = skewX === 0 && skewY === 0;\n\n if (this.strokeUniform) {\n dimX = this.width;\n dimY = this.height;\n }\n else {\n dimensions = this._getNonTransformedDimensions();\n dimX = dimensions.x;\n dimY = dimensions.y;\n }\n if (noSkew) {\n return this._finalizeDimensions(dimX * this.scaleX, dimY * this.scaleY);\n }\n var bbox = util.sizeAfterTransform(dimX, dimY, {\n scaleX: this.scaleX,\n scaleY: this.scaleY,\n skewX: skewX,\n skewY: skewY,\n });\n return this._finalizeDimensions(bbox.x, bbox.y);\n },\n\n /*\n * Calculate object bounding box dimensions from its properties scale, skew.\n * @param Number width width of the bbox\n * @param Number height height of the bbox\n * @private\n * @return {Object} .x finalized width dimension\n * @return {Object} .y finalized height dimension\n */\n _finalizeDimensions: function(width, height) {\n return this.strokeUniform ?\n { x: width + this.strokeWidth, y: height + this.strokeWidth }\n :\n { x: width, y: height };\n },\n\n /*\n * Calculate object dimensions for controls box, including padding and canvas zoom.\n * and active selection\n * private\n */\n _calculateCurrentDimensions: function() {\n var vpt = this.getViewportTransform(),\n dim = this._getTransformedDimensions(),\n p = transformPoint(dim, vpt, true);\n return p.scalarAdd(2 * this.padding);\n },\n });\n})();\n\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Moves an object to the bottom of the stack of drawn objects\n * @return {fabric.Object} thisArg\n * @chainable\n */\n sendToBack: function() {\n if (this.group) {\n fabric.StaticCanvas.prototype.sendToBack.call(this.group, this);\n }\n else if (this.canvas) {\n this.canvas.sendToBack(this);\n }\n return this;\n },\n\n /**\n * Moves an object to the top of the stack of drawn objects\n * @return {fabric.Object} thisArg\n * @chainable\n */\n bringToFront: function() {\n if (this.group) {\n fabric.StaticCanvas.prototype.bringToFront.call(this.group, this);\n }\n else if (this.canvas) {\n this.canvas.bringToFront(this);\n }\n return this;\n },\n\n /**\n * Moves an object down in stack of drawn objects\n * @param {Boolean} [intersecting] If `true`, send object behind next lower intersecting object\n * @return {fabric.Object} thisArg\n * @chainable\n */\n sendBackwards: function(intersecting) {\n if (this.group) {\n fabric.StaticCanvas.prototype.sendBackwards.call(this.group, this, intersecting);\n }\n else if (this.canvas) {\n this.canvas.sendBackwards(this, intersecting);\n }\n return this;\n },\n\n /**\n * Moves an object up in stack of drawn objects\n * @param {Boolean} [intersecting] If `true`, send object in front of next upper intersecting object\n * @return {fabric.Object} thisArg\n * @chainable\n */\n bringForward: function(intersecting) {\n if (this.group) {\n fabric.StaticCanvas.prototype.bringForward.call(this.group, this, intersecting);\n }\n else if (this.canvas) {\n this.canvas.bringForward(this, intersecting);\n }\n return this;\n },\n\n /**\n * Moves an object to specified level in stack of drawn objects\n * @param {Number} index New position of object\n * @return {fabric.Object} thisArg\n * @chainable\n */\n moveTo: function(index) {\n if (this.group && this.group.type !== 'activeSelection') {\n fabric.StaticCanvas.prototype.moveTo.call(this.group, this, index);\n }\n else if (this.canvas) {\n this.canvas.moveTo(this, index);\n }\n return this;\n }\n});\n\n\n/* _TO_SVG_START_ */\n(function() {\n function getSvgColorString(prop, value) {\n if (!value) {\n return prop + ': none; ';\n }\n else if (value.toLive) {\n return prop + ': url(#SVGID_' + value.id + '); ';\n }\n else {\n var color = new fabric.Color(value),\n str = prop + ': ' + color.toRgb() + '; ',\n opacity = color.getAlpha();\n if (opacity !== 1) {\n //change the color in rgb + opacity\n str += prop + '-opacity: ' + opacity.toString() + '; ';\n }\n return str;\n }\n }\n\n var toFixed = fabric.util.toFixed;\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n /**\n * Returns styles-string for svg-export\n * @param {Boolean} skipShadow a boolean to skip shadow filter output\n * @return {String}\n */\n getSvgStyles: function(skipShadow) {\n\n var fillRule = this.fillRule ? this.fillRule : 'nonzero',\n strokeWidth = this.strokeWidth ? this.strokeWidth : '0',\n strokeDashArray = this.strokeDashArray ? this.strokeDashArray.join(' ') : 'none',\n strokeDashOffset = this.strokeDashOffset ? this.strokeDashOffset : '0',\n strokeLineCap = this.strokeLineCap ? this.strokeLineCap : 'butt',\n strokeLineJoin = this.strokeLineJoin ? this.strokeLineJoin : 'miter',\n strokeMiterLimit = this.strokeMiterLimit ? this.strokeMiterLimit : '4',\n opacity = typeof this.opacity !== 'undefined' ? this.opacity : '1',\n visibility = this.visible ? '' : ' visibility: hidden;',\n filter = skipShadow ? '' : this.getSvgFilter(),\n fill = getSvgColorString('fill', this.fill),\n stroke = getSvgColorString('stroke', this.stroke);\n\n return [\n stroke,\n 'stroke-width: ', strokeWidth, '; ',\n 'stroke-dasharray: ', strokeDashArray, '; ',\n 'stroke-linecap: ', strokeLineCap, '; ',\n 'stroke-dashoffset: ', strokeDashOffset, '; ',\n 'stroke-linejoin: ', strokeLineJoin, '; ',\n 'stroke-miterlimit: ', strokeMiterLimit, '; ',\n fill,\n 'fill-rule: ', fillRule, '; ',\n 'opacity: ', opacity, ';',\n filter,\n visibility\n ].join('');\n },\n\n /**\n * Returns styles-string for svg-export\n * @param {Object} style the object from which to retrieve style properties\n * @param {Boolean} useWhiteSpace a boolean to include an additional attribute in the style.\n * @return {String}\n */\n getSvgSpanStyles: function(style, useWhiteSpace) {\n var term = '; ';\n var fontFamily = style.fontFamily ?\n 'font-family: ' + (((style.fontFamily.indexOf('\\'') === -1 && style.fontFamily.indexOf('\"') === -1) ?\n '\\'' + style.fontFamily + '\\'' : style.fontFamily)) + term : '';\n var strokeWidth = style.strokeWidth ? 'stroke-width: ' + style.strokeWidth + term : '',\n fontFamily = fontFamily,\n fontSize = style.fontSize ? 'font-size: ' + style.fontSize + 'px' + term : '',\n fontStyle = style.fontStyle ? 'font-style: ' + style.fontStyle + term : '',\n fontWeight = style.fontWeight ? 'font-weight: ' + style.fontWeight + term : '',\n fill = style.fill ? getSvgColorString('fill', style.fill) : '',\n stroke = style.stroke ? getSvgColorString('stroke', style.stroke) : '',\n textDecoration = this.getSvgTextDecoration(style),\n deltaY = style.deltaY ? 'baseline-shift: ' + (-style.deltaY) + '; ' : '';\n if (textDecoration) {\n textDecoration = 'text-decoration: ' + textDecoration + term;\n }\n\n return [\n stroke,\n strokeWidth,\n fontFamily,\n fontSize,\n fontStyle,\n fontWeight,\n textDecoration,\n fill,\n deltaY,\n useWhiteSpace ? 'white-space: pre; ' : ''\n ].join('');\n },\n\n /**\n * Returns text-decoration property for svg-export\n * @param {Object} style the object from which to retrieve style properties\n * @return {String}\n */\n getSvgTextDecoration: function(style) {\n return ['overline', 'underline', 'line-through'].filter(function(decoration) {\n return style[decoration.replace('-', '')];\n }).join(' ');\n },\n\n /**\n * Returns filter for svg shadow\n * @return {String}\n */\n getSvgFilter: function() {\n return this.shadow ? 'filter: url(#SVGID_' + this.shadow.id + ');' : '';\n },\n\n /**\n * Returns id attribute for svg output\n * @return {String}\n */\n getSvgCommons: function() {\n return [\n this.id ? 'id=\"' + this.id + '\" ' : '',\n this.clipPath ? 'clip-path=\"url(#' + this.clipPath.clipPathId + ')\" ' : '',\n ].join('');\n },\n\n /**\n * Returns transform-string for svg-export\n * @param {Boolean} use the full transform or the single object one.\n * @return {String}\n */\n getSvgTransform: function(full, additionalTransform) {\n var transform = full ? this.calcTransformMatrix() : this.calcOwnMatrix(),\n svgTransform = 'transform=\"' + fabric.util.matrixToSVG(transform);\n return svgTransform +\n (additionalTransform || '') + '\" ';\n },\n\n _setSVGBg: function(textBgRects) {\n if (this.backgroundColor) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n textBgRects.push(\n '\\t\\t\\n');\n }\n },\n\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n return this._createBaseSVGMarkup(this._toSVG(reviver), { reviver: reviver });\n },\n\n /**\n * Returns svg clipPath representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toClipPathSVG: function(reviver) {\n return '\\t' + this._createBaseClipPathSVGMarkup(this._toSVG(reviver), { reviver: reviver });\n },\n\n /**\n * @private\n */\n _createBaseClipPathSVGMarkup: function(objectMarkup, options) {\n options = options || {};\n var reviver = options.reviver,\n additionalTransform = options.additionalTransform || '',\n commonPieces = [\n this.getSvgTransform(true, additionalTransform),\n this.getSvgCommons(),\n ].join(''),\n // insert commons in the markup, style and svgCommons\n index = objectMarkup.indexOf('COMMON_PARTS');\n objectMarkup[index] = commonPieces;\n return reviver ? reviver(objectMarkup.join('')) : objectMarkup.join('');\n },\n\n /**\n * @private\n */\n _createBaseSVGMarkup: function(objectMarkup, options) {\n options = options || {};\n var noStyle = options.noStyle,\n reviver = options.reviver,\n styleInfo = noStyle ? '' : 'style=\"' + this.getSvgStyles() + '\" ',\n shadowInfo = options.withShadow ? 'style=\"' + this.getSvgFilter() + '\" ' : '',\n clipPath = this.clipPath,\n vectorEffect = this.strokeUniform ? 'vector-effect=\"non-scaling-stroke\" ' : '',\n absoluteClipPath = clipPath && clipPath.absolutePositioned,\n stroke = this.stroke, fill = this.fill, shadow = this.shadow,\n commonPieces, markup = [], clipPathMarkup,\n // insert commons in the markup, style and svgCommons\n index = objectMarkup.indexOf('COMMON_PARTS'),\n additionalTransform = options.additionalTransform;\n if (clipPath) {\n clipPath.clipPathId = 'CLIPPATH_' + fabric.Object.__uid++;\n clipPathMarkup = '\\n' +\n clipPath.toClipPathSVG(reviver) +\n '\\n';\n }\n if (absoluteClipPath) {\n markup.push(\n '\\n'\n );\n }\n markup.push(\n '\\n'\n );\n commonPieces = [\n styleInfo,\n vectorEffect,\n noStyle ? '' : this.addPaintOrder(), ' ',\n additionalTransform ? 'transform=\"' + additionalTransform + '\" ' : '',\n ].join('');\n objectMarkup[index] = commonPieces;\n if (fill && fill.toLive) {\n markup.push(fill.toSVG(this));\n }\n if (stroke && stroke.toLive) {\n markup.push(stroke.toSVG(this));\n }\n if (shadow) {\n markup.push(shadow.toSVG(this));\n }\n if (clipPath) {\n markup.push(clipPathMarkup);\n }\n markup.push(objectMarkup.join(''));\n markup.push('\\n');\n absoluteClipPath && markup.push('\\n');\n return reviver ? reviver(markup.join('')) : markup.join('');\n },\n\n addPaintOrder: function() {\n return this.paintFirst !== 'fill' ? ' paint-order=\"' + this.paintFirst + '\" ' : '';\n }\n });\n})();\n/* _TO_SVG_END_ */\n\n\n(function() {\n\n var extend = fabric.util.object.extend,\n originalSet = 'stateProperties';\n\n /*\n Depends on `stateProperties`\n */\n function saveProps(origin, destination, props) {\n var tmpObj = { }, deep = true;\n props.forEach(function(prop) {\n tmpObj[prop] = origin[prop];\n });\n\n extend(origin[destination], tmpObj, deep);\n }\n\n function _isEqual(origValue, currentValue, firstPass) {\n if (origValue === currentValue) {\n // if the objects are identical, return\n return true;\n }\n else if (Array.isArray(origValue)) {\n if (!Array.isArray(currentValue) || origValue.length !== currentValue.length) {\n return false;\n }\n for (var i = 0, len = origValue.length; i < len; i++) {\n if (!_isEqual(origValue[i], currentValue[i])) {\n return false;\n }\n }\n return true;\n }\n else if (origValue && typeof origValue === 'object') {\n var keys = Object.keys(origValue), key;\n if (!currentValue ||\n typeof currentValue !== 'object' ||\n (!firstPass && keys.length !== Object.keys(currentValue).length)\n ) {\n return false;\n }\n for (var i = 0, len = keys.length; i < len; i++) {\n key = keys[i];\n // since clipPath is in the statefull cache list and the clipPath objects\n // would be iterated as an object, this would lead to possible infinite recursion\n // we do not want to compare those.\n if (key === 'canvas' || key === 'group') {\n continue;\n }\n if (!_isEqual(origValue[key], currentValue[key])) {\n return false;\n }\n }\n return true;\n }\n }\n\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * Returns true if object state (one of its state properties) was changed\n * @param {String} [propertySet] optional name for the set of property we want to save\n * @return {Boolean} true if instance' state has changed since `{@link fabric.Object#saveState}` was called\n */\n hasStateChanged: function(propertySet) {\n propertySet = propertySet || originalSet;\n var dashedPropertySet = '_' + propertySet;\n if (Object.keys(this[dashedPropertySet]).length < this[propertySet].length) {\n return true;\n }\n return !_isEqual(this[dashedPropertySet], this, true);\n },\n\n /**\n * Saves state of an object\n * @param {Object} [options] Object with additional `stateProperties` array to include when saving state\n * @return {fabric.Object} thisArg\n */\n saveState: function(options) {\n var propertySet = options && options.propertySet || originalSet,\n destination = '_' + propertySet;\n if (!this[destination]) {\n return this.setupState(options);\n }\n saveProps(this, destination, this[propertySet]);\n if (options && options.stateProperties) {\n saveProps(this, destination, options.stateProperties);\n }\n return this;\n },\n\n /**\n * Setups state of an object\n * @param {Object} [options] Object with additional `stateProperties` array to include when saving state\n * @return {fabric.Object} thisArg\n */\n setupState: function(options) {\n options = options || { };\n var propertySet = options.propertySet || originalSet;\n options.propertySet = propertySet;\n this['_' + propertySet] = { };\n this.saveState(options);\n return this;\n }\n });\n})();\n\n\n(function() {\n\n var degreesToRadians = fabric.util.degreesToRadians;\n\n fabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n /**\n * Determines which corner has been clicked\n * @private\n * @param {Object} pointer The pointer indicating the mouse position\n * @return {String|Boolean} corner code (tl, tr, bl, br, etc.), or false if nothing is found\n */\n _findTargetCorner: function(pointer, forTouch) {\n // objects in group, anykind, are not self modificable,\n // must not return an hovered corner.\n if (!this.hasControls || this.group || (!this.canvas || this.canvas._activeObject !== this)) {\n return false;\n }\n\n var ex = pointer.x,\n ey = pointer.y,\n xPoints,\n lines, keys = Object.keys(this.oCoords),\n j = keys.length - 1, i;\n this.__corner = 0;\n\n // cycle in reverse order so we pick first the one on top\n for (; j >= 0; j--) {\n i = keys[j];\n if (!this.isControlVisible(i)) {\n continue;\n }\n\n lines = this._getImageLines(forTouch ? this.oCoords[i].touchCorner : this.oCoords[i].corner);\n // // debugging\n //\n // this.canvas.contextTop.fillRect(lines.bottomline.d.x, lines.bottomline.d.y, 2, 2);\n // this.canvas.contextTop.fillRect(lines.bottomline.o.x, lines.bottomline.o.y, 2, 2);\n //\n // this.canvas.contextTop.fillRect(lines.leftline.d.x, lines.leftline.d.y, 2, 2);\n // this.canvas.contextTop.fillRect(lines.leftline.o.x, lines.leftline.o.y, 2, 2);\n //\n // this.canvas.contextTop.fillRect(lines.topline.d.x, lines.topline.d.y, 2, 2);\n // this.canvas.contextTop.fillRect(lines.topline.o.x, lines.topline.o.y, 2, 2);\n //\n // this.canvas.contextTop.fillRect(lines.rightline.d.x, lines.rightline.d.y, 2, 2);\n // this.canvas.contextTop.fillRect(lines.rightline.o.x, lines.rightline.o.y, 2, 2);\n\n xPoints = this._findCrossPoints({ x: ex, y: ey }, lines);\n if (xPoints !== 0 && xPoints % 2 === 1) {\n this.__corner = i;\n return i;\n }\n }\n return false;\n },\n\n /**\n * Calls a function for each control. The function gets called,\n * with the control, the object that is calling the iterator and the control's key\n * @param {Function} fn function to iterate over the controls over\n */\n forEachControl: function(fn) {\n for (var i in this.controls) {\n fn(this.controls[i], i, this);\n };\n },\n\n /**\n * Sets the coordinates of the draggable boxes in the corners of\n * the image used to scale/rotate it.\n * note: if we would switch to ROUND corner area, all of this would disappear.\n * everything would resolve to a single point and a pythagorean theorem for the distance\n * @private\n */\n _setCornerCoords: function() {\n var coords = this.oCoords;\n\n for (var control in coords) {\n var controlObject = this.controls[control];\n coords[control].corner = controlObject.calcCornerCoords(\n this.angle, this.cornerSize, coords[control].x, coords[control].y, false);\n coords[control].touchCorner = controlObject.calcCornerCoords(\n this.angle, this.touchCornerSize, coords[control].x, coords[control].y, true);\n }\n },\n\n /**\n * Draws a colored layer behind the object, inside its selection borders.\n * Requires public options: padding, selectionBackgroundColor\n * this function is called when the context is transformed\n * has checks to be skipped when the object is on a staticCanvas\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawSelectionBackground: function(ctx) {\n if (!this.selectionBackgroundColor ||\n (this.canvas && !this.canvas.interactive) ||\n (this.canvas && this.canvas._activeObject !== this)\n ) {\n return this;\n }\n ctx.save();\n var center = this.getCenterPoint(), wh = this._calculateCurrentDimensions(),\n vpt = this.canvas.viewportTransform;\n ctx.translate(center.x, center.y);\n ctx.scale(1 / vpt[0], 1 / vpt[3]);\n ctx.rotate(degreesToRadians(this.angle));\n ctx.fillStyle = this.selectionBackgroundColor;\n ctx.fillRect(-wh.x / 2, -wh.y / 2, wh.x, wh.y);\n ctx.restore();\n return this;\n },\n\n /**\n * Draws borders of an object's bounding box.\n * Requires public properties: width, height\n * Requires public options: padding, borderColor\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @param {Object} styleOverride object to override the object style\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawBorders: function(ctx, styleOverride) {\n styleOverride = styleOverride || {};\n var wh = this._calculateCurrentDimensions(),\n strokeWidth = this.borderScaleFactor,\n width = wh.x + strokeWidth,\n height = wh.y + strokeWidth,\n hasControls = typeof styleOverride.hasControls !== 'undefined' ?\n styleOverride.hasControls : this.hasControls,\n shouldStroke = false;\n\n ctx.save();\n ctx.strokeStyle = styleOverride.borderColor || this.borderColor;\n this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray);\n\n ctx.strokeRect(\n -width / 2,\n -height / 2,\n width,\n height\n );\n\n if (hasControls) {\n ctx.beginPath();\n this.forEachControl(function(control, key, fabricObject) {\n // in this moment, the ctx is centered on the object.\n // width and height of the above function are the size of the bbox.\n if (control.withConnection && control.getVisibility(fabricObject, key)) {\n // reset movement for each control\n shouldStroke = true;\n ctx.moveTo(control.x * width, control.y * height);\n ctx.lineTo(\n control.x * width + control.offsetX,\n control.y * height + control.offsetY\n );\n }\n });\n if (shouldStroke) {\n ctx.stroke();\n }\n }\n ctx.restore();\n return this;\n },\n\n /**\n * Draws borders of an object's bounding box when it is inside a group.\n * Requires public properties: width, height\n * Requires public options: padding, borderColor\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @param {object} options object representing current object parameters\n * @param {Object} styleOverride object to override the object style\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawBordersInGroup: function(ctx, options, styleOverride) {\n styleOverride = styleOverride || {};\n var bbox = fabric.util.sizeAfterTransform(this.width, this.height, options),\n strokeWidth = this.strokeWidth,\n strokeUniform = this.strokeUniform,\n borderScaleFactor = this.borderScaleFactor,\n width =\n bbox.x + strokeWidth * (strokeUniform ? this.canvas.getZoom() : options.scaleX) + borderScaleFactor,\n height =\n bbox.y + strokeWidth * (strokeUniform ? this.canvas.getZoom() : options.scaleY) + borderScaleFactor;\n ctx.save();\n this._setLineDash(ctx, styleOverride.borderDashArray || this.borderDashArray);\n ctx.strokeStyle = styleOverride.borderColor || this.borderColor;\n ctx.strokeRect(\n -width / 2,\n -height / 2,\n width,\n height\n );\n\n ctx.restore();\n return this;\n },\n\n /**\n * Draws corners of an object's bounding box.\n * Requires public properties: width, height\n * Requires public options: cornerSize, padding\n * @param {CanvasRenderingContext2D} ctx Context to draw on\n * @param {Object} styleOverride object to override the object style\n * @return {fabric.Object} thisArg\n * @chainable\n */\n drawControls: function(ctx, styleOverride) {\n styleOverride = styleOverride || {};\n ctx.save();\n var retinaScaling = this.canvas.getRetinaScaling(), matrix, p;\n ctx.setTransform(retinaScaling, 0, 0, retinaScaling, 0, 0);\n ctx.strokeStyle = ctx.fillStyle = styleOverride.cornerColor || this.cornerColor;\n if (!this.transparentCorners) {\n ctx.strokeStyle = styleOverride.cornerStrokeColor || this.cornerStrokeColor;\n }\n this._setLineDash(ctx, styleOverride.cornerDashArray || this.cornerDashArray);\n this.setCoords();\n if (this.group) {\n // fabricJS does not really support drawing controls inside groups,\n // this piece of code here helps having at least the control in places.\n // If an application needs to show some objects as selected because of some UI state\n // can still call Object._renderControls() on any object they desire, independently of groups.\n // using no padding, circular controls and hiding the rotating cursor is higly suggested,\n matrix = this.group.calcTransformMatrix();\n }\n this.forEachControl(function(control, key, fabricObject) {\n p = fabricObject.oCoords[key];\n if (control.getVisibility(fabricObject, key)) {\n if (matrix) {\n p = fabric.util.transformPoint(p, matrix);\n }\n control.render(ctx, p.x, p.y, styleOverride, fabricObject);\n }\n });\n ctx.restore();\n\n return this;\n },\n\n /**\n * Returns true if the specified control is visible, false otherwise.\n * @param {String} controlKey The key of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'.\n * @returns {Boolean} true if the specified control is visible, false otherwise\n */\n isControlVisible: function(controlKey) {\n return this.controls[controlKey] && this.controls[controlKey].getVisibility(this, controlKey);\n },\n\n /**\n * Sets the visibility of the specified control.\n * @param {String} controlKey The key of the control. Possible values are 'tl', 'tr', 'br', 'bl', 'ml', 'mt', 'mr', 'mb', 'mtr'.\n * @param {Boolean} visible true to set the specified control visible, false otherwise\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setControlVisible: function(controlKey, visible) {\n if (!this._controlsVisibility) {\n this._controlsVisibility = {};\n }\n this._controlsVisibility[controlKey] = visible;\n return this;\n },\n\n /**\n * Sets the visibility state of object controls.\n * @param {Object} [options] Options object\n * @param {Boolean} [options.bl] true to enable the bottom-left control, false to disable it\n * @param {Boolean} [options.br] true to enable the bottom-right control, false to disable it\n * @param {Boolean} [options.mb] true to enable the middle-bottom control, false to disable it\n * @param {Boolean} [options.ml] true to enable the middle-left control, false to disable it\n * @param {Boolean} [options.mr] true to enable the middle-right control, false to disable it\n * @param {Boolean} [options.mt] true to enable the middle-top control, false to disable it\n * @param {Boolean} [options.tl] true to enable the top-left control, false to disable it\n * @param {Boolean} [options.tr] true to enable the top-right control, false to disable it\n * @param {Boolean} [options.mtr] true to enable the middle-top-rotate control, false to disable it\n * @return {fabric.Object} thisArg\n * @chainable\n */\n setControlsVisibility: function(options) {\n options || (options = { });\n\n for (var p in options) {\n this.setControlVisible(p, options[p]);\n }\n return this;\n },\n\n\n /**\n * This callback function is called every time _discardActiveObject or _setActiveObject\n * try to to deselect this object. If the function returns true, the process is cancelled\n * @param {Object} [options] options sent from the upper functions\n * @param {Event} [options.e] event if the process is generated by an event\n */\n onDeselect: function() {\n // implemented by sub-classes, as needed.\n },\n\n\n /**\n * This callback function is called every time _discardActiveObject or _setActiveObject\n * try to to select this object. If the function returns true, the process is cancelled\n * @param {Object} [options] options sent from the upper functions\n * @param {Event} [options.e] event if the process is generated by an event\n */\n onSelect: function() {\n // implemented by sub-classes, as needed.\n }\n });\n})();\n\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Animation duration (in ms) for fx* methods\n * @type Number\n * @default\n */\n FX_DURATION: 500,\n\n /**\n * Centers object horizontally with animation.\n * @param {fabric.Object} object Object to center\n * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.AnimationContext} context\n */\n fxCenterObjectH: function (object, callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n return fabric.util.animate({\n target: this,\n startValue: object.left,\n endValue: this.getCenterPoint().x,\n duration: this.FX_DURATION,\n onChange: function(value) {\n object.set('left', value);\n _this.requestRenderAll();\n onChange();\n },\n onComplete: function() {\n object.setCoords();\n onComplete();\n }\n });\n },\n\n /**\n * Centers object vertically with animation.\n * @param {fabric.Object} object Object to center\n * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.AnimationContext} context\n */\n fxCenterObjectV: function (object, callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n return fabric.util.animate({\n target: this,\n startValue: object.top,\n endValue: this.getCenterPoint().y,\n duration: this.FX_DURATION,\n onChange: function(value) {\n object.set('top', value);\n _this.requestRenderAll();\n onChange();\n },\n onComplete: function() {\n object.setCoords();\n onComplete();\n }\n });\n },\n\n /**\n * Same as `fabric.Canvas#remove` but animated\n * @param {fabric.Object} object Object to remove\n * @param {Object} [callbacks] Callbacks object with optional \"onComplete\" and/or \"onChange\" properties\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.AnimationContext} context\n */\n fxRemove: function (object, callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n return fabric.util.animate({\n target: this,\n startValue: object.opacity,\n endValue: 0,\n duration: this.FX_DURATION,\n onChange: function(value) {\n object.set('opacity', value);\n _this.requestRenderAll();\n onChange();\n },\n onComplete: function () {\n _this.remove(object);\n onComplete();\n }\n });\n }\n});\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n /**\n * Animates object's properties\n * @param {String|Object} property Property to animate (if string) or properties to animate (if object)\n * @param {Number|Object} value Value to animate property to (if string was given first) or options object\n * @return {fabric.Object} thisArg\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#animation}\n * @return {fabric.AnimationContext | fabric.AnimationContext[]} animation context (or an array if passed multiple properties)\n *\n * As object — multiple properties\n *\n * object.animate({ left: ..., top: ... });\n * object.animate({ left: ..., top: ... }, { duration: ... });\n *\n * As string — one property\n *\n * object.animate('left', ...);\n * object.animate('left', { duration: ... });\n *\n */\n animate: function () {\n if (arguments[0] && typeof arguments[0] === 'object') {\n var propsToAnimate = [], prop, skipCallbacks, out = [];\n for (prop in arguments[0]) {\n propsToAnimate.push(prop);\n }\n for (var i = 0, len = propsToAnimate.length; i < len; i++) {\n prop = propsToAnimate[i];\n skipCallbacks = i !== len - 1;\n out.push(this._animate(prop, arguments[0][prop], arguments[1], skipCallbacks));\n }\n return out;\n }\n else {\n return this._animate.apply(this, arguments);\n }\n },\n\n /**\n * @private\n * @param {String} property Property to animate\n * @param {String} to Value to animate to\n * @param {Object} [options] Options object\n * @param {Boolean} [skipCallbacks] When true, callbacks like onchange and oncomplete are not invoked\n */\n _animate: function(property, to, options, skipCallbacks) {\n var _this = this, propPair;\n\n to = to.toString();\n\n if (!options) {\n options = { };\n }\n else {\n options = fabric.util.object.clone(options);\n }\n\n if (~property.indexOf('.')) {\n propPair = property.split('.');\n }\n\n var propIsColor =\n _this.colorProperties.indexOf(property) > -1 ||\n (propPair && _this.colorProperties.indexOf(propPair[1]) > -1);\n\n var currentValue = propPair\n ? this.get(propPair[0])[propPair[1]]\n : this.get(property);\n\n if (!('from' in options)) {\n options.from = currentValue;\n }\n\n if (!propIsColor) {\n if (~to.indexOf('=')) {\n to = currentValue + parseFloat(to.replace('=', ''));\n }\n else {\n to = parseFloat(to);\n }\n }\n\n var _options = {\n target: this,\n startValue: options.from,\n endValue: to,\n byValue: options.by,\n easing: options.easing,\n duration: options.duration,\n abort: options.abort && function(value, valueProgress, timeProgress) {\n return options.abort.call(_this, value, valueProgress, timeProgress);\n },\n onChange: function (value, valueProgress, timeProgress) {\n if (propPair) {\n _this[propPair[0]][propPair[1]] = value;\n }\n else {\n _this.set(property, value);\n }\n if (skipCallbacks) {\n return;\n }\n options.onChange && options.onChange(value, valueProgress, timeProgress);\n },\n onComplete: function (value, valueProgress, timeProgress) {\n if (skipCallbacks) {\n return;\n }\n\n _this.setCoords();\n options.onComplete && options.onComplete(value, valueProgress, timeProgress);\n }\n };\n\n if (propIsColor) {\n return fabric.util.animateColor(_options.startValue, _options.endValue, _options.duration, _options);\n }\n else {\n return fabric.util.animate(_options);\n }\n }\n});\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n clone = fabric.util.object.clone,\n coordProps = { x1: 1, x2: 1, y1: 1, y2: 1 };\n\n if (fabric.Line) {\n fabric.warn('fabric.Line is already defined');\n return;\n }\n\n /**\n * Line class\n * @class fabric.Line\n * @extends fabric.Object\n * @see {@link fabric.Line#initialize} for constructor definition\n */\n fabric.Line = fabric.util.createClass(fabric.Object, /** @lends fabric.Line.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'line',\n\n /**\n * x value or first line edge\n * @type Number\n * @default\n */\n x1: 0,\n\n /**\n * y value or first line edge\n * @type Number\n * @default\n */\n y1: 0,\n\n /**\n * x value or second line edge\n * @type Number\n * @default\n */\n x2: 0,\n\n /**\n * y value or second line edge\n * @type Number\n * @default\n */\n y2: 0,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('x1', 'x2', 'y1', 'y2'),\n\n /**\n * Constructor\n * @param {Array} [points] Array of points\n * @param {Object} [options] Options object\n * @return {fabric.Line} thisArg\n */\n initialize: function(points, options) {\n if (!points) {\n points = [0, 0, 0, 0];\n }\n\n this.callSuper('initialize', options);\n\n this.set('x1', points[0]);\n this.set('y1', points[1]);\n this.set('x2', points[2]);\n this.set('y2', points[3]);\n\n this._setWidthHeight(options);\n },\n\n /**\n * @private\n * @param {Object} [options] Options\n */\n _setWidthHeight: function(options) {\n options || (options = { });\n\n this.width = Math.abs(this.x2 - this.x1);\n this.height = Math.abs(this.y2 - this.y1);\n\n this.left = 'left' in options\n ? options.left\n : this._getLeftToOriginX();\n\n this.top = 'top' in options\n ? options.top\n : this._getTopToOriginY();\n },\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n */\n _set: function(key, value) {\n this.callSuper('_set', key, value);\n if (typeof coordProps[key] !== 'undefined') {\n this._setWidthHeight();\n }\n return this;\n },\n\n /**\n * @private\n * @return {Number} leftToOriginX Distance from left edge of canvas to originX of Line.\n */\n _getLeftToOriginX: makeEdgeToOriginGetter(\n { // property names\n origin: 'originX',\n axis1: 'x1',\n axis2: 'x2',\n dimension: 'width'\n },\n { // possible values of origin\n nearest: 'left',\n center: 'center',\n farthest: 'right'\n }\n ),\n\n /**\n * @private\n * @return {Number} topToOriginY Distance from top edge of canvas to originY of Line.\n */\n _getTopToOriginY: makeEdgeToOriginGetter(\n { // property names\n origin: 'originY',\n axis1: 'y1',\n axis2: 'y2',\n dimension: 'height'\n },\n { // possible values of origin\n nearest: 'top',\n center: 'center',\n farthest: 'bottom'\n }\n ),\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n ctx.beginPath();\n\n\n var p = this.calcLinePoints();\n ctx.moveTo(p.x1, p.y1);\n ctx.lineTo(p.x2, p.y2);\n\n ctx.lineWidth = this.strokeWidth;\n\n // TODO: test this\n // make sure setting \"fill\" changes color of a line\n // (by copying fillStyle to strokeStyle, since line is stroked, not filled)\n var origStrokeStyle = ctx.strokeStyle;\n ctx.strokeStyle = this.stroke || ctx.fillStyle;\n this.stroke && this._renderStroke(ctx);\n ctx.strokeStyle = origStrokeStyle;\n },\n\n /**\n * This function is an helper for svg import. it returns the center of the object in the svg\n * untransformed coordinates\n * @private\n * @return {Object} center point from element coordinates\n */\n _findCenterFromElement: function() {\n return {\n x: (this.x1 + this.x2) / 2,\n y: (this.y1 + this.y2) / 2,\n };\n },\n\n /**\n * Returns object representation of an instance\n * @method toObject\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return extend(this.callSuper('toObject', propertiesToInclude), this.calcLinePoints());\n },\n\n /*\n * Calculate object dimensions from its properties\n * @private\n */\n _getNonTransformedDimensions: function() {\n var dim = this.callSuper('_getNonTransformedDimensions');\n if (this.strokeLineCap === 'butt') {\n if (this.width === 0) {\n dim.y -= this.strokeWidth;\n }\n if (this.height === 0) {\n dim.x -= this.strokeWidth;\n }\n }\n return dim;\n },\n\n /**\n * Recalculates line points given width and height\n * @private\n */\n calcLinePoints: function() {\n var xMult = this.x1 <= this.x2 ? -1 : 1,\n yMult = this.y1 <= this.y2 ? -1 : 1,\n x1 = (xMult * this.width * 0.5),\n y1 = (yMult * this.height * 0.5),\n x2 = (xMult * this.width * -0.5),\n y2 = (yMult * this.height * -0.5);\n\n return {\n x1: x1,\n x2: x2,\n y1: y1,\n y2: y2\n };\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var p = this.calcLinePoints();\n return [\n '\\n'\n ];\n },\n /* _TO_SVG_END_ */\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Line.fromElement})\n * @static\n * @memberOf fabric.Line\n * @see http://www.w3.org/TR/SVG/shapes.html#LineElement\n */\n fabric.Line.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x1 y1 x2 y2'.split(' '));\n\n /**\n * Returns fabric.Line instance from an SVG element\n * @static\n * @memberOf fabric.Line\n * @param {SVGElement} element Element to parse\n * @param {Object} [options] Options object\n * @param {Function} [callback] callback function invoked after parsing\n */\n fabric.Line.fromElement = function(element, callback, options) {\n options = options || { };\n var parsedAttributes = fabric.parseAttributes(element, fabric.Line.ATTRIBUTE_NAMES),\n points = [\n parsedAttributes.x1 || 0,\n parsedAttributes.y1 || 0,\n parsedAttributes.x2 || 0,\n parsedAttributes.y2 || 0\n ];\n callback(new fabric.Line(points, extend(parsedAttributes, options)));\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Line instance from an object representation\n * @static\n * @memberOf fabric.Line\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n */\n fabric.Line.fromObject = function(object, callback) {\n function _callback(instance) {\n delete instance.points;\n callback && callback(instance);\n };\n var options = clone(object, true);\n options.points = [object.x1, object.y1, object.x2, object.y2];\n fabric.Object._fromObject('Line', options, _callback, 'points');\n };\n\n /**\n * Produces a function that calculates distance from canvas edge to Line origin.\n */\n function makeEdgeToOriginGetter(propertyNames, originValues) {\n var origin = propertyNames.origin,\n axis1 = propertyNames.axis1,\n axis2 = propertyNames.axis2,\n dimension = propertyNames.dimension,\n nearest = originValues.nearest,\n center = originValues.center,\n farthest = originValues.farthest;\n\n return function() {\n switch (this.get(origin)) {\n case nearest:\n return Math.min(this.get(axis1), this.get(axis2));\n case center:\n return Math.min(this.get(axis1), this.get(axis2)) + (0.5 * this.get(dimension));\n case farthest:\n return Math.max(this.get(axis1), this.get(axis2));\n }\n };\n\n }\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n degreesToRadians = fabric.util.degreesToRadians;\n\n if (fabric.Circle) {\n fabric.warn('fabric.Circle is already defined.');\n return;\n }\n\n /**\n * Circle class\n * @class fabric.Circle\n * @extends fabric.Object\n * @see {@link fabric.Circle#initialize} for constructor definition\n */\n fabric.Circle = fabric.util.createClass(fabric.Object, /** @lends fabric.Circle.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'circle',\n\n /**\n * Radius of this circle\n * @type Number\n * @default\n */\n radius: 0,\n\n /**\n * degrees of start of the circle.\n * probably will change to degrees in next major version\n * @type Number 0 - 359\n * @default 0\n */\n startAngle: 0,\n\n /**\n * End angle of the circle\n * probably will change to degrees in next major version\n * @type Number 1 - 360\n * @default 360\n */\n endAngle: 360,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('radius', 'startAngle', 'endAngle'),\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n * @return {fabric.Circle} thisArg\n */\n _set: function(key, value) {\n this.callSuper('_set', key, value);\n\n if (key === 'radius') {\n this.setRadius(value);\n }\n\n return this;\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['radius', 'startAngle', 'endAngle'].concat(propertiesToInclude));\n },\n\n /* _TO_SVG_START_ */\n\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var svgString, x = 0, y = 0,\n angle = (this.endAngle - this.startAngle) % 360;\n\n if (angle === 0) {\n svgString = [\n '\\n'\n ];\n }\n else {\n var start = degreesToRadians(this.startAngle),\n end = degreesToRadians(this.endAngle),\n radius = this.radius,\n startX = fabric.util.cos(start) * radius,\n startY = fabric.util.sin(start) * radius,\n endX = fabric.util.cos(end) * radius,\n endY = fabric.util.sin(end) * radius,\n largeFlag = angle > 180 ? '1' : '0';\n svgString = [\n '\\n'\n ];\n }\n return svgString;\n },\n /* _TO_SVG_END_ */\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render on\n */\n _render: function(ctx) {\n ctx.beginPath();\n ctx.arc(\n 0,\n 0,\n this.radius,\n degreesToRadians(this.startAngle),\n degreesToRadians(this.endAngle),\n false\n );\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * Returns horizontal radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRadiusX: function() {\n return this.get('radius') * this.get('scaleX');\n },\n\n /**\n * Returns vertical radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRadiusY: function() {\n return this.get('radius') * this.get('scaleY');\n },\n\n /**\n * Sets radius of an object (and updates width accordingly)\n * @return {fabric.Circle} thisArg\n */\n setRadius: function(value) {\n this.radius = value;\n return this.set('width', value * 2).set('height', value * 2);\n },\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Circle.fromElement})\n * @static\n * @memberOf fabric.Circle\n * @see: http://www.w3.org/TR/SVG/shapes.html#CircleElement\n */\n fabric.Circle.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy r'.split(' '));\n\n /**\n * Returns {@link fabric.Circle} instance from an SVG element\n * @static\n * @memberOf fabric.Circle\n * @param {SVGElement} element Element to parse\n * @param {Function} [callback] Options callback invoked after parsing is finished\n * @param {Object} [options] Options object\n * @throws {Error} If value of `r` attribute is missing or invalid\n */\n fabric.Circle.fromElement = function(element, callback) {\n var parsedAttributes = fabric.parseAttributes(element, fabric.Circle.ATTRIBUTE_NAMES);\n\n if (!isValidRadius(parsedAttributes)) {\n throw new Error('value of `r` attribute is required and can not be negative');\n }\n\n parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.radius;\n parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.radius;\n callback(new fabric.Circle(parsedAttributes));\n };\n\n /**\n * @private\n */\n function isValidRadius(attributes) {\n return (('radius' in attributes) && (attributes.radius >= 0));\n }\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Circle} instance from an object representation\n * @static\n * @memberOf fabric.Circle\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n * @return {void}\n */\n fabric.Circle.fromObject = function(object, callback) {\n fabric.Object._fromObject('Circle', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.Triangle) {\n fabric.warn('fabric.Triangle is already defined');\n return;\n }\n\n /**\n * Triangle class\n * @class fabric.Triangle\n * @extends fabric.Object\n * @return {fabric.Triangle} thisArg\n * @see {@link fabric.Triangle#initialize} for constructor definition\n */\n fabric.Triangle = fabric.util.createClass(fabric.Object, /** @lends fabric.Triangle.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'triangle',\n\n /**\n * Width is set to 100 to compensate the old initialize code that was setting it to 100\n * @type Number\n * @default\n */\n width: 100,\n\n /**\n * Height is set to 100 to compensate the old initialize code that was setting it to 100\n * @type Number\n * @default\n */\n height: 100,\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n var widthBy2 = this.width / 2,\n heightBy2 = this.height / 2;\n\n ctx.beginPath();\n ctx.moveTo(-widthBy2, heightBy2);\n ctx.lineTo(0, -heightBy2);\n ctx.lineTo(widthBy2, heightBy2);\n ctx.closePath();\n\n this._renderPaintInOrder(ctx);\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var widthBy2 = this.width / 2,\n heightBy2 = this.height / 2,\n points = [\n -widthBy2 + ' ' + heightBy2,\n '0 ' + -heightBy2,\n widthBy2 + ' ' + heightBy2\n ].join(',');\n return [\n ''\n ];\n },\n /* _TO_SVG_END_ */\n });\n\n /**\n * Returns {@link fabric.Triangle} instance from an object representation\n * @static\n * @memberOf fabric.Triangle\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n */\n fabric.Triangle.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Triangle', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n piBy2 = Math.PI * 2;\n\n if (fabric.Ellipse) {\n fabric.warn('fabric.Ellipse is already defined.');\n return;\n }\n\n /**\n * Ellipse class\n * @class fabric.Ellipse\n * @extends fabric.Object\n * @return {fabric.Ellipse} thisArg\n * @see {@link fabric.Ellipse#initialize} for constructor definition\n */\n fabric.Ellipse = fabric.util.createClass(fabric.Object, /** @lends fabric.Ellipse.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'ellipse',\n\n /**\n * Horizontal radius\n * @type Number\n * @default\n */\n rx: 0,\n\n /**\n * Vertical radius\n * @type Number\n * @default\n */\n ry: 0,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('rx', 'ry'),\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @return {fabric.Ellipse} thisArg\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n this.set('rx', options && options.rx || 0);\n this.set('ry', options && options.ry || 0);\n },\n\n /**\n * @private\n * @param {String} key\n * @param {*} value\n * @return {fabric.Ellipse} thisArg\n */\n _set: function(key, value) {\n this.callSuper('_set', key, value);\n switch (key) {\n\n case 'rx':\n this.rx = value;\n this.set('width', value * 2);\n break;\n\n case 'ry':\n this.ry = value;\n this.set('height', value * 2);\n break;\n\n }\n return this;\n },\n\n /**\n * Returns horizontal radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRx: function() {\n return this.get('rx') * this.get('scaleX');\n },\n\n /**\n * Returns Vertical radius of an object (according to how an object is scaled)\n * @return {Number}\n */\n getRy: function() {\n return this.get('ry') * this.get('scaleY');\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['rx', 'ry'].concat(propertiesToInclude));\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n return [\n '\\n'\n ];\n },\n /* _TO_SVG_END_ */\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render on\n */\n _render: function(ctx) {\n ctx.beginPath();\n ctx.save();\n ctx.transform(1, 0, 0, this.ry / this.rx, 0, 0);\n ctx.arc(\n 0,\n 0,\n this.rx,\n 0,\n piBy2,\n false);\n ctx.restore();\n this._renderPaintInOrder(ctx);\n },\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Ellipse.fromElement})\n * @static\n * @memberOf fabric.Ellipse\n * @see http://www.w3.org/TR/SVG/shapes.html#EllipseElement\n */\n fabric.Ellipse.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('cx cy rx ry'.split(' '));\n\n /**\n * Returns {@link fabric.Ellipse} instance from an SVG element\n * @static\n * @memberOf fabric.Ellipse\n * @param {SVGElement} element Element to parse\n * @param {Function} [callback] Options callback invoked after parsing is finished\n * @return {fabric.Ellipse}\n */\n fabric.Ellipse.fromElement = function(element, callback) {\n\n var parsedAttributes = fabric.parseAttributes(element, fabric.Ellipse.ATTRIBUTE_NAMES);\n\n parsedAttributes.left = (parsedAttributes.left || 0) - parsedAttributes.rx;\n parsedAttributes.top = (parsedAttributes.top || 0) - parsedAttributes.ry;\n callback(new fabric.Ellipse(parsedAttributes));\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Ellipse} instance from an object representation\n * @static\n * @memberOf fabric.Ellipse\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as first argument\n * @return {void}\n */\n fabric.Ellipse.fromObject = function(object, callback) {\n fabric.Object._fromObject('Ellipse', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend;\n\n if (fabric.Rect) {\n fabric.warn('fabric.Rect is already defined');\n return;\n }\n\n /**\n * Rectangle class\n * @class fabric.Rect\n * @extends fabric.Object\n * @return {fabric.Rect} thisArg\n * @see {@link fabric.Rect#initialize} for constructor definition\n */\n fabric.Rect = fabric.util.createClass(fabric.Object, /** @lends fabric.Rect.prototype */ {\n\n /**\n * List of properties to consider when checking if state of an object is changed ({@link fabric.Object#hasStateChanged})\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: fabric.Object.prototype.stateProperties.concat('rx', 'ry'),\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'rect',\n\n /**\n * Horizontal border radius\n * @type Number\n * @default\n */\n rx: 0,\n\n /**\n * Vertical border radius\n * @type Number\n * @default\n */\n ry: 0,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('rx', 'ry'),\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n this._initRxRy();\n },\n\n /**\n * Initializes rx/ry attributes\n * @private\n */\n _initRxRy: function() {\n if (this.rx && !this.ry) {\n this.ry = this.rx;\n }\n else if (this.ry && !this.rx) {\n this.rx = this.ry;\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n\n // 1x1 case (used in spray brush) optimization was removed because\n // with caching and higher zoom level this makes more damage than help\n\n var rx = this.rx ? Math.min(this.rx, this.width / 2) : 0,\n ry = this.ry ? Math.min(this.ry, this.height / 2) : 0,\n w = this.width,\n h = this.height,\n x = -this.width / 2,\n y = -this.height / 2,\n isRounded = rx !== 0 || ry !== 0,\n /* \"magic number\" for bezier approximations of arcs (http://itc.ktu.lt/itc354/Riskus354.pdf) */\n k = 1 - 0.5522847498;\n ctx.beginPath();\n\n ctx.moveTo(x + rx, y);\n\n ctx.lineTo(x + w - rx, y);\n isRounded && ctx.bezierCurveTo(x + w - k * rx, y, x + w, y + k * ry, x + w, y + ry);\n\n ctx.lineTo(x + w, y + h - ry);\n isRounded && ctx.bezierCurveTo(x + w, y + h - k * ry, x + w - k * rx, y + h, x + w - rx, y + h);\n\n ctx.lineTo(x + rx, y + h);\n isRounded && ctx.bezierCurveTo(x + k * rx, y + h, x, y + h - k * ry, x, y + h - ry);\n\n ctx.lineTo(x, y + ry);\n isRounded && ctx.bezierCurveTo(x, y + k * ry, x + k * rx, y, x + rx, y);\n\n ctx.closePath();\n\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['rx', 'ry'].concat(propertiesToInclude));\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var x = -this.width / 2, y = -this.height / 2;\n return [\n '\\n'\n ];\n },\n /* _TO_SVG_END_ */\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by `fabric.Rect.fromElement`)\n * @static\n * @memberOf fabric.Rect\n * @see: http://www.w3.org/TR/SVG/shapes.html#RectElement\n */\n fabric.Rect.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat('x y rx ry width height'.split(' '));\n\n /**\n * Returns {@link fabric.Rect} instance from an SVG element\n * @static\n * @memberOf fabric.Rect\n * @param {SVGElement} element Element to parse\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Rect.fromElement = function(element, callback, options) {\n if (!element) {\n return callback(null);\n }\n options = options || { };\n\n var parsedAttributes = fabric.parseAttributes(element, fabric.Rect.ATTRIBUTE_NAMES);\n parsedAttributes.left = parsedAttributes.left || 0;\n parsedAttributes.top = parsedAttributes.top || 0;\n parsedAttributes.height = parsedAttributes.height || 0;\n parsedAttributes.width = parsedAttributes.width || 0;\n var rect = new fabric.Rect(extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes));\n rect.visible = rect.visible && rect.width > 0 && rect.height > 0;\n callback(rect);\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns {@link fabric.Rect} instance from an object representation\n * @static\n * @memberOf fabric.Rect\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Rect instance is created\n */\n fabric.Rect.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Rect', object, callback);\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n min = fabric.util.array.min,\n max = fabric.util.array.max,\n toFixed = fabric.util.toFixed,\n projectStrokeOnPoints = fabric.util.projectStrokeOnPoints;\n\n if (fabric.Polyline) {\n fabric.warn('fabric.Polyline is already defined');\n return;\n }\n\n /**\n * Polyline class\n * @class fabric.Polyline\n * @extends fabric.Object\n * @see {@link fabric.Polyline#initialize} for constructor definition\n */\n fabric.Polyline = fabric.util.createClass(fabric.Object, /** @lends fabric.Polyline.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'polyline',\n\n /**\n * Points array\n * @type Array\n * @default\n */\n points: null,\n\n /**\n * WARNING: Feature in progress\n * Calculate the exact bounding box taking in account strokeWidth on acute angles\n * this will be turned to true by default on fabric 6.0\n * maybe will be left in as an optimization since calculations may be slow\n * @deprecated\n * @type Boolean\n * @default false\n */\n exactBoundingBox: false,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('points'),\n\n /**\n * Constructor\n * @param {Array} points Array of points (where each point is an object with x and y)\n * @param {Object} [options] Options object\n * @return {fabric.Polyline} thisArg\n * @example\n * var poly = new fabric.Polyline([\n * { x: 10, y: 10 },\n * { x: 50, y: 30 },\n * { x: 40, y: 70 },\n * { x: 60, y: 50 },\n * { x: 100, y: 150 },\n * { x: 40, y: 100 }\n * ], {\n * stroke: 'red',\n * left: 100,\n * top: 100\n * });\n */\n initialize: function(points, options) {\n options = options || {};\n this.points = points || [];\n this.callSuper('initialize', options);\n this._setPositionDimensions(options);\n },\n\n /**\n * @private\n */\n _projectStrokeOnPoints: function () {\n return projectStrokeOnPoints(this.points, this, true);\n },\n\n _setPositionDimensions: function(options) {\n var calcDim = this._calcDimensions(options), correctLeftTop,\n correctSize = this.exactBoundingBox ? this.strokeWidth : 0;\n this.width = calcDim.width - correctSize;\n this.height = calcDim.height - correctSize;\n if (!options.fromSVG) {\n correctLeftTop = this.translateToGivenOrigin(\n {\n // this looks bad, but is one way to keep it optional for now.\n x: calcDim.left - this.strokeWidth / 2 + correctSize / 2,\n y: calcDim.top - this.strokeWidth / 2 + correctSize / 2\n },\n 'left',\n 'top',\n this.originX,\n this.originY\n );\n }\n if (typeof options.left === 'undefined') {\n this.left = options.fromSVG ? calcDim.left : correctLeftTop.x;\n }\n if (typeof options.top === 'undefined') {\n this.top = options.fromSVG ? calcDim.top : correctLeftTop.y;\n }\n this.pathOffset = {\n x: calcDim.left + this.width / 2 + correctSize / 2,\n y: calcDim.top + this.height / 2 + correctSize / 2\n };\n },\n\n /**\n * Calculate the polygon min and max point from points array,\n * returning an object with left, top, width, height to measure the\n * polygon size\n * @return {Object} object.left X coordinate of the polygon leftmost point\n * @return {Object} object.top Y coordinate of the polygon topmost point\n * @return {Object} object.width distance between X coordinates of the polygon leftmost and rightmost point\n * @return {Object} object.height distance between Y coordinates of the polygon topmost and bottommost point\n * @private\n */\n _calcDimensions: function() {\n\n var points = this.exactBoundingBox ? this._projectStrokeOnPoints() : this.points,\n minX = min(points, 'x') || 0,\n minY = min(points, 'y') || 0,\n maxX = max(points, 'x') || 0,\n maxY = max(points, 'y') || 0,\n width = (maxX - minX),\n height = (maxY - minY);\n\n return {\n left: minX,\n top: minY,\n width: width,\n height: height,\n };\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return extend(this.callSuper('toObject', propertiesToInclude), {\n points: this.points.concat()\n });\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var points = [], diffX = this.pathOffset.x, diffY = this.pathOffset.y,\n NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n\n for (var i = 0, len = this.points.length; i < len; i++) {\n points.push(\n toFixed(this.points[i].x - diffX, NUM_FRACTION_DIGITS), ',',\n toFixed(this.points[i].y - diffY, NUM_FRACTION_DIGITS), ' '\n );\n }\n return [\n '<' + this.type + ' ', 'COMMON_PARTS',\n 'points=\"', points.join(''),\n '\" />\\n'\n ];\n },\n /* _TO_SVG_END_ */\n\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n commonRender: function(ctx) {\n var point, len = this.points.length,\n x = this.pathOffset.x,\n y = this.pathOffset.y;\n\n if (!len || isNaN(this.points[len - 1].y)) {\n // do not draw if no points or odd points\n // NaN comes from parseFloat of a empty string in parser\n return false;\n }\n ctx.beginPath();\n ctx.moveTo(this.points[0].x - x, this.points[0].y - y);\n for (var i = 0; i < len; i++) {\n point = this.points[i];\n ctx.lineTo(point.x - x, point.y - y);\n }\n return true;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n if (!this.commonRender(ctx)) {\n return;\n }\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * Returns complexity of an instance\n * @return {Number} complexity of this instance\n */\n complexity: function() {\n return this.get('points').length;\n }\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Polyline.fromElement})\n * @static\n * @memberOf fabric.Polyline\n * @see: http://www.w3.org/TR/SVG/shapes.html#PolylineElement\n */\n fabric.Polyline.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat();\n\n /**\n * Returns fabric.Polyline instance from an SVG element\n * @static\n * @memberOf fabric.Polyline\n * @param {SVGElement} element Element to parser\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Polyline.fromElementGenerator = function(_class) {\n return function(element, callback, options) {\n if (!element) {\n return callback(null);\n }\n options || (options = { });\n\n var points = fabric.parsePointsAttribute(element.getAttribute('points')),\n parsedAttributes = fabric.parseAttributes(element, fabric[_class].ATTRIBUTE_NAMES);\n parsedAttributes.fromSVG = true;\n callback(new fabric[_class](points, extend(parsedAttributes, options)));\n };\n };\n\n fabric.Polyline.fromElement = fabric.Polyline.fromElementGenerator('Polyline');\n\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Polyline instance from an object representation\n * @static\n * @memberOf fabric.Polyline\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n */\n fabric.Polyline.fromObject = function(object, callback) {\n return fabric.Object._fromObject('Polyline', object, callback, 'points');\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = {}),\n projectStrokeOnPoints = fabric.util.projectStrokeOnPoints;\n\n if (fabric.Polygon) {\n fabric.warn('fabric.Polygon is already defined');\n return;\n }\n\n /**\n * Polygon class\n * @class fabric.Polygon\n * @extends fabric.Polyline\n * @see {@link fabric.Polygon#initialize} for constructor definition\n */\n fabric.Polygon = fabric.util.createClass(fabric.Polyline, /** @lends fabric.Polygon.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'polygon',\n\n /**\n * @private\n */\n _projectStrokeOnPoints: function () {\n return projectStrokeOnPoints(this.points, this);\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n if (!this.commonRender(ctx)) {\n return;\n }\n ctx.closePath();\n this._renderPaintInOrder(ctx);\n },\n\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by `fabric.Polygon.fromElement`)\n * @static\n * @memberOf fabric.Polygon\n * @see: http://www.w3.org/TR/SVG/shapes.html#PolygonElement\n */\n fabric.Polygon.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat();\n\n /**\n * Returns {@link fabric.Polygon} instance from an SVG element\n * @static\n * @memberOf fabric.Polygon\n * @param {SVGElement} element Element to parse\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Polygon.fromElement = fabric.Polyline.fromElementGenerator('Polygon');\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Polygon instance from an object representation\n * @static\n * @memberOf fabric.Polygon\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n * @return {void}\n */\n fabric.Polygon.fromObject = function(object, callback) {\n fabric.Object._fromObject('Polygon', object, callback, 'points');\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n min = fabric.util.array.min,\n max = fabric.util.array.max,\n extend = fabric.util.object.extend,\n clone = fabric.util.object.clone,\n toFixed = fabric.util.toFixed;\n\n if (fabric.Path) {\n fabric.warn('fabric.Path is already defined');\n return;\n }\n\n /**\n * Path class\n * @class fabric.Path\n * @extends fabric.Object\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#path_and_pathgroup}\n * @see {@link fabric.Path#initialize} for constructor definition\n */\n fabric.Path = fabric.util.createClass(fabric.Object, /** @lends fabric.Path.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'path',\n\n /**\n * Array of path points\n * @type Array\n * @default\n */\n path: null,\n\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('path', 'fillRule'),\n\n stateProperties: fabric.Object.prototype.stateProperties.concat('path'),\n\n /**\n * Constructor\n * @param {Array|String} path Path data (sequence of coordinates and corresponding \"command\" tokens)\n * @param {Object} [options] Options object\n * @return {fabric.Path} thisArg\n */\n initialize: function (path, options) {\n options = clone(options || {});\n delete options.path;\n this.callSuper('initialize', options);\n this._setPath(path || [], options);\n },\n\n /**\n * @private\n * @param {Array|String} path Path data (sequence of coordinates and corresponding \"command\" tokens)\n * @param {Object} [options] Options object\n */\n _setPath: function (path, options) {\n this.path = fabric.util.makePathSimpler(\n Array.isArray(path) ? path : fabric.util.parsePath(path)\n );\n\n fabric.Polyline.prototype._setPositionDimensions.call(this, options || {});\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render path on\n */\n _renderPathCommands: function(ctx) {\n var current, // current instruction\n subpathStartX = 0,\n subpathStartY = 0,\n x = 0, // current x\n y = 0, // current y\n controlX = 0, // current control point x\n controlY = 0, // current control point y\n l = -this.pathOffset.x,\n t = -this.pathOffset.y;\n\n ctx.beginPath();\n\n for (var i = 0, len = this.path.length; i < len; ++i) {\n\n current = this.path[i];\n\n switch (current[0]) { // first letter\n\n case 'L': // lineto, absolute\n x = current[1];\n y = current[2];\n ctx.lineTo(x + l, y + t);\n break;\n\n case 'M': // moveTo, absolute\n x = current[1];\n y = current[2];\n subpathStartX = x;\n subpathStartY = y;\n ctx.moveTo(x + l, y + t);\n break;\n\n case 'C': // bezierCurveTo, absolute\n x = current[5];\n y = current[6];\n controlX = current[3];\n controlY = current[4];\n ctx.bezierCurveTo(\n current[1] + l,\n current[2] + t,\n controlX + l,\n controlY + t,\n x + l,\n y + t\n );\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n ctx.quadraticCurveTo(\n current[1] + l,\n current[2] + t,\n current[3] + l,\n current[4] + t\n );\n x = current[3];\n y = current[4];\n controlX = current[1];\n controlY = current[2];\n break;\n\n case 'z':\n case 'Z':\n x = subpathStartX;\n y = subpathStartY;\n ctx.closePath();\n break;\n }\n }\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx context to render path on\n */\n _render: function(ctx) {\n this._renderPathCommands(ctx);\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * Returns string representation of an instance\n * @return {String} string representation of an instance\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return extend(this.callSuper('toObject', propertiesToInclude), {\n path: this.path.map(function(item) { return item.slice(); }),\n });\n },\n\n /**\n * Returns dataless object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toDatalessObject: function(propertiesToInclude) {\n var o = this.toObject(['sourcePath'].concat(propertiesToInclude));\n if (o.sourcePath) {\n delete o.path;\n }\n return o;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var path = fabric.util.joinPath(this.path);\n return [\n '\\n'\n ];\n },\n\n _getOffsetTransform: function() {\n var digits = fabric.Object.NUM_FRACTION_DIGITS;\n return ' translate(' + toFixed(-this.pathOffset.x, digits) + ', ' +\n toFixed(-this.pathOffset.y, digits) + ')';\n },\n\n /**\n * Returns svg clipPath representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toClipPathSVG: function(reviver) {\n var additionalTransform = this._getOffsetTransform();\n return '\\t' + this._createBaseClipPathSVGMarkup(\n this._toSVG(), { reviver: reviver, additionalTransform: additionalTransform }\n );\n },\n\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n var additionalTransform = this._getOffsetTransform();\n return this._createBaseSVGMarkup(this._toSVG(), { reviver: reviver, additionalTransform: additionalTransform });\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns number representation of an instance complexity\n * @return {Number} complexity of this instance\n */\n complexity: function() {\n return this.path.length;\n },\n\n /**\n * @private\n */\n _calcDimensions: function() {\n\n var aX = [],\n aY = [],\n current, // current instruction\n subpathStartX = 0,\n subpathStartY = 0,\n x = 0, // current x\n y = 0, // current y\n bounds;\n\n for (var i = 0, len = this.path.length; i < len; ++i) {\n\n current = this.path[i];\n\n switch (current[0]) { // first letter\n\n case 'L': // lineto, absolute\n x = current[1];\n y = current[2];\n bounds = [];\n break;\n\n case 'M': // moveTo, absolute\n x = current[1];\n y = current[2];\n subpathStartX = x;\n subpathStartY = y;\n bounds = [];\n break;\n\n case 'C': // bezierCurveTo, absolute\n bounds = fabric.util.getBoundsOfCurve(x, y,\n current[1],\n current[2],\n current[3],\n current[4],\n current[5],\n current[6]\n );\n x = current[5];\n y = current[6];\n break;\n\n case 'Q': // quadraticCurveTo, absolute\n bounds = fabric.util.getBoundsOfCurve(x, y,\n current[1],\n current[2],\n current[1],\n current[2],\n current[3],\n current[4]\n );\n x = current[3];\n y = current[4];\n break;\n\n case 'z':\n case 'Z':\n x = subpathStartX;\n y = subpathStartY;\n break;\n }\n bounds.forEach(function (point) {\n aX.push(point.x);\n aY.push(point.y);\n });\n aX.push(x);\n aY.push(y);\n }\n\n var minX = min(aX) || 0,\n minY = min(aY) || 0,\n maxX = max(aX) || 0,\n maxY = max(aY) || 0,\n deltaX = maxX - minX,\n deltaY = maxY - minY;\n\n return {\n left: minX,\n top: minY,\n width: deltaX,\n height: deltaY\n };\n }\n });\n\n /**\n * Creates an instance of fabric.Path from an object\n * @static\n * @memberOf fabric.Path\n * @param {Object} object\n * @param {Function} [callback] Callback to invoke when an fabric.Path instance is created\n */\n fabric.Path.fromObject = function(object, callback) {\n if (typeof object.sourcePath === 'string') {\n var pathUrl = object.sourcePath;\n fabric.loadSVGFromURL(pathUrl, function (elements) {\n var path = elements[0];\n path.setOptions(object);\n if (object.clipPath) {\n fabric.util.enlivenObjects([object.clipPath], function(elivenedObjects) {\n path.clipPath = elivenedObjects[0];\n callback && callback(path);\n });\n }\n else {\n callback && callback(path);\n }\n });\n }\n else {\n fabric.Object._fromObject('Path', object, callback, 'path');\n }\n };\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by `fabric.Path.fromElement`)\n * @static\n * @memberOf fabric.Path\n * @see http://www.w3.org/TR/SVG/paths.html#PathElement\n */\n fabric.Path.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(['d']);\n\n /**\n * Creates an instance of fabric.Path from an SVG element\n * @static\n * @memberOf fabric.Path\n * @param {SVGElement} element to parse\n * @param {Function} callback Callback to invoke when an fabric.Path instance is created\n * @param {Object} [options] Options object\n * @param {Function} [callback] Options callback invoked after parsing is finished\n */\n fabric.Path.fromElement = function(element, callback, options) {\n var parsedAttributes = fabric.parseAttributes(element, fabric.Path.ATTRIBUTE_NAMES);\n parsedAttributes.fromSVG = true;\n callback(new fabric.Path(parsedAttributes.d, extend(parsedAttributes, options)));\n };\n /* _FROM_SVG_END_ */\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n min = fabric.util.array.min,\n max = fabric.util.array.max;\n\n if (fabric.Group) {\n return;\n }\n\n /**\n * Group class\n * @class fabric.Group\n * @extends fabric.Object\n * @mixes fabric.Collection\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#groups}\n * @see {@link fabric.Group#initialize} for constructor definition\n */\n fabric.Group = fabric.util.createClass(fabric.Object, fabric.Collection, /** @lends fabric.Group.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'group',\n\n /**\n * Width of stroke\n * @type Number\n * @default\n */\n strokeWidth: 0,\n\n /**\n * Indicates if click, mouseover, mouseout events & hoverCursor should also check for subtargets\n * @type Boolean\n * @default\n */\n subTargetCheck: false,\n\n /**\n * Groups are container, do not render anything on theyr own, ence no cache properties\n * @type Array\n * @default\n */\n cacheProperties: [],\n\n /**\n * setOnGroup is a method used for TextBox that is no more used since 2.0.0 The behavior is still\n * available setting this boolean to true.\n * @type Boolean\n * @since 2.0.0\n * @default\n */\n useSetOnGroup: false,\n\n /**\n * Constructor\n * @param {Object} objects Group objects\n * @param {Object} [options] Options object\n * @param {Boolean} [isAlreadyGrouped] if true, objects have been grouped already.\n * @return {Object} thisArg\n */\n initialize: function(objects, options, isAlreadyGrouped) {\n options = options || {};\n this._objects = [];\n // if objects enclosed in a group have been grouped already,\n // we cannot change properties of objects.\n // Thus we need to set options to group without objects,\n isAlreadyGrouped && this.callSuper('initialize', options);\n this._objects = objects || [];\n for (var i = this._objects.length; i--; ) {\n this._objects[i].group = this;\n }\n\n if (!isAlreadyGrouped) {\n var center = options && options.centerPoint;\n // we want to set origins before calculating the bounding box.\n // so that the topleft can be set with that in mind.\n // if specific top and left are passed, are overwritten later\n // with the callSuper('initialize', options)\n if (options.originX !== undefined) {\n this.originX = options.originX;\n }\n if (options.originY !== undefined) {\n this.originY = options.originY;\n }\n // if coming from svg i do not want to calc bounds.\n // i assume width and height are passed along options\n center || this._calcBounds();\n this._updateObjectsCoords(center);\n delete options.centerPoint;\n this.callSuper('initialize', options);\n }\n else {\n this._updateObjectsACoords();\n }\n\n this.setCoords();\n },\n\n /**\n * @private\n */\n _updateObjectsACoords: function() {\n var skipControls = true;\n for (var i = this._objects.length; i--; ){\n this._objects[i].setCoords(skipControls);\n }\n },\n\n /**\n * @private\n * @param {Boolean} [skipCoordsChange] if true, coordinates of objects enclosed in a group do not change\n */\n _updateObjectsCoords: function(center) {\n var center = center || this.getCenterPoint();\n for (var i = this._objects.length; i--; ){\n this._updateObjectCoords(this._objects[i], center);\n }\n },\n\n /**\n * @private\n * @param {Object} object\n * @param {fabric.Point} center, current center of group.\n */\n _updateObjectCoords: function(object, center) {\n var objectLeft = object.left,\n objectTop = object.top,\n skipControls = true;\n\n object.set({\n left: objectLeft - center.x,\n top: objectTop - center.y\n });\n object.group = this;\n object.setCoords(skipControls);\n },\n\n /**\n * Returns string represenation of a group\n * @return {String}\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Adds an object to a group; Then recalculates group's dimension, position.\n * @param {Object} object\n * @return {fabric.Group} thisArg\n * @chainable\n */\n addWithUpdate: function(object) {\n var nested = !!this.group;\n this._restoreObjectsState();\n fabric.util.resetObjectTransform(this);\n if (object) {\n if (nested) {\n // if this group is inside another group, we need to pre transform the object\n fabric.util.removeTransformFromObject(object, this.group.calcTransformMatrix());\n }\n this._objects.push(object);\n object.group = this;\n object._set('canvas', this.canvas);\n }\n this._calcBounds();\n this._updateObjectsCoords();\n this.dirty = true;\n if (nested) {\n this.group.addWithUpdate();\n }\n else {\n this.setCoords();\n }\n return this;\n },\n\n /**\n * Removes an object from a group; Then recalculates group's dimension, position.\n * @param {Object} object\n * @return {fabric.Group} thisArg\n * @chainable\n */\n removeWithUpdate: function(object) {\n this._restoreObjectsState();\n fabric.util.resetObjectTransform(this);\n\n this.remove(object);\n this._calcBounds();\n this._updateObjectsCoords();\n this.setCoords();\n this.dirty = true;\n return this;\n },\n\n /**\n * @private\n */\n _onObjectAdded: function(object) {\n this.dirty = true;\n object.group = this;\n object._set('canvas', this.canvas);\n },\n\n /**\n * @private\n */\n _onObjectRemoved: function(object) {\n this.dirty = true;\n delete object.group;\n },\n\n /**\n * @private\n */\n _set: function(key, value) {\n var i = this._objects.length;\n if (this.useSetOnGroup) {\n while (i--) {\n this._objects[i].setOnGroup(key, value);\n }\n }\n if (key === 'canvas') {\n while (i--) {\n this._objects[i]._set(key, value);\n }\n }\n fabric.Object.prototype._set.call(this, key, value);\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var _includeDefaultValues = this.includeDefaultValues;\n var objsToObject = this._objects\n .filter(function (obj) {\n return !obj.excludeFromExport;\n })\n .map(function (obj) {\n var originalDefaults = obj.includeDefaultValues;\n obj.includeDefaultValues = _includeDefaultValues;\n var _obj = obj.toObject(propertiesToInclude);\n obj.includeDefaultValues = originalDefaults;\n return _obj;\n });\n var obj = fabric.Object.prototype.toObject.call(this, propertiesToInclude);\n obj.objects = objsToObject;\n return obj;\n },\n\n /**\n * Returns object representation of an instance, in dataless mode.\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toDatalessObject: function(propertiesToInclude) {\n var objsToObject, sourcePath = this.sourcePath;\n if (sourcePath) {\n objsToObject = sourcePath;\n }\n else {\n var _includeDefaultValues = this.includeDefaultValues;\n objsToObject = this._objects.map(function(obj) {\n var originalDefaults = obj.includeDefaultValues;\n obj.includeDefaultValues = _includeDefaultValues;\n var _obj = obj.toDatalessObject(propertiesToInclude);\n obj.includeDefaultValues = originalDefaults;\n return _obj;\n });\n }\n var obj = fabric.Object.prototype.toDatalessObject.call(this, propertiesToInclude);\n obj.objects = objsToObject;\n return obj;\n },\n\n /**\n * Renders instance on a given context\n * @param {CanvasRenderingContext2D} ctx context to render instance on\n */\n render: function(ctx) {\n this._transformDone = true;\n this.callSuper('render', ctx);\n this._transformDone = false;\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group is already cached.\n * @return {Boolean}\n */\n shouldCache: function() {\n var ownCache = fabric.Object.prototype.shouldCache.call(this);\n if (ownCache) {\n for (var i = 0, len = this._objects.length; i < len; i++) {\n if (this._objects[i].willDrawShadow()) {\n this.ownCaching = false;\n return false;\n }\n }\n }\n return ownCache;\n },\n\n /**\n * Check if this object or a child object will cast a shadow\n * @return {Boolean}\n */\n willDrawShadow: function() {\n if (fabric.Object.prototype.willDrawShadow.call(this)) {\n return true;\n }\n for (var i = 0, len = this._objects.length; i < len; i++) {\n if (this._objects[i].willDrawShadow()) {\n return true;\n }\n }\n return false;\n },\n\n /**\n * Check if this group or its parent group are caching, recursively up\n * @return {Boolean}\n */\n isOnACache: function() {\n return this.ownCaching || (this.group && this.group.isOnACache());\n },\n\n /**\n * Execute the drawing operation for an object on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawObject: function(ctx) {\n for (var i = 0, len = this._objects.length; i < len; i++) {\n this._objects[i].render(ctx);\n }\n this._drawClipPath(ctx, this.clipPath);\n },\n\n /**\n * Check if cache is dirty\n */\n isCacheDirty: function(skipCanvas) {\n if (this.callSuper('isCacheDirty', skipCanvas)) {\n return true;\n }\n if (!this.statefullCache) {\n return false;\n }\n for (var i = 0, len = this._objects.length; i < len; i++) {\n if (this._objects[i].isCacheDirty(true)) {\n if (this._cacheCanvas) {\n // if this group has not a cache canvas there is nothing to clean\n var x = this.cacheWidth / this.zoomX, y = this.cacheHeight / this.zoomY;\n this._cacheContext.clearRect(-x / 2, -y / 2, x, y);\n }\n return true;\n }\n }\n return false;\n },\n\n /**\n * Restores original state of each of group objects (original state is that which was before group was created).\n * if the nested boolean is true, the original state will be restored just for the\n * first group and not for all the group chain\n * @private\n * @param {Boolean} nested tell the function to restore object state up to the parent group and not more\n * @return {fabric.Group} thisArg\n * @chainable\n */\n _restoreObjectsState: function() {\n var groupMatrix = this.calcOwnMatrix();\n this._objects.forEach(function(object) {\n // instead of using _this = this;\n fabric.util.addTransformToObject(object, groupMatrix);\n delete object.group;\n object.setCoords();\n });\n return this;\n },\n\n /**\n * Destroys a group (restoring state of its objects)\n * @return {fabric.Group} thisArg\n * @chainable\n */\n destroy: function() {\n // when group is destroyed objects needs to get a repaint to be eventually\n // displayed on canvas.\n this._objects.forEach(function(object) {\n object.set('dirty', true);\n });\n return this._restoreObjectsState();\n },\n\n dispose: function () {\n this.callSuper('dispose');\n this.forEachObject(function (object) {\n object.dispose && object.dispose();\n });\n this._objects = [];\n },\n\n /**\n * make a group an active selection, remove the group from canvas\n * the group has to be on canvas for this to work.\n * @return {fabric.ActiveSelection} thisArg\n * @chainable\n */\n toActiveSelection: function() {\n if (!this.canvas) {\n return;\n }\n var objects = this._objects, canvas = this.canvas;\n this._objects = [];\n var options = this.toObject();\n delete options.objects;\n var activeSelection = new fabric.ActiveSelection([]);\n activeSelection.set(options);\n activeSelection.type = 'activeSelection';\n canvas.remove(this);\n objects.forEach(function(object) {\n object.group = activeSelection;\n object.dirty = true;\n canvas.add(object);\n });\n activeSelection.canvas = canvas;\n activeSelection._objects = objects;\n canvas._activeObject = activeSelection;\n activeSelection.setCoords();\n return activeSelection;\n },\n\n /**\n * Destroys a group (restoring state of its objects)\n * @return {fabric.Group} thisArg\n * @chainable\n */\n ungroupOnCanvas: function() {\n return this._restoreObjectsState();\n },\n\n /**\n * Sets coordinates of all objects inside group\n * @return {fabric.Group} thisArg\n * @chainable\n */\n setObjectsCoords: function() {\n var skipControls = true;\n this.forEachObject(function(object) {\n object.setCoords(skipControls);\n });\n return this;\n },\n\n /**\n * @private\n */\n _calcBounds: function(onlyWidthHeight) {\n var aX = [],\n aY = [],\n o, prop, coords,\n props = ['tr', 'br', 'bl', 'tl'],\n i = 0, iLen = this._objects.length,\n j, jLen = props.length;\n\n for ( ; i < iLen; ++i) {\n o = this._objects[i];\n coords = o.calcACoords();\n for (j = 0; j < jLen; j++) {\n prop = props[j];\n aX.push(coords[prop].x);\n aY.push(coords[prop].y);\n }\n o.aCoords = coords;\n }\n\n this._getBounds(aX, aY, onlyWidthHeight);\n },\n\n /**\n * @private\n */\n _getBounds: function(aX, aY, onlyWidthHeight) {\n var minXY = new fabric.Point(min(aX), min(aY)),\n maxXY = new fabric.Point(max(aX), max(aY)),\n top = minXY.y || 0, left = minXY.x || 0,\n width = (maxXY.x - minXY.x) || 0,\n height = (maxXY.y - minXY.y) || 0;\n this.width = width;\n this.height = height;\n if (!onlyWidthHeight) {\n // the bounding box always finds the topleft most corner.\n // whatever is the group origin, we set up here the left/top position.\n this.setPositionByOrigin({ x: left, y: top }, 'left', 'top');\n }\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n _toSVG: function(reviver) {\n var svgString = ['\\n'];\n\n for (var i = 0, len = this._objects.length; i < len; i++) {\n svgString.push('\\t\\t', this._objects[i].toSVG(reviver));\n }\n svgString.push('\\n');\n return svgString;\n },\n\n /**\n * Returns styles-string for svg-export, specific version for group\n * @return {String}\n */\n getSvgStyles: function() {\n var opacity = typeof this.opacity !== 'undefined' && this.opacity !== 1 ?\n 'opacity: ' + this.opacity + ';' : '',\n visibility = this.visible ? '' : ' visibility: hidden;';\n return [\n opacity,\n this.getSvgFilter(),\n visibility\n ].join('');\n },\n\n /**\n * Returns svg clipPath representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toClipPathSVG: function(reviver) {\n var svgString = [];\n\n for (var i = 0, len = this._objects.length; i < len; i++) {\n svgString.push('\\t', this._objects[i].toClipPathSVG(reviver));\n }\n\n return this._createBaseClipPathSVGMarkup(svgString, { reviver: reviver });\n },\n /* _TO_SVG_END_ */\n });\n\n /**\n * Returns {@link fabric.Group} instance from an object representation\n * @static\n * @memberOf fabric.Group\n * @param {Object} object Object to create a group from\n * @param {Function} [callback] Callback to invoke when an group instance is created\n */\n fabric.Group.fromObject = function(object, callback) {\n var objects = object.objects,\n options = fabric.util.object.clone(object, true);\n delete options.objects;\n if (typeof objects === 'string') {\n // it has to be an url or something went wrong.\n fabric.loadSVGFromURL(objects, function (elements) {\n var group = fabric.util.groupSVGElements(elements, object, objects);\n var clipPath = options.clipPath;\n delete options.clipPath;\n group.set(options);\n if (clipPath) {\n fabric.util.enlivenObjects([clipPath], function(elivenedObjects) {\n group.clipPath = elivenedObjects[0];\n callback && callback(group);\n });\n }\n else {\n callback && callback(group);\n }\n });\n return;\n }\n fabric.util.enlivenObjects(objects, function (enlivenedObjects) {\n fabric.util.enlivenObjectEnlivables(object, options, function () {\n callback && callback(new fabric.Group(enlivenedObjects, options, true));\n });\n });\n };\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { });\n\n if (fabric.ActiveSelection) {\n return;\n }\n\n /**\n * Group class\n * @class fabric.ActiveSelection\n * @extends fabric.Group\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-3#groups}\n * @see {@link fabric.ActiveSelection#initialize} for constructor definition\n */\n fabric.ActiveSelection = fabric.util.createClass(fabric.Group, /** @lends fabric.ActiveSelection.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'activeSelection',\n\n /**\n * Constructor\n * @param {Object} objects ActiveSelection objects\n * @param {Object} [options] Options object\n * @return {Object} thisArg\n */\n initialize: function(objects, options) {\n options = options || {};\n this._objects = objects || [];\n for (var i = this._objects.length; i--; ) {\n this._objects[i].group = this;\n }\n\n if (options.originX) {\n this.originX = options.originX;\n }\n if (options.originY) {\n this.originY = options.originY;\n }\n this._calcBounds();\n this._updateObjectsCoords();\n fabric.Object.prototype.initialize.call(this, options);\n this.setCoords();\n },\n\n /**\n * Change te activeSelection to a normal group,\n * High level function that automatically adds it to canvas as\n * active object. no events fired.\n * @since 2.0.0\n * @return {fabric.Group}\n */\n toGroup: function() {\n var objects = this._objects.concat();\n this._objects = [];\n var options = fabric.Object.prototype.toObject.call(this);\n var newGroup = new fabric.Group([]);\n delete options.type;\n newGroup.set(options);\n objects.forEach(function(object) {\n object.canvas.remove(object);\n object.group = newGroup;\n });\n newGroup._objects = objects;\n if (!this.canvas) {\n return newGroup;\n }\n var canvas = this.canvas;\n canvas.add(newGroup);\n canvas._activeObject = newGroup;\n newGroup.setCoords();\n return newGroup;\n },\n\n /**\n * If returns true, deselection is cancelled.\n * @since 2.0.0\n * @return {Boolean} [cancel]\n */\n onDeselect: function() {\n this.destroy();\n return false;\n },\n\n /**\n * Returns string representation of a group\n * @return {String}\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * objectCaching is a global flag, wins over everything\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group outside is cached.\n * @return {Boolean}\n */\n shouldCache: function() {\n return false;\n },\n\n /**\n * Check if this group or its parent group are caching, recursively up\n * @return {Boolean}\n */\n isOnACache: function() {\n return false;\n },\n\n /**\n * Renders controls and borders for the object\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} [styleOverride] properties to override the object style\n * @param {Object} [childrenOverride] properties to override the children overrides\n */\n _renderControls: function(ctx, styleOverride, childrenOverride) {\n ctx.save();\n ctx.globalAlpha = this.isMoving ? this.borderOpacityWhenMoving : 1;\n this.callSuper('_renderControls', ctx, styleOverride);\n childrenOverride = childrenOverride || { };\n if (typeof childrenOverride.hasControls === 'undefined') {\n childrenOverride.hasControls = false;\n }\n childrenOverride.forActiveSelection = true;\n for (var i = 0, len = this._objects.length; i < len; i++) {\n this._objects[i]._renderControls(ctx, childrenOverride);\n }\n ctx.restore();\n },\n });\n\n /**\n * Returns {@link fabric.ActiveSelection} instance from an object representation\n * @static\n * @memberOf fabric.ActiveSelection\n * @param {Object} object Object to create a group from\n * @param {Function} [callback] Callback to invoke when an ActiveSelection instance is created\n */\n fabric.ActiveSelection.fromObject = function(object, callback) {\n fabric.util.enlivenObjects(object.objects, function(enlivenedObjects) {\n delete object.objects;\n callback && callback(new fabric.ActiveSelection(enlivenedObjects, object, true));\n });\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var extend = fabric.util.object.extend;\n\n if (!global.fabric) {\n global.fabric = { };\n }\n\n if (global.fabric.Image) {\n fabric.warn('fabric.Image is already defined.');\n return;\n }\n\n /**\n * Image class\n * @class fabric.Image\n * @extends fabric.Object\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-1#images}\n * @see {@link fabric.Image#initialize} for constructor definition\n */\n fabric.Image = fabric.util.createClass(fabric.Object, /** @lends fabric.Image.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'image',\n\n /**\n * Width of a stroke.\n * For image quality a stroke multiple of 2 gives better results.\n * @type Number\n * @default\n */\n strokeWidth: 0,\n\n /**\n * When calling {@link fabric.Image.getSrc}, return value from element src with `element.getAttribute('src')`.\n * This allows for relative urls as image src.\n * @since 2.7.0\n * @type Boolean\n * @default\n */\n srcFromAttribute: false,\n\n /**\n * private\n * contains last value of scaleX to detect\n * if the Image got resized after the last Render\n * @type Number\n */\n _lastScaleX: 1,\n\n /**\n * private\n * contains last value of scaleY to detect\n * if the Image got resized after the last Render\n * @type Number\n */\n _lastScaleY: 1,\n\n /**\n * private\n * contains last value of scaling applied by the apply filter chain\n * @type Number\n */\n _filterScalingX: 1,\n\n /**\n * private\n * contains last value of scaling applied by the apply filter chain\n * @type Number\n */\n _filterScalingY: 1,\n\n /**\n * minimum scale factor under which any resizeFilter is triggered to resize the image\n * 0 will disable the automatic resize. 1 will trigger automatically always.\n * number bigger than 1 are not implemented yet.\n * @type Number\n */\n minimumScaleTrigger: 0.5,\n\n /**\n * List of properties to consider when checking if\n * state of an object is changed ({@link fabric.Object#hasStateChanged})\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: fabric.Object.prototype.stateProperties.concat('cropX', 'cropY'),\n\n /**\n * List of properties to consider when checking if cache needs refresh\n * Those properties are checked by statefullCache ON ( or lazy mode if we want ) or from single\n * calls to Object.set(key, value). If the key is in this list, the object is marked as dirty\n * and refreshed at the next render\n * @type Array\n */\n cacheProperties: fabric.Object.prototype.cacheProperties.concat('cropX', 'cropY'),\n\n /**\n * key used to retrieve the texture representing this image\n * @since 2.0.0\n * @type String\n * @default\n */\n cacheKey: '',\n\n /**\n * Image crop in pixels from original image size.\n * @since 2.0.0\n * @type Number\n * @default\n */\n cropX: 0,\n\n /**\n * Image crop in pixels from original image size.\n * @since 2.0.0\n * @type Number\n * @default\n */\n cropY: 0,\n\n /**\n * Indicates whether this canvas will use image smoothing when painting this image.\n * Also influence if the cacheCanvas for this image uses imageSmoothing\n * @since 4.0.0-beta.11\n * @type Boolean\n * @default\n */\n imageSmoothing: true,\n\n /**\n * Constructor\n * Image can be initialized with any canvas drawable or a string.\n * The string should be a url and will be loaded as an image.\n * Canvas and Image element work out of the box, while videos require extra code to work.\n * Please check video element events for seeking.\n * @param {HTMLImageElement | HTMLCanvasElement | HTMLVideoElement | String} element Image element\n * @param {Object} [options] Options object\n * @param {function} [callback] callback function to call after eventual filters applied.\n * @return {fabric.Image} thisArg\n */\n initialize: function(element, options) {\n options || (options = { });\n this.filters = [];\n this.cacheKey = 'texture' + fabric.Object.__uid++;\n this.callSuper('initialize', options);\n this._initElement(element, options);\n },\n\n /**\n * Returns image element which this instance if based on\n * @return {HTMLImageElement} Image element\n */\n getElement: function() {\n return this._element || {};\n },\n\n /**\n * Sets image element for this instance to a specified one.\n * If filters defined they are applied to new image.\n * You might need to call `canvas.renderAll` and `object.setCoords` after replacing, to render new image and update controls area.\n * @param {HTMLImageElement} element\n * @param {Object} [options] Options object\n * @return {fabric.Image} thisArg\n * @chainable\n */\n setElement: function(element, options) {\n this.removeTexture(this.cacheKey);\n this.removeTexture(this.cacheKey + '_filtered');\n this._element = element;\n this._originalElement = element;\n this._initConfig(options);\n if (this.filters.length !== 0) {\n this.applyFilters();\n }\n // resizeFilters work on the already filtered copy.\n // we need to apply resizeFilters AFTER normal filters.\n // applyResizeFilters is run more often than normal filters\n // and is triggered by user interactions rather than dev code\n if (this.resizeFilter) {\n this.applyResizeFilters();\n }\n return this;\n },\n\n /**\n * Delete a single texture if in webgl mode\n */\n removeTexture: function(key) {\n var backend = fabric.filterBackend;\n if (backend && backend.evictCachesForKey) {\n backend.evictCachesForKey(key);\n }\n },\n\n /**\n * Delete textures, reference to elements and eventually JSDOM cleanup\n */\n dispose: function () {\n this.callSuper('dispose');\n this.removeTexture(this.cacheKey);\n this.removeTexture(this.cacheKey + '_filtered');\n this._cacheContext = undefined;\n ['_originalElement', '_element', '_filteredEl', '_cacheCanvas'].forEach((function(element) {\n fabric.util.cleanUpJsdomNode(this[element]);\n this[element] = undefined;\n }).bind(this));\n },\n\n /**\n * Get the crossOrigin value (of the corresponding image element)\n */\n getCrossOrigin: function() {\n return this._originalElement && (this._originalElement.crossOrigin || null);\n },\n\n /**\n * Returns original size of an image\n * @return {Object} Object with \"width\" and \"height\" properties\n */\n getOriginalSize: function() {\n var element = this.getElement();\n return {\n width: element.naturalWidth || element.width,\n height: element.naturalHeight || element.height\n };\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _stroke: function(ctx) {\n if (!this.stroke || this.strokeWidth === 0) {\n return;\n }\n var w = this.width / 2, h = this.height / 2;\n ctx.beginPath();\n ctx.moveTo(-w, -h);\n ctx.lineTo(w, -h);\n ctx.lineTo(w, h);\n ctx.lineTo(-w, h);\n ctx.lineTo(-w, -h);\n ctx.closePath();\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var filters = [];\n\n this.filters.forEach(function(filterObj) {\n if (filterObj) {\n filters.push(filterObj.toObject());\n }\n });\n var object = extend(\n this.callSuper(\n 'toObject',\n ['cropX', 'cropY'].concat(propertiesToInclude)\n ), {\n src: this.getSrc(),\n crossOrigin: this.getCrossOrigin(),\n filters: filters,\n });\n if (this.resizeFilter) {\n object.resizeFilter = this.resizeFilter.toObject();\n }\n return object;\n },\n\n /**\n * Returns true if an image has crop applied, inspecting values of cropX,cropY,width,height.\n * @return {Boolean}\n */\n hasCrop: function() {\n return this.cropX || this.cropY || this.width < this._element.width || this.height < this._element.height;\n },\n\n /* _TO_SVG_START_ */\n /**\n * Returns svg representation of an instance\n * @return {Array} an array of strings with the specific svg representation\n * of the instance\n */\n _toSVG: function() {\n var svgString = [], imageMarkup = [], strokeSvg, element = this._element,\n x = -this.width / 2, y = -this.height / 2, clipPath = '', imageRendering = '';\n if (!element) {\n return [];\n }\n if (this.hasCrop()) {\n var clipPathId = fabric.Object.__uid++;\n svgString.push(\n '\\n',\n '\\t\\n',\n '\\n'\n );\n clipPath = ' clip-path=\"url(#imageCrop_' + clipPathId + ')\" ';\n }\n if (!this.imageSmoothing) {\n imageRendering = '\" image-rendering=\"optimizeSpeed';\n }\n imageMarkup.push('\\t element with actual transformation, then offsetting object to the top/left\n // so that object's center aligns with container's left/top\n '\" width=\"', element.width || element.naturalWidth,\n '\" height=\"', element.height || element.height,\n imageRendering,\n '\"', clipPath,\n '>\\n');\n\n if (this.stroke || this.strokeDashArray) {\n var origFill = this.fill;\n this.fill = null;\n strokeSvg = [\n '\\t\\n'\n ];\n this.fill = origFill;\n }\n if (this.paintFirst !== 'fill') {\n svgString = svgString.concat(strokeSvg, imageMarkup);\n }\n else {\n svgString = svgString.concat(imageMarkup, strokeSvg);\n }\n return svgString;\n },\n /* _TO_SVG_END_ */\n\n /**\n * Returns source of an image\n * @param {Boolean} filtered indicates if the src is needed for svg\n * @return {String} Source of an image\n */\n getSrc: function(filtered) {\n var element = filtered ? this._element : this._originalElement;\n if (element) {\n if (element.toDataURL) {\n return element.toDataURL();\n }\n\n if (this.srcFromAttribute) {\n return element.getAttribute('src');\n }\n else {\n return element.src;\n }\n }\n else {\n return this.src || '';\n }\n },\n\n /**\n * Sets source of an image\n * @param {String} src Source string (URL)\n * @param {Function} [callback] Callback is invoked when image has been loaded (and all filters have been applied)\n * @param {Object} [options] Options object\n * @param {String} [options.crossOrigin] crossOrigin value (one of \"\", \"anonymous\", \"use-credentials\")\n * @see https://developer.mozilla.org/en-US/docs/HTML/CORS_settings_attributes\n * @return {fabric.Image} thisArg\n * @chainable\n */\n setSrc: function(src, callback, options) {\n fabric.util.loadImage(src, function(img, isError) {\n this.setElement(img, options);\n this._setWidthHeight();\n callback && callback(this, isError);\n }, this, options && options.crossOrigin);\n return this;\n },\n\n /**\n * Returns string representation of an instance\n * @return {String} String representation of an instance\n */\n toString: function() {\n return '#';\n },\n\n applyResizeFilters: function() {\n var filter = this.resizeFilter,\n minimumScale = this.minimumScaleTrigger,\n objectScale = this.getTotalObjectScaling(),\n scaleX = objectScale.scaleX,\n scaleY = objectScale.scaleY,\n elementToFilter = this._filteredEl || this._originalElement;\n if (this.group) {\n this.set('dirty', true);\n }\n if (!filter || (scaleX > minimumScale && scaleY > minimumScale)) {\n this._element = elementToFilter;\n this._filterScalingX = 1;\n this._filterScalingY = 1;\n this._lastScaleX = scaleX;\n this._lastScaleY = scaleY;\n return;\n }\n if (!fabric.filterBackend) {\n fabric.filterBackend = fabric.initFilterBackend();\n }\n var canvasEl = fabric.util.createCanvasElement(),\n cacheKey = this._filteredEl ? (this.cacheKey + '_filtered') : this.cacheKey,\n sourceWidth = elementToFilter.width, sourceHeight = elementToFilter.height;\n canvasEl.width = sourceWidth;\n canvasEl.height = sourceHeight;\n this._element = canvasEl;\n this._lastScaleX = filter.scaleX = scaleX;\n this._lastScaleY = filter.scaleY = scaleY;\n fabric.filterBackend.applyFilters(\n [filter], elementToFilter, sourceWidth, sourceHeight, this._element, cacheKey);\n this._filterScalingX = canvasEl.width / this._originalElement.width;\n this._filterScalingY = canvasEl.height / this._originalElement.height;\n },\n\n /**\n * Applies filters assigned to this image (from \"filters\" array) or from filter param\n * @method applyFilters\n * @param {Array} filters to be applied\n * @param {Boolean} forResizing specify if the filter operation is a resize operation\n * @return {thisArg} return the fabric.Image object\n * @chainable\n */\n applyFilters: function(filters) {\n\n filters = filters || this.filters || [];\n filters = filters.filter(function(filter) { return filter && !filter.isNeutralState(); });\n this.set('dirty', true);\n\n // needs to clear out or WEBGL will not resize correctly\n this.removeTexture(this.cacheKey + '_filtered');\n\n if (filters.length === 0) {\n this._element = this._originalElement;\n this._filteredEl = null;\n this._filterScalingX = 1;\n this._filterScalingY = 1;\n return this;\n }\n\n var imgElement = this._originalElement,\n sourceWidth = imgElement.naturalWidth || imgElement.width,\n sourceHeight = imgElement.naturalHeight || imgElement.height;\n\n if (this._element === this._originalElement) {\n // if the element is the same we need to create a new element\n var canvasEl = fabric.util.createCanvasElement();\n canvasEl.width = sourceWidth;\n canvasEl.height = sourceHeight;\n this._element = canvasEl;\n this._filteredEl = canvasEl;\n }\n else {\n // clear the existing element to get new filter data\n // also dereference the eventual resized _element\n this._element = this._filteredEl;\n this._filteredEl.getContext('2d').clearRect(0, 0, sourceWidth, sourceHeight);\n // we also need to resize again at next renderAll, so remove saved _lastScaleX/Y\n this._lastScaleX = 1;\n this._lastScaleY = 1;\n }\n if (!fabric.filterBackend) {\n fabric.filterBackend = fabric.initFilterBackend();\n }\n fabric.filterBackend.applyFilters(\n filters, this._originalElement, sourceWidth, sourceHeight, this._element, this.cacheKey);\n if (this._originalElement.width !== this._element.width ||\n this._originalElement.height !== this._element.height) {\n this._filterScalingX = this._element.width / this._originalElement.width;\n this._filterScalingY = this._element.height / this._originalElement.height;\n }\n return this;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n fabric.util.setImageSmoothing(ctx, this.imageSmoothing);\n if (this.isMoving !== true && this.resizeFilter && this._needsResize()) {\n this.applyResizeFilters();\n }\n this._stroke(ctx);\n this._renderPaintInOrder(ctx);\n },\n\n /**\n * Paint the cached copy of the object on the target context.\n * it will set the imageSmoothing for the draw operation\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n drawCacheOnCanvas: function(ctx) {\n fabric.util.setImageSmoothing(ctx, this.imageSmoothing);\n fabric.Object.prototype.drawCacheOnCanvas.call(this, ctx);\n },\n\n /**\n * Decide if the object should cache or not. Create its own cache level\n * needsItsOwnCache should be used when the object drawing method requires\n * a cache step. None of the fabric classes requires it.\n * Generally you do not cache objects in groups because the group outside is cached.\n * This is the special image version where we would like to avoid caching where possible.\n * Essentially images do not benefit from caching. They may require caching, and in that\n * case we do it. Also caching an image usually ends in a loss of details.\n * A full performance audit should be done.\n * @return {Boolean}\n */\n shouldCache: function() {\n return this.needsItsOwnCache();\n },\n\n _renderFill: function(ctx) {\n var elementToDraw = this._element;\n if (!elementToDraw) {\n return;\n }\n var scaleX = this._filterScalingX, scaleY = this._filterScalingY,\n w = this.width, h = this.height, min = Math.min, max = Math.max,\n // crop values cannot be lesser than 0.\n cropX = max(this.cropX, 0), cropY = max(this.cropY, 0),\n elWidth = elementToDraw.naturalWidth || elementToDraw.width,\n elHeight = elementToDraw.naturalHeight || elementToDraw.height,\n sX = cropX * scaleX,\n sY = cropY * scaleY,\n // the width height cannot exceed element width/height, starting from the crop offset.\n sW = min(w * scaleX, elWidth - sX),\n sH = min(h * scaleY, elHeight - sY),\n x = -w / 2, y = -h / 2,\n maxDestW = min(w, elWidth / scaleX - cropX),\n maxDestH = min(h, elHeight / scaleY - cropY);\n\n elementToDraw && ctx.drawImage(elementToDraw, sX, sY, sW, sH, x, y, maxDestW, maxDestH);\n },\n\n /**\n * needed to check if image needs resize\n * @private\n */\n _needsResize: function() {\n var scale = this.getTotalObjectScaling();\n return (scale.scaleX !== this._lastScaleX || scale.scaleY !== this._lastScaleY);\n },\n\n /**\n * @private\n */\n _resetWidthHeight: function() {\n this.set(this.getOriginalSize());\n },\n\n /**\n * The Image class's initialization method. This method is automatically\n * called by the constructor.\n * @private\n * @param {HTMLImageElement|String} element The element representing the image\n * @param {Object} [options] Options object\n */\n _initElement: function(element, options) {\n this.setElement(fabric.util.getById(element), options);\n fabric.util.addClass(this.getElement(), fabric.Image.CSS_CANVAS);\n },\n\n /**\n * @private\n * @param {Object} [options] Options object\n */\n _initConfig: function(options) {\n options || (options = { });\n this.setOptions(options);\n this._setWidthHeight(options);\n },\n\n /**\n * @private\n * @param {Array} filters to be initialized\n * @param {Function} callback Callback to invoke when all fabric.Image.filters instances are created\n */\n _initFilters: function(filters, callback) {\n if (filters && filters.length) {\n fabric.util.enlivenObjects(filters, function(enlivenedObjects) {\n callback && callback(enlivenedObjects);\n }, 'fabric.Image.filters');\n }\n else {\n callback && callback();\n }\n },\n\n /**\n * @private\n * Set the width and the height of the image object, using the element or the\n * options.\n * @param {Object} [options] Object with width/height properties\n */\n _setWidthHeight: function(options) {\n options || (options = { });\n var el = this.getElement();\n this.width = options.width || el.naturalWidth || el.width || 0;\n this.height = options.height || el.naturalHeight || el.height || 0;\n },\n\n /**\n * Calculate offset for center and scale factor for the image in order to respect\n * the preserveAspectRatio attribute\n * @private\n * @return {Object}\n */\n parsePreserveAspectRatioAttribute: function() {\n var pAR = fabric.util.parsePreserveAspectRatioAttribute(this.preserveAspectRatio || ''),\n rWidth = this._element.width, rHeight = this._element.height,\n scaleX = 1, scaleY = 1, offsetLeft = 0, offsetTop = 0, cropX = 0, cropY = 0,\n offset, pWidth = this.width, pHeight = this.height, parsedAttributes = { width: pWidth, height: pHeight };\n if (pAR && (pAR.alignX !== 'none' || pAR.alignY !== 'none')) {\n if (pAR.meetOrSlice === 'meet') {\n scaleX = scaleY = fabric.util.findScaleToFit(this._element, parsedAttributes);\n offset = (pWidth - rWidth * scaleX) / 2;\n if (pAR.alignX === 'Min') {\n offsetLeft = -offset;\n }\n if (pAR.alignX === 'Max') {\n offsetLeft = offset;\n }\n offset = (pHeight - rHeight * scaleY) / 2;\n if (pAR.alignY === 'Min') {\n offsetTop = -offset;\n }\n if (pAR.alignY === 'Max') {\n offsetTop = offset;\n }\n }\n if (pAR.meetOrSlice === 'slice') {\n scaleX = scaleY = fabric.util.findScaleToCover(this._element, parsedAttributes);\n offset = rWidth - pWidth / scaleX;\n if (pAR.alignX === 'Mid') {\n cropX = offset / 2;\n }\n if (pAR.alignX === 'Max') {\n cropX = offset;\n }\n offset = rHeight - pHeight / scaleY;\n if (pAR.alignY === 'Mid') {\n cropY = offset / 2;\n }\n if (pAR.alignY === 'Max') {\n cropY = offset;\n }\n rWidth = pWidth / scaleX;\n rHeight = pHeight / scaleY;\n }\n }\n else {\n scaleX = pWidth / rWidth;\n scaleY = pHeight / rHeight;\n }\n return {\n width: rWidth,\n height: rHeight,\n scaleX: scaleX,\n scaleY: scaleY,\n offsetLeft: offsetLeft,\n offsetTop: offsetTop,\n cropX: cropX,\n cropY: cropY\n };\n }\n });\n\n /**\n * Default CSS class name for canvas\n * @static\n * @type String\n * @default\n */\n fabric.Image.CSS_CANVAS = 'canvas-img';\n\n /**\n * Alias for getSrc\n * @static\n */\n fabric.Image.prototype.getSvgSrc = fabric.Image.prototype.getSrc;\n\n /**\n * Creates an instance of fabric.Image from its object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} callback Callback to invoke when an image instance is created\n */\n fabric.Image.fromObject = function(_object, callback) {\n var object = fabric.util.object.clone(_object);\n fabric.util.loadImage(object.src, function(img, isError) {\n if (isError) {\n callback && callback(null, true);\n return;\n }\n fabric.Image.prototype._initFilters.call(object, object.filters, function(filters) {\n object.filters = filters || [];\n fabric.Image.prototype._initFilters.call(object, [object.resizeFilter], function(resizeFilters) {\n object.resizeFilter = resizeFilters[0];\n fabric.util.enlivenObjectEnlivables(object, object, function () {\n var image = new fabric.Image(img, object);\n callback(image, false);\n });\n });\n });\n }, null, object.crossOrigin);\n };\n\n /**\n * Creates an instance of fabric.Image from an URL string\n * @static\n * @param {String} url URL to create an image from\n * @param {Function} [callback] Callback to invoke when image is created (newly created image is passed as a first argument). Second argument is a boolean indicating if an error occurred or not.\n * @param {Object} [imgOptions] Options object\n */\n fabric.Image.fromURL = function(url, callback, imgOptions) {\n fabric.util.loadImage(url, function(img, isError) {\n callback && callback(new fabric.Image(img, imgOptions), isError);\n }, null, imgOptions && imgOptions.crossOrigin);\n };\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Image.fromElement})\n * @static\n * @see {@link http://www.w3.org/TR/SVG/struct.html#ImageElement}\n */\n fabric.Image.ATTRIBUTE_NAMES =\n fabric.SHARED_ATTRIBUTES.concat(\n 'x y width height preserveAspectRatio xlink:href crossOrigin image-rendering'.split(' ')\n );\n\n /**\n * Returns {@link fabric.Image} instance from an SVG element\n * @static\n * @param {SVGElement} element Element to parse\n * @param {Object} [options] Options object\n * @param {Function} callback Callback to execute when fabric.Image object is created\n * @return {fabric.Image} Instance of fabric.Image\n */\n fabric.Image.fromElement = function(element, callback, options) {\n var parsedAttributes = fabric.parseAttributes(element, fabric.Image.ATTRIBUTE_NAMES);\n fabric.Image.fromURL(parsedAttributes['xlink:href'], callback,\n extend((options ? fabric.util.object.clone(options) : { }), parsedAttributes));\n };\n /* _FROM_SVG_END_ */\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\nfabric.util.object.extend(fabric.Object.prototype, /** @lends fabric.Object.prototype */ {\n\n /**\n * @private\n * @return {Number} angle value\n */\n _getAngleValueForStraighten: function() {\n var angle = this.angle % 360;\n if (angle > 0) {\n return Math.round((angle - 1) / 90) * 90;\n }\n return Math.round(angle / 90) * 90;\n },\n\n /**\n * Straightens an object (rotating it from current angle to one of 0, 90, 180, 270, etc. depending on which is closer)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n straighten: function() {\n return this.rotate(this._getAngleValueForStraighten());\n },\n\n /**\n * Same as {@link fabric.Object.prototype.straighten} but with animation\n * @param {Object} callbacks Object with callback functions\n * @param {Function} [callbacks.onComplete] Invoked on completion\n * @param {Function} [callbacks.onChange] Invoked on every step of animation\n * @return {fabric.Object} thisArg\n */\n fxStraighten: function(callbacks) {\n callbacks = callbacks || { };\n\n var empty = function() { },\n onComplete = callbacks.onComplete || empty,\n onChange = callbacks.onChange || empty,\n _this = this;\n\n return fabric.util.animate({\n target: this,\n startValue: this.get('angle'),\n endValue: this._getAngleValueForStraighten(),\n duration: this.FX_DURATION,\n onChange: function(value) {\n _this.rotate(value);\n onChange();\n },\n onComplete: function() {\n _this.setCoords();\n onComplete();\n },\n });\n }\n});\n\nfabric.util.object.extend(fabric.StaticCanvas.prototype, /** @lends fabric.StaticCanvas.prototype */ {\n\n /**\n * Straightens object, then rerenders canvas\n * @param {fabric.Object} object Object to straighten\n * @return {fabric.Canvas} thisArg\n * @chainable\n */\n straightenObject: function (object) {\n object.straighten();\n this.requestRenderAll();\n return this;\n },\n\n /**\n * Same as {@link fabric.Canvas.prototype.straightenObject}, but animated\n * @param {fabric.Object} object Object to straighten\n * @return {fabric.Canvas} thisArg\n */\n fxStraightenObject: function (object) {\n return object.fxStraighten({\n onChange: this.requestRenderAllBound\n });\n }\n});\n\n\n(function() {\n\n 'use strict';\n\n /**\n * Tests if webgl supports certain precision\n * @param {WebGL} Canvas WebGL context to test on\n * @param {String} Precision to test can be any of following: 'lowp', 'mediump', 'highp'\n * @returns {Boolean} Whether the user's browser WebGL supports given precision.\n */\n function testPrecision(gl, precision){\n var fragmentSource = 'precision ' + precision + ' float;\\nvoid main(){}';\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentSource);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n return false;\n }\n return true;\n }\n\n /**\n * Indicate whether this filtering backend is supported by the user's browser.\n * @param {Number} tileSize check if the tileSize is supported\n * @returns {Boolean} Whether the user's browser supports WebGL.\n */\n fabric.isWebglSupported = function(tileSize) {\n if (fabric.isLikelyNode) {\n return false;\n }\n tileSize = tileSize || fabric.WebglFilterBackend.prototype.tileSize;\n var canvas = document.createElement('canvas');\n var gl = canvas.getContext('webgl') || canvas.getContext('experimental-webgl');\n var isSupported = false;\n // eslint-disable-next-line\n if (gl) {\n fabric.maxTextureSize = gl.getParameter(gl.MAX_TEXTURE_SIZE);\n isSupported = fabric.maxTextureSize >= tileSize;\n var precisions = ['highp', 'mediump', 'lowp'];\n for (var i = 0; i < 3; i++){\n if (testPrecision(gl, precisions[i])){\n fabric.webGlPrecision = precisions[i];\n break;\n };\n }\n }\n this.isSupported = isSupported;\n return isSupported;\n };\n\n fabric.WebglFilterBackend = WebglFilterBackend;\n\n /**\n * WebGL filter backend.\n */\n function WebglFilterBackend(options) {\n if (options && options.tileSize) {\n this.tileSize = options.tileSize;\n }\n this.setupGLContext(this.tileSize, this.tileSize);\n this.captureGPUInfo();\n };\n\n WebglFilterBackend.prototype = /** @lends fabric.WebglFilterBackend.prototype */ {\n\n tileSize: 2048,\n\n /**\n * Experimental. This object is a sort of repository of help layers used to avoid\n * of recreating them during frequent filtering. If you are previewing a filter with\n * a slider you probably do not want to create help layers every filter step.\n * in this object there will be appended some canvases, created once, resized sometimes\n * cleared never. Clearing is left to the developer.\n **/\n resources: {\n\n },\n\n /**\n * Setup a WebGL context suitable for filtering, and bind any needed event handlers.\n */\n setupGLContext: function(width, height) {\n this.dispose();\n this.createWebGLCanvas(width, height);\n // eslint-disable-next-line\n this.aPosition = new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]);\n this.chooseFastestCopyGLTo2DMethod(width, height);\n },\n\n /**\n * Pick a method to copy data from GL context to 2d canvas. In some browsers using\n * putImageData is faster than drawImage for that specific operation.\n */\n chooseFastestCopyGLTo2DMethod: function(width, height) {\n var canMeasurePerf = typeof window.performance !== 'undefined', canUseImageData;\n try {\n new ImageData(1, 1);\n canUseImageData = true;\n }\n catch (e) {\n canUseImageData = false;\n }\n // eslint-disable-next-line no-undef\n var canUseArrayBuffer = typeof ArrayBuffer !== 'undefined';\n // eslint-disable-next-line no-undef\n var canUseUint8Clamped = typeof Uint8ClampedArray !== 'undefined';\n\n if (!(canMeasurePerf && canUseImageData && canUseArrayBuffer && canUseUint8Clamped)) {\n return;\n }\n\n var targetCanvas = fabric.util.createCanvasElement();\n // eslint-disable-next-line no-undef\n var imageBuffer = new ArrayBuffer(width * height * 4);\n if (fabric.forceGLPutImageData) {\n this.imageBuffer = imageBuffer;\n this.copyGLTo2D = copyGLTo2DPutImageData;\n return;\n }\n var testContext = {\n imageBuffer: imageBuffer,\n destinationWidth: width,\n destinationHeight: height,\n targetCanvas: targetCanvas\n };\n var startTime, drawImageTime, putImageDataTime;\n targetCanvas.width = width;\n targetCanvas.height = height;\n\n startTime = window.performance.now();\n copyGLTo2DDrawImage.call(testContext, this.gl, testContext);\n drawImageTime = window.performance.now() - startTime;\n\n startTime = window.performance.now();\n copyGLTo2DPutImageData.call(testContext, this.gl, testContext);\n putImageDataTime = window.performance.now() - startTime;\n\n if (drawImageTime > putImageDataTime) {\n this.imageBuffer = imageBuffer;\n this.copyGLTo2D = copyGLTo2DPutImageData;\n }\n else {\n this.copyGLTo2D = copyGLTo2DDrawImage;\n }\n },\n\n /**\n * Create a canvas element and associated WebGL context and attaches them as\n * class properties to the GLFilterBackend class.\n */\n createWebGLCanvas: function(width, height) {\n var canvas = fabric.util.createCanvasElement();\n canvas.width = width;\n canvas.height = height;\n var glOptions = {\n alpha: true,\n premultipliedAlpha: false,\n depth: false,\n stencil: false,\n antialias: false\n },\n gl = canvas.getContext('webgl', glOptions);\n if (!gl) {\n gl = canvas.getContext('experimental-webgl', glOptions);\n }\n if (!gl) {\n return;\n }\n gl.clearColor(0, 0, 0, 0);\n // this canvas can fire webglcontextlost and webglcontextrestored\n this.canvas = canvas;\n this.gl = gl;\n },\n\n /**\n * Attempts to apply the requested filters to the source provided, drawing the filtered output\n * to the provided target canvas.\n *\n * @param {Array} filters The filters to apply.\n * @param {HTMLImageElement|HTMLCanvasElement} source The source to be filtered.\n * @param {Number} width The width of the source input.\n * @param {Number} height The height of the source input.\n * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.\n * @param {String|undefined} cacheKey A key used to cache resources related to the source. If\n * omitted, caching will be skipped.\n */\n applyFilters: function(filters, source, width, height, targetCanvas, cacheKey) {\n var gl = this.gl;\n var cachedTexture;\n if (cacheKey) {\n cachedTexture = this.getCachedTexture(cacheKey, source);\n }\n var pipelineState = {\n originalWidth: source.width || source.originalWidth,\n originalHeight: source.height || source.originalHeight,\n sourceWidth: width,\n sourceHeight: height,\n destinationWidth: width,\n destinationHeight: height,\n context: gl,\n sourceTexture: this.createTexture(gl, width, height, !cachedTexture && source),\n targetTexture: this.createTexture(gl, width, height),\n originalTexture: cachedTexture ||\n this.createTexture(gl, width, height, !cachedTexture && source),\n passes: filters.length,\n webgl: true,\n aPosition: this.aPosition,\n programCache: this.programCache,\n pass: 0,\n filterBackend: this,\n targetCanvas: targetCanvas\n };\n var tempFbo = gl.createFramebuffer();\n gl.bindFramebuffer(gl.FRAMEBUFFER, tempFbo);\n filters.forEach(function(filter) { filter && filter.applyTo(pipelineState); });\n resizeCanvasIfNeeded(pipelineState);\n this.copyGLTo2D(gl, pipelineState);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.deleteTexture(pipelineState.sourceTexture);\n gl.deleteTexture(pipelineState.targetTexture);\n gl.deleteFramebuffer(tempFbo);\n targetCanvas.getContext('2d').setTransform(1, 0, 0, 1, 0, 0);\n return pipelineState;\n },\n\n /**\n * Detach event listeners, remove references, and clean up caches.\n */\n dispose: function() {\n if (this.canvas) {\n this.canvas = null;\n this.gl = null;\n }\n this.clearWebGLCaches();\n },\n\n /**\n * Wipe out WebGL-related caches.\n */\n clearWebGLCaches: function() {\n this.programCache = {};\n this.textureCache = {};\n },\n\n /**\n * Create a WebGL texture object.\n *\n * Accepts specific dimensions to initialize the texture to or a source image.\n *\n * @param {WebGLRenderingContext} gl The GL context to use for creating the texture.\n * @param {Number} width The width to initialize the texture at.\n * @param {Number} height The height to initialize the texture.\n * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source for the texture data.\n * @returns {WebGLTexture}\n */\n createTexture: function(gl, width, height, textureImageSource) {\n var texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n if (textureImageSource) {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, textureImageSource);\n }\n else {\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, width, height, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);\n }\n return texture;\n },\n\n /**\n * Can be optionally used to get a texture from the cache array\n *\n * If an existing texture is not found, a new texture is created and cached.\n *\n * @param {String} uniqueId A cache key to use to find an existing texture.\n * @param {HTMLImageElement|HTMLCanvasElement} textureImageSource A source to use to create the\n * texture cache entry if one does not already exist.\n */\n getCachedTexture: function(uniqueId, textureImageSource) {\n if (this.textureCache[uniqueId]) {\n return this.textureCache[uniqueId];\n }\n else {\n var texture = this.createTexture(\n this.gl, textureImageSource.width, textureImageSource.height, textureImageSource);\n this.textureCache[uniqueId] = texture;\n return texture;\n }\n },\n\n /**\n * Clear out cached resources related to a source image that has been\n * filtered previously.\n *\n * @param {String} cacheKey The cache key provided when the source image was filtered.\n */\n evictCachesForKey: function(cacheKey) {\n if (this.textureCache[cacheKey]) {\n this.gl.deleteTexture(this.textureCache[cacheKey]);\n delete this.textureCache[cacheKey];\n }\n },\n\n copyGLTo2D: copyGLTo2DDrawImage,\n\n /**\n * Attempt to extract GPU information strings from a WebGL context.\n *\n * Useful information when debugging or blacklisting specific GPUs.\n *\n * @returns {Object} A GPU info object with renderer and vendor strings.\n */\n captureGPUInfo: function() {\n if (this.gpuInfo) {\n return this.gpuInfo;\n }\n var gl = this.gl, gpuInfo = { renderer: '', vendor: '' };\n if (!gl) {\n return gpuInfo;\n }\n var ext = gl.getExtension('WEBGL_debug_renderer_info');\n if (ext) {\n var renderer = gl.getParameter(ext.UNMASKED_RENDERER_WEBGL);\n var vendor = gl.getParameter(ext.UNMASKED_VENDOR_WEBGL);\n if (renderer) {\n gpuInfo.renderer = renderer.toLowerCase();\n }\n if (vendor) {\n gpuInfo.vendor = vendor.toLowerCase();\n }\n }\n this.gpuInfo = gpuInfo;\n return gpuInfo;\n },\n };\n})();\n\nfunction resizeCanvasIfNeeded(pipelineState) {\n var targetCanvas = pipelineState.targetCanvas,\n width = targetCanvas.width, height = targetCanvas.height,\n dWidth = pipelineState.destinationWidth,\n dHeight = pipelineState.destinationHeight;\n\n if (width !== dWidth || height !== dHeight) {\n targetCanvas.width = dWidth;\n targetCanvas.height = dHeight;\n }\n}\n\n/**\n * Copy an input WebGL canvas on to an output 2D canvas.\n *\n * The WebGL canvas is assumed to be upside down, with the top-left pixel of the\n * desired output image appearing in the bottom-left corner of the WebGL canvas.\n *\n * @param {WebGLRenderingContext} sourceContext The WebGL context to copy from.\n * @param {HTMLCanvasElement} targetCanvas The 2D target canvas to copy on to.\n * @param {Object} pipelineState The 2D target canvas to copy on to.\n */\nfunction copyGLTo2DDrawImage(gl, pipelineState) {\n var glCanvas = gl.canvas, targetCanvas = pipelineState.targetCanvas,\n ctx = targetCanvas.getContext('2d');\n ctx.translate(0, targetCanvas.height); // move it down again\n ctx.scale(1, -1); // vertical flip\n // where is my image on the big glcanvas?\n var sourceY = glCanvas.height - targetCanvas.height;\n ctx.drawImage(glCanvas, 0, sourceY, targetCanvas.width, targetCanvas.height, 0, 0,\n targetCanvas.width, targetCanvas.height);\n}\n\n/**\n * Copy an input WebGL canvas on to an output 2D canvas using 2d canvas' putImageData\n * API. Measurably faster than using ctx.drawImage in Firefox (version 54 on OSX Sierra).\n *\n * @param {WebGLRenderingContext} sourceContext The WebGL context to copy from.\n * @param {HTMLCanvasElement} targetCanvas The 2D target canvas to copy on to.\n * @param {Object} pipelineState The 2D target canvas to copy on to.\n */\nfunction copyGLTo2DPutImageData(gl, pipelineState) {\n var targetCanvas = pipelineState.targetCanvas, ctx = targetCanvas.getContext('2d'),\n dWidth = pipelineState.destinationWidth,\n dHeight = pipelineState.destinationHeight,\n numBytes = dWidth * dHeight * 4;\n\n // eslint-disable-next-line no-undef\n var u8 = new Uint8Array(this.imageBuffer, 0, numBytes);\n // eslint-disable-next-line no-undef\n var u8Clamped = new Uint8ClampedArray(this.imageBuffer, 0, numBytes);\n\n gl.readPixels(0, 0, dWidth, dHeight, gl.RGBA, gl.UNSIGNED_BYTE, u8);\n var imgData = new ImageData(u8Clamped, dWidth, dHeight);\n ctx.putImageData(imgData, 0, 0);\n}\n\n\n(function() {\n\n 'use strict';\n\n var noop = function() {};\n\n fabric.Canvas2dFilterBackend = Canvas2dFilterBackend;\n\n /**\n * Canvas 2D filter backend.\n */\n function Canvas2dFilterBackend() {};\n\n Canvas2dFilterBackend.prototype = /** @lends fabric.Canvas2dFilterBackend.prototype */ {\n evictCachesForKey: noop,\n dispose: noop,\n clearWebGLCaches: noop,\n\n /**\n * Experimental. This object is a sort of repository of help layers used to avoid\n * of recreating them during frequent filtering. If you are previewing a filter with\n * a slider you probably do not want to create help layers every filter step.\n * in this object there will be appended some canvases, created once, resized sometimes\n * cleared never. Clearing is left to the developer.\n **/\n resources: {\n\n },\n\n /**\n * Apply a set of filters against a source image and draw the filtered output\n * to the provided destination canvas.\n *\n * @param {EnhancedFilter} filters The filter to apply.\n * @param {HTMLImageElement|HTMLCanvasElement} sourceElement The source to be filtered.\n * @param {Number} sourceWidth The width of the source input.\n * @param {Number} sourceHeight The height of the source input.\n * @param {HTMLCanvasElement} targetCanvas The destination for filtered output to be drawn.\n */\n applyFilters: function(filters, sourceElement, sourceWidth, sourceHeight, targetCanvas) {\n var ctx = targetCanvas.getContext('2d');\n ctx.drawImage(sourceElement, 0, 0, sourceWidth, sourceHeight);\n var imageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n var originalImageData = ctx.getImageData(0, 0, sourceWidth, sourceHeight);\n var pipelineState = {\n sourceWidth: sourceWidth,\n sourceHeight: sourceHeight,\n imageData: imageData,\n originalEl: sourceElement,\n originalImageData: originalImageData,\n canvasEl: targetCanvas,\n ctx: ctx,\n filterBackend: this,\n };\n filters.forEach(function(filter) { filter.applyTo(pipelineState); });\n if (pipelineState.imageData.width !== sourceWidth || pipelineState.imageData.height !== sourceHeight) {\n targetCanvas.width = pipelineState.imageData.width;\n targetCanvas.height = pipelineState.imageData.height;\n }\n ctx.putImageData(pipelineState.imageData, 0, 0);\n return pipelineState;\n },\n\n };\n})();\n\n\n/**\n * @namespace fabric.Image.filters\n * @memberOf fabric.Image\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#image_filters}\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n */\nfabric.Image = fabric.Image || { };\nfabric.Image.filters = fabric.Image.filters || { };\n\n/**\n * Root filter class from which all filter classes inherit from\n * @class fabric.Image.filters.BaseFilter\n * @memberOf fabric.Image.filters\n */\nfabric.Image.filters.BaseFilter = fabric.util.createClass(/** @lends fabric.Image.filters.BaseFilter.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'BaseFilter',\n\n /**\n * Array of attributes to send with buffers. do not modify\n * @private\n */\n\n vertexSource: 'attribute vec2 aPosition;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vTexCoord = aPosition;\\n' +\n 'gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\\n' +\n '}',\n\n fragmentSource: 'precision highp float;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'void main() {\\n' +\n 'gl_FragColor = texture2D(uTexture, vTexCoord);\\n' +\n '}',\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n if (options) {\n this.setOptions(options);\n }\n },\n\n /**\n * Sets filter's properties from options\n * @param {Object} [options] Options object\n */\n setOptions: function(options) {\n for (var prop in options) {\n this[prop] = options[prop];\n }\n },\n\n /**\n * Compile this filter's shader program.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context to use for shader compilation.\n * @param {String} fragmentSource fragmentShader source for compilation\n * @param {String} vertexSource vertexShader source for compilation\n */\n createProgram: function(gl, fragmentSource, vertexSource) {\n fragmentSource = fragmentSource || this.fragmentSource;\n vertexSource = vertexSource || this.vertexSource;\n if (fabric.webGlPrecision !== 'highp'){\n fragmentSource = fragmentSource.replace(\n /precision highp float/g,\n 'precision ' + fabric.webGlPrecision + ' float'\n );\n }\n var vertexShader = gl.createShader(gl.VERTEX_SHADER);\n gl.shaderSource(vertexShader, vertexSource);\n gl.compileShader(vertexShader);\n if (!gl.getShaderParameter(vertexShader, gl.COMPILE_STATUS)) {\n throw new Error(\n // eslint-disable-next-line prefer-template\n 'Vertex shader compile error for ' + this.type + ': ' +\n gl.getShaderInfoLog(vertexShader)\n );\n }\n\n var fragmentShader = gl.createShader(gl.FRAGMENT_SHADER);\n gl.shaderSource(fragmentShader, fragmentSource);\n gl.compileShader(fragmentShader);\n if (!gl.getShaderParameter(fragmentShader, gl.COMPILE_STATUS)) {\n throw new Error(\n // eslint-disable-next-line prefer-template\n 'Fragment shader compile error for ' + this.type + ': ' +\n gl.getShaderInfoLog(fragmentShader)\n );\n }\n\n var program = gl.createProgram();\n gl.attachShader(program, vertexShader);\n gl.attachShader(program, fragmentShader);\n gl.linkProgram(program);\n if (!gl.getProgramParameter(program, gl.LINK_STATUS)) {\n throw new Error(\n // eslint-disable-next-line prefer-template\n 'Shader link error for \"${this.type}\" ' +\n gl.getProgramInfoLog(program)\n );\n }\n\n var attributeLocations = this.getAttributeLocations(gl, program);\n var uniformLocations = this.getUniformLocations(gl, program) || { };\n uniformLocations.uStepW = gl.getUniformLocation(program, 'uStepW');\n uniformLocations.uStepH = gl.getUniformLocation(program, 'uStepH');\n return {\n program: program,\n attributeLocations: attributeLocations,\n uniformLocations: uniformLocations\n };\n },\n\n /**\n * Return a map of attribute names to WebGLAttributeLocation objects.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {WebGLShaderProgram} program The shader program from which to take attribute locations.\n * @returns {Object} A map of attribute names to attribute locations.\n */\n getAttributeLocations: function(gl, program) {\n return {\n aPosition: gl.getAttribLocation(program, 'aPosition'),\n };\n },\n\n /**\n * Return a map of uniform names to WebGLUniformLocation objects.\n *\n * Intended to be overridden by subclasses.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {WebGLShaderProgram} program The shader program from which to take uniform locations.\n * @returns {Object} A map of uniform names to uniform locations.\n */\n getUniformLocations: function (/* gl, program */) {\n // in case i do not need any special uniform i need to return an empty object\n return { };\n },\n\n /**\n * Send attribute data from this filter to its shader program on the GPU.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {Object} attributeLocations A map of shader attribute names to their locations.\n */\n sendAttributeData: function(gl, attributeLocations, aPositionData) {\n var attributeLocation = attributeLocations.aPosition;\n var buffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, buffer);\n gl.enableVertexAttribArray(attributeLocation);\n gl.vertexAttribPointer(attributeLocation, 2, gl.FLOAT, false, 0, 0);\n gl.bufferData(gl.ARRAY_BUFFER, aPositionData, gl.STATIC_DRAW);\n },\n\n _setupFrameBuffer: function(options) {\n var gl = options.context, width, height;\n if (options.passes > 1) {\n width = options.destinationWidth;\n height = options.destinationHeight;\n if (options.sourceWidth !== width || options.sourceHeight !== height) {\n gl.deleteTexture(options.targetTexture);\n options.targetTexture = options.filterBackend.createTexture(gl, width, height);\n }\n gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D,\n options.targetTexture, 0);\n }\n else {\n // draw last filter on canvas and not to framebuffer.\n gl.bindFramebuffer(gl.FRAMEBUFFER, null);\n gl.finish();\n }\n },\n\n _swapTextures: function(options) {\n options.passes--;\n options.pass++;\n var temp = options.targetTexture;\n options.targetTexture = options.sourceTexture;\n options.sourceTexture = temp;\n },\n\n /**\n * Generic isNeutral implementation for one parameter based filters.\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * Other filters may need their own version ( ColorMatrix, HueRotation, gamma, ComposedFilter )\n * @param {Object} options\n **/\n isNeutralState: function(/* options */) {\n var main = this.mainParameter,\n _class = fabric.Image.filters[this.type].prototype;\n if (main) {\n if (Array.isArray(_class[main])) {\n for (var i = _class[main].length; i--;) {\n if (this[main][i] !== _class[main][i]) {\n return false;\n }\n }\n return true;\n }\n else {\n return _class[main] === this[main];\n }\n }\n else {\n return false;\n }\n },\n\n /**\n * Apply this filter to the input image data provided.\n *\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo: function(options) {\n if (options.webgl) {\n this._setupFrameBuffer(options);\n this.applyToWebGL(options);\n this._swapTextures(options);\n }\n else {\n this.applyTo2d(options);\n }\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n if (!options.programCache.hasOwnProperty(this.type)) {\n options.programCache[this.type] = this.createProgram(options.context);\n }\n return options.programCache[this.type];\n },\n\n /**\n * Apply this filter using webgl.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.originalTexture The texture of the original input image.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyToWebGL: function(options) {\n var gl = options.context;\n var shader = this.retrieveShader(options);\n if (options.pass === 0 && options.originalTexture) {\n gl.bindTexture(gl.TEXTURE_2D, options.originalTexture);\n }\n else {\n gl.bindTexture(gl.TEXTURE_2D, options.sourceTexture);\n }\n gl.useProgram(shader.program);\n this.sendAttributeData(gl, shader.attributeLocations, options.aPosition);\n\n gl.uniform1f(shader.uniformLocations.uStepW, 1 / options.sourceWidth);\n gl.uniform1f(shader.uniformLocations.uStepH, 1 / options.sourceHeight);\n\n this.sendUniformData(gl, shader.uniformLocations);\n gl.viewport(0, 0, options.destinationWidth, options.destinationHeight);\n gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\n },\n\n bindAdditionalTexture: function(gl, texture, textureUnit) {\n gl.activeTexture(textureUnit);\n gl.bindTexture(gl.TEXTURE_2D, texture);\n // reset active texture to 0 as usual\n gl.activeTexture(gl.TEXTURE0);\n },\n\n unbindAdditionalTexture: function(gl, textureUnit) {\n gl.activeTexture(textureUnit);\n gl.bindTexture(gl.TEXTURE_2D, null);\n gl.activeTexture(gl.TEXTURE0);\n },\n\n getMainParameter: function() {\n return this[this.mainParameter];\n },\n\n setMainParameter: function(value) {\n this[this.mainParameter] = value;\n },\n\n /**\n * Send uniform data from this filter to its shader program on the GPU.\n *\n * Intended to be overridden by subclasses.\n *\n * @param {WebGLRenderingContext} gl The canvas context used to compile the shader program.\n * @param {Object} uniformLocations A map of shader uniform names to their locations.\n */\n sendUniformData: function(/* gl, uniformLocations */) {\n // Intentionally left blank. Override me in subclasses.\n },\n\n /**\n * If needed by a 2d filter, this functions can create an helper canvas to be used\n * remember that options.targetCanvas is available for use till end of chain.\n */\n createHelpLayer: function(options) {\n if (!options.helpLayer) {\n var helpLayer = document.createElement('canvas');\n helpLayer.width = options.sourceWidth;\n helpLayer.height = options.sourceHeight;\n options.helpLayer = helpLayer;\n }\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n var object = { type: this.type }, mainP = this.mainParameter;\n if (mainP) {\n object[mainP] = this[mainP];\n }\n return object;\n },\n\n /**\n * Returns a JSON representation of an instance\n * @return {Object} JSON\n */\n toJSON: function() {\n // delegate, not alias\n return this.toObject();\n }\n});\n\nfabric.Image.filters.BaseFilter.fromObject = function(object, callback) {\n var filter = new fabric.Image.filters[object.type](object);\n callback && callback(filter);\n return filter;\n};\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Color Matrix filter class\n * @class fabric.Image.filters.ColorMatrix\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.ColorMatrix#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @see {@Link http://www.webwasp.co.uk/tutorials/219/Color_Matrix_Filter.php}\n * @see {@Link http://phoboslab.org/log/2013/11/fast-image-filters-with-webgl}\n * @example Kodachrome filter\n * var filter = new fabric.Image.filters.ColorMatrix({\n * matrix: [\n 1.1285582396593525, -0.3967382283601348, -0.03992559172921793, 0, 63.72958762196502,\n -0.16404339962244616, 1.0835251566291304, -0.05498805115633132, 0, 24.732407896706203,\n -0.16786010706155763, -0.5603416277695248, 1.6014850761964943, 0, 35.62982807460946,\n 0, 0, 0, 1, 0\n ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.ColorMatrix = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.ColorMatrix.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'ColorMatrix',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'uniform mat4 uColorMatrix;\\n' +\n 'uniform vec4 uConstants;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'color *= uColorMatrix;\\n' +\n 'color += uConstants;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Colormatrix for pixels.\n * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning\n * outside the -1, 1 range.\n * 0.0039215686 is the part of 1 that get translated to 1 in 2d\n * @param {Array} matrix array of 20 numbers.\n * @default\n */\n matrix: [\n 1, 0, 0, 0, 0,\n 0, 1, 0, 0, 0,\n 0, 0, 1, 0, 0,\n 0, 0, 0, 1, 0\n ],\n\n mainParameter: 'matrix',\n\n /**\n * Lock the colormatrix on the color part, skipping alpha, mainly for non webgl scenario\n * to save some calculation\n * @type Boolean\n * @default true\n */\n colorsOnly: true,\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n // create a new array instead mutating the prototype with push\n this.matrix = this.matrix.slice(0);\n },\n\n /**\n * Apply the ColorMatrix operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data,\n iLen = data.length,\n m = this.matrix,\n r, g, b, a, i, colorsOnly = this.colorsOnly;\n\n for (i = 0; i < iLen; i += 4) {\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n if (colorsOnly) {\n data[i] = r * m[0] + g * m[1] + b * m[2] + m[4] * 255;\n data[i + 1] = r * m[5] + g * m[6] + b * m[7] + m[9] * 255;\n data[i + 2] = r * m[10] + g * m[11] + b * m[12] + m[14] * 255;\n }\n else {\n a = data[i + 3];\n data[i] = r * m[0] + g * m[1] + b * m[2] + a * m[3] + m[4] * 255;\n data[i + 1] = r * m[5] + g * m[6] + b * m[7] + a * m[8] + m[9] * 255;\n data[i + 2] = r * m[10] + g * m[11] + b * m[12] + a * m[13] + m[14] * 255;\n data[i + 3] = r * m[15] + g * m[16] + b * m[17] + a * m[18] + m[19] * 255;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uColorMatrix: gl.getUniformLocation(program, 'uColorMatrix'),\n uConstants: gl.getUniformLocation(program, 'uConstants'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var m = this.matrix,\n matrix = [\n m[0], m[1], m[2], m[3],\n m[5], m[6], m[7], m[8],\n m[10], m[11], m[12], m[13],\n m[15], m[16], m[17], m[18]\n ],\n constants = [m[4], m[9], m[14], m[19]];\n gl.uniformMatrix4fv(uniformLocations.uColorMatrix, false, matrix);\n gl.uniform4fv(uniformLocations.uConstants, constants);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] function to invoke after filter creation\n * @return {fabric.Image.filters.ColorMatrix} Instance of fabric.Image.filters.ColorMatrix\n */\n fabric.Image.filters.ColorMatrix.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Brightness filter class\n * @class fabric.Image.filters.Brightness\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Brightness#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Brightness({\n * brightness: 0.05\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Brightness = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Brightness.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Brightness',\n\n /**\n * Fragment source for the brightness program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uBrightness;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'color.rgb += uBrightness;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Brightness value, from -1 to 1.\n * translated to -255 to 255 for 2d\n * 0.0039215686 is the part of 1 that get translated to 1 in 2d\n * @param {Number} brightness\n * @default\n */\n brightness: 0,\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'brightness',\n\n /**\n * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n if (this.brightness === 0) {\n return;\n }\n var imageData = options.imageData,\n data = imageData.data, i, len = data.length,\n brightness = Math.round(this.brightness * 255);\n for (i = 0; i < len; i += 4) {\n data[i] = data[i] + brightness;\n data[i + 1] = data[i + 1] + brightness;\n data[i + 2] = data[i + 2] + brightness;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uBrightness: gl.getUniformLocation(program, 'uBrightness'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uBrightness, this.brightness);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Brightness} Instance of fabric.Image.filters.Brightness\n */\n fabric.Image.filters.Brightness.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Adapted from html5rocks article\n * @class fabric.Image.filters.Convolute\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Convolute#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example Sharpen filter\n * var filter = new fabric.Image.filters.Convolute({\n * matrix: [ 0, -1, 0,\n * -1, 5, -1,\n * 0, -1, 0 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example Blur filter\n * var filter = new fabric.Image.filters.Convolute({\n * matrix: [ 1/9, 1/9, 1/9,\n * 1/9, 1/9, 1/9,\n * 1/9, 1/9, 1/9 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example Emboss filter\n * var filter = new fabric.Image.filters.Convolute({\n * matrix: [ 1, 1, 1,\n * 1, 0.7, -1,\n * -1, -1, -1 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n * @example Emboss filter with opaqueness\n * var filter = new fabric.Image.filters.Convolute({\n * opaque: true,\n * matrix: [ 1, 1, 1,\n * 1, 0.7, -1,\n * -1, -1, -1 ]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.Convolute = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Convolute.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Convolute',\n\n /*\n * Opaque value (true/false)\n */\n opaque: false,\n\n /*\n * matrix for the filter, max 9x9\n */\n matrix: [0, 0, 0, 0, 1, 0, 0, 0, 0],\n\n /**\n * Fragment source for the brightness program\n */\n fragmentSource: {\n Convolute_3_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[9];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 3.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 3.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 1), uStepH * (h - 1));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 3.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_3_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[9];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 3.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 3.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 1.0), uStepH * (h - 1.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 3.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n Convolute_5_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[25];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 5.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 5.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 5.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_5_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[25];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 5.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 5.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 2.0), uStepH * (h - 2.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 5.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n Convolute_7_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[49];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 7.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 7.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 7.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_7_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[49];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 7.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 7.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 3.0), uStepH * (h - 3.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 7.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n Convolute_9_1: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[81];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 0);\\n' +\n 'for (float h = 0.0; h < 9.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 9.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\\n' +\n 'color += texture2D(uTexture, vTexCoord + matrixPos) * uMatrix[int(h * 9.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n Convolute_9_0: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uMatrix[81];\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0, 0, 0, 1);\\n' +\n 'for (float h = 0.0; h < 9.0; h+=1.0) {\\n' +\n 'for (float w = 0.0; w < 9.0; w+=1.0) {\\n' +\n 'vec2 matrixPos = vec2(uStepW * (w - 4.0), uStepH * (h - 4.0));\\n' +\n 'color.rgb += texture2D(uTexture, vTexCoord + matrixPos).rgb * uMatrix[int(h * 9.0 + w)];\\n' +\n '}\\n' +\n '}\\n' +\n 'float alpha = texture2D(uTexture, vTexCoord).a;\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.a = alpha;\\n' +\n '}',\n },\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.Convolute.prototype\n * @param {Object} [options] Options object\n * @param {Boolean} [options.opaque=false] Opaque value (true/false)\n * @param {Array} [options.matrix] Filter matrix\n */\n\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var size = Math.sqrt(this.matrix.length);\n var cacheKey = this.type + '_' + size + '_' + (this.opaque ? 1 : 0);\n var shaderSource = this.fragmentSource[cacheKey];\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n /**\n * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data,\n weights = this.matrix,\n side = Math.round(Math.sqrt(weights.length)),\n halfSide = Math.floor(side / 2),\n sw = imageData.width,\n sh = imageData.height,\n output = options.ctx.createImageData(sw, sh),\n dst = output.data,\n // go through the destination image pixels\n alphaFac = this.opaque ? 1 : 0,\n r, g, b, a, dstOff,\n scx, scy, srcOff, wt,\n x, y, cx, cy;\n\n for (y = 0; y < sh; y++) {\n for (x = 0; x < sw; x++) {\n dstOff = (y * sw + x) * 4;\n // calculate the weighed sum of the source image pixels that\n // fall under the convolution matrix\n r = 0; g = 0; b = 0; a = 0;\n\n for (cy = 0; cy < side; cy++) {\n for (cx = 0; cx < side; cx++) {\n scy = y + cy - halfSide;\n scx = x + cx - halfSide;\n\n // eslint-disable-next-line max-depth\n if (scy < 0 || scy >= sh || scx < 0 || scx >= sw) {\n continue;\n }\n\n srcOff = (scy * sw + scx) * 4;\n wt = weights[cy * side + cx];\n\n r += data[srcOff] * wt;\n g += data[srcOff + 1] * wt;\n b += data[srcOff + 2] * wt;\n // eslint-disable-next-line max-depth\n if (!alphaFac) {\n a += data[srcOff + 3] * wt;\n }\n }\n }\n dst[dstOff] = r;\n dst[dstOff + 1] = g;\n dst[dstOff + 2] = b;\n if (!alphaFac) {\n dst[dstOff + 3] = a;\n }\n else {\n dst[dstOff + 3] = data[dstOff + 3];\n }\n }\n }\n options.imageData = output;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uMatrix: gl.getUniformLocation(program, 'uMatrix'),\n uOpaque: gl.getUniformLocation(program, 'uOpaque'),\n uHalfSize: gl.getUniformLocation(program, 'uHalfSize'),\n uSize: gl.getUniformLocation(program, 'uSize'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1fv(uniformLocations.uMatrix, this.matrix);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return extend(this.callSuper('toObject'), {\n opaque: this.opaque,\n matrix: this.matrix\n });\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Convolute} Instance of fabric.Image.filters.Convolute\n */\n fabric.Image.filters.Convolute.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Grayscale image filter class\n * @class fabric.Image.filters.Grayscale\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Grayscale();\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Grayscale = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Grayscale.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Grayscale',\n\n fragmentSource: {\n average: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'float average = (color.r + color.b + color.g) / 3.0;\\n' +\n 'gl_FragColor = vec4(average, average, average, color.a);\\n' +\n '}',\n lightness: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform int uMode;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 col = texture2D(uTexture, vTexCoord);\\n' +\n 'float average = (max(max(col.r, col.g),col.b) + min(min(col.r, col.g),col.b)) / 2.0;\\n' +\n 'gl_FragColor = vec4(average, average, average, col.a);\\n' +\n '}',\n luminosity: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform int uMode;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 col = texture2D(uTexture, vTexCoord);\\n' +\n 'float average = 0.21 * col.r + 0.72 * col.g + 0.07 * col.b;\\n' +\n 'gl_FragColor = vec4(average, average, average, col.a);\\n' +\n '}',\n },\n\n\n /**\n * Grayscale mode, between 'average', 'lightness', 'luminosity'\n * @param {String} type\n * @default\n */\n mode: 'average',\n\n mainParameter: 'mode',\n\n /**\n * Apply the Grayscale operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, i,\n len = data.length, value,\n mode = this.mode;\n for (i = 0; i < len; i += 4) {\n if (mode === 'average') {\n value = (data[i] + data[i + 1] + data[i + 2]) / 3;\n }\n else if (mode === 'lightness') {\n value = (Math.min(data[i], data[i + 1], data[i + 2]) +\n Math.max(data[i], data[i + 1], data[i + 2])) / 2;\n }\n else if (mode === 'luminosity') {\n value = 0.21 * data[i] + 0.72 * data[i + 1] + 0.07 * data[i + 2];\n }\n data[i] = value;\n data[i + 1] = value;\n data[i + 2] = value;\n }\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var cacheKey = this.type + '_' + this.mode;\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n var shaderSource = this.fragmentSource[this.mode];\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uMode: gl.getUniformLocation(program, 'uMode'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n // default average mode.\n var mode = 1;\n gl.uniform1i(uniformLocations.uMode, mode);\n },\n\n /**\n * Grayscale filter isNeutralState implementation\n * The filter is never neutral\n * on the image\n **/\n isNeutralState: function() {\n return false;\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Grayscale} Instance of fabric.Image.filters.Grayscale\n */\n fabric.Image.filters.Grayscale.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Invert filter class\n * @class fabric.Image.filters.Invert\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Invert();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\n filters.Invert = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Invert.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Invert',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform int uInvert;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'if (uInvert == 1) {\\n' +\n 'gl_FragColor = vec4(1.0 - color.r,1.0 -color.g,1.0 -color.b,color.a);\\n' +\n '} else {\\n' +\n 'gl_FragColor = color;\\n' +\n '}\\n' +\n '}',\n\n /**\n * Filter invert. if false, does nothing\n * @param {Boolean} invert\n * @default\n */\n invert: true,\n\n mainParameter: 'invert',\n\n /**\n * Apply the Invert operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, i,\n len = data.length;\n for (i = 0; i < len; i += 4) {\n data[i] = 255 - data[i];\n data[i + 1] = 255 - data[i + 1];\n data[i + 2] = 255 - data[i + 2];\n }\n },\n\n /**\n * Invert filter isNeutralState implementation\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * @param {Object} options\n **/\n isNeutralState: function() {\n return !this.invert;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uInvert: gl.getUniformLocation(program, 'uInvert'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1i(uniformLocations.uInvert, this.invert);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Invert} Instance of fabric.Image.filters.Invert\n */\n fabric.Image.filters.Invert.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Noise filter class\n * @class fabric.Image.filters.Noise\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Noise#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Noise({\n * noise: 700\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.Noise = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Noise.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Noise',\n\n /**\n * Fragment source for the noise program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uStepH;\\n' +\n 'uniform float uNoise;\\n' +\n 'uniform float uSeed;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'float rand(vec2 co, float seed, float vScale) {\\n' +\n 'return fract(sin(dot(co.xy * vScale ,vec2(12.9898 , 78.233))) * 43758.5453 * (seed + 0.01) / 2.0);\\n' +\n '}\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'color.rgb += (0.5 - rand(vTexCoord, uSeed, 0.1 / uStepH)) * uNoise;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'noise',\n\n /**\n * Noise value, from\n * @param {Number} noise\n * @default\n */\n noise: 0,\n\n /**\n * Apply the Brightness operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n if (this.noise === 0) {\n return;\n }\n var imageData = options.imageData,\n data = imageData.data, i, len = data.length,\n noise = this.noise, rand;\n\n for (i = 0, len = data.length; i < len; i += 4) {\n\n rand = (0.5 - Math.random()) * noise;\n\n data[i] += rand;\n data[i + 1] += rand;\n data[i + 2] += rand;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uNoise: gl.getUniformLocation(program, 'uNoise'),\n uSeed: gl.getUniformLocation(program, 'uSeed'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uNoise, this.noise / 255);\n gl.uniform1f(uniformLocations.uSeed, Math.random());\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return extend(this.callSuper('toObject'), {\n noise: this.noise\n });\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Noise} Instance of fabric.Image.filters.Noise\n */\n fabric.Image.filters.Noise.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Pixelate filter class\n * @class fabric.Image.filters.Pixelate\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Pixelate#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Pixelate({\n * blocksize: 8\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Pixelate = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Pixelate.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Pixelate',\n\n blocksize: 4,\n\n mainParameter: 'blocksize',\n\n /**\n * Fragment source for the Pixelate program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uBlocksize;\\n' +\n 'uniform float uStepW;\\n' +\n 'uniform float uStepH;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'float blockW = uBlocksize * uStepW;\\n' +\n 'float blockH = uBlocksize * uStepW;\\n' +\n 'int posX = int(vTexCoord.x / blockW);\\n' +\n 'int posY = int(vTexCoord.y / blockH);\\n' +\n 'float fposX = float(posX);\\n' +\n 'float fposY = float(posY);\\n' +\n 'vec2 squareCoords = vec2(fposX * blockW, fposY * blockH);\\n' +\n 'vec4 color = texture2D(uTexture, squareCoords);\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Apply the Pixelate operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data,\n iLen = imageData.height,\n jLen = imageData.width,\n index, i, j, r, g, b, a,\n _i, _j, _iLen, _jLen;\n\n for (i = 0; i < iLen; i += this.blocksize) {\n for (j = 0; j < jLen; j += this.blocksize) {\n\n index = (i * 4) * jLen + (j * 4);\n\n r = data[index];\n g = data[index + 1];\n b = data[index + 2];\n a = data[index + 3];\n\n _iLen = Math.min(i + this.blocksize, iLen);\n _jLen = Math.min(j + this.blocksize, jLen);\n for (_i = i; _i < _iLen; _i++) {\n for (_j = j; _j < _jLen; _j++) {\n index = (_i * 4) * jLen + (_j * 4);\n data[index] = r;\n data[index + 1] = g;\n data[index + 2] = b;\n data[index + 3] = a;\n }\n }\n }\n }\n },\n\n /**\n * Indicate when the filter is not gonna apply changes to the image\n **/\n isNeutralState: function() {\n return this.blocksize === 1;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uBlocksize: gl.getUniformLocation(program, 'uBlocksize'),\n uStepW: gl.getUniformLocation(program, 'uStepW'),\n uStepH: gl.getUniformLocation(program, 'uStepH'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uBlocksize, this.blocksize);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Pixelate} Instance of fabric.Image.filters.Pixelate\n */\n fabric.Image.filters.Pixelate.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n extend = fabric.util.object.extend,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Remove white filter class\n * @class fabric.Image.filters.RemoveColor\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.RemoveColor#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.RemoveColor({\n * threshold: 0.2,\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.RemoveColor = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.RemoveColor.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'RemoveColor',\n\n /**\n * Color to remove, in any format understood by fabric.Color.\n * @param {String} type\n * @default\n */\n color: '#FFFFFF',\n\n /**\n * Fragment source for the brightness program\n */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec4 uLow;\\n' +\n 'uniform vec4 uHigh;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'gl_FragColor = texture2D(uTexture, vTexCoord);\\n' +\n 'if(all(greaterThan(gl_FragColor.rgb,uLow.rgb)) && all(greaterThan(uHigh.rgb,gl_FragColor.rgb))) {\\n' +\n 'gl_FragColor.a = 0.0;\\n' +\n '}\\n' +\n '}',\n\n /**\n * distance to actual color, as value up or down from each r,g,b\n * between 0 and 1\n **/\n distance: 0.02,\n\n /**\n * For color to remove inside distance, use alpha channel for a smoother deletion\n * NOT IMPLEMENTED YET\n **/\n useAlpha: false,\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.RemoveWhite.prototype\n * @param {Object} [options] Options object\n * @param {Number} [options.color=#RRGGBB] Threshold value\n * @param {Number} [options.distance=10] Distance value\n */\n\n /**\n * Applies filter to canvas element\n * @param {Object} canvasEl Canvas element to apply filter to\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, i,\n distance = this.distance * 255,\n r, g, b,\n source = new fabric.Color(this.color).getSource(),\n lowC = [\n source[0] - distance,\n source[1] - distance,\n source[2] - distance,\n ],\n highC = [\n source[0] + distance,\n source[1] + distance,\n source[2] + distance,\n ];\n\n\n for (i = 0; i < data.length; i += 4) {\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n\n if (r > lowC[0] &&\n g > lowC[1] &&\n b > lowC[2] &&\n r < highC[0] &&\n g < highC[1] &&\n b < highC[2]) {\n data[i + 3] = 0;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uLow: gl.getUniformLocation(program, 'uLow'),\n uHigh: gl.getUniformLocation(program, 'uHigh'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var source = new fabric.Color(this.color).getSource(),\n distance = parseFloat(this.distance),\n lowC = [\n 0 + source[0] / 255 - distance,\n 0 + source[1] / 255 - distance,\n 0 + source[2] / 255 - distance,\n 1\n ],\n highC = [\n source[0] / 255 + distance,\n source[1] / 255 + distance,\n source[2] / 255 + distance,\n 1\n ];\n gl.uniform4fv(uniformLocations.uLow, lowC);\n gl.uniform4fv(uniformLocations.uHigh, highC);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return extend(this.callSuper('toObject'), {\n color: this.color,\n distance: this.distance\n });\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.RemoveColor} Instance of fabric.Image.filters.RemoveWhite\n */\n fabric.Image.filters.RemoveColor.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n var matrices = {\n Brownie: [\n 0.59970,0.34553,-0.27082,0,0.186,\n -0.03770,0.86095,0.15059,0,-0.1449,\n 0.24113,-0.07441,0.44972,0,-0.02965,\n 0,0,0,1,0\n ],\n Vintage: [\n 0.62793,0.32021,-0.03965,0,0.03784,\n 0.02578,0.64411,0.03259,0,0.02926,\n 0.04660,-0.08512,0.52416,0,0.02023,\n 0,0,0,1,0\n ],\n Kodachrome: [\n 1.12855,-0.39673,-0.03992,0,0.24991,\n -0.16404,1.08352,-0.05498,0,0.09698,\n -0.16786,-0.56034,1.60148,0,0.13972,\n 0,0,0,1,0\n ],\n Technicolor: [\n 1.91252,-0.85453,-0.09155,0,0.04624,\n -0.30878,1.76589,-0.10601,0,-0.27589,\n -0.23110,-0.75018,1.84759,0,0.12137,\n 0,0,0,1,0\n ],\n Polaroid: [\n 1.438,-0.062,-0.062,0,0,\n -0.122,1.378,-0.122,0,0,\n -0.016,-0.016,1.483,0,0,\n 0,0,0,1,0\n ],\n Sepia: [\n 0.393, 0.769, 0.189, 0, 0,\n 0.349, 0.686, 0.168, 0, 0,\n 0.272, 0.534, 0.131, 0, 0,\n 0, 0, 0, 1, 0\n ],\n BlackWhite: [\n 1.5, 1.5, 1.5, 0, -1,\n 1.5, 1.5, 1.5, 0, -1,\n 1.5, 1.5, 1.5, 0, -1,\n 0, 0, 0, 1, 0,\n ]\n };\n\n for (var key in matrices) {\n filters[key] = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.Sepia.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: key,\n\n /**\n * Colormatrix for the effect\n * array of 20 floats. Numbers in positions 4, 9, 14, 19 loose meaning\n * outside the -1, 1 range.\n * @param {Array} matrix array of 20 numbers.\n * @default\n */\n matrix: matrices[key],\n\n /**\n * Lock the matrix export for this kind of static, parameter less filters.\n */\n mainParameter: false,\n /**\n * Lock the colormatrix on the color part, skipping alpha\n */\n colorsOnly: true,\n\n });\n fabric.Image.filters[key].fromObject = fabric.Image.filters.BaseFilter.fromObject;\n }\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n 'use strict';\n\n var fabric = global.fabric,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Color Blend filter class\n * @class fabric.Image.filter.BlendColor\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @example\n * var filter = new fabric.Image.filters.BlendColor({\n * color: '#000',\n * mode: 'multiply'\n * });\n *\n * var filter = new fabric.Image.filters.BlendImage({\n * image: fabricImageObject,\n * mode: 'multiply',\n * alpha: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n\n filters.BlendColor = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blend.prototype */ {\n type: 'BlendColor',\n\n /**\n * Color to make the blend operation with. default to a reddish color since black or white\n * gives always strong result.\n * @type String\n * @default\n **/\n color: '#F95C63',\n\n /**\n * Blend mode for the filter: one of multiply, add, diff, screen, subtract,\n * darken, lighten, overlay, exclusion, tint.\n * @type String\n * @default\n **/\n mode: 'multiply',\n\n /**\n * alpha value. represent the strength of the blend color operation.\n * @type Number\n * @default\n **/\n alpha: 1,\n\n /**\n * Fragment source for the Multiply program\n */\n fragmentSource: {\n multiply: 'gl_FragColor.rgb *= uColor.rgb;\\n',\n screen: 'gl_FragColor.rgb = 1.0 - (1.0 - gl_FragColor.rgb) * (1.0 - uColor.rgb);\\n',\n add: 'gl_FragColor.rgb += uColor.rgb;\\n',\n diff: 'gl_FragColor.rgb = abs(gl_FragColor.rgb - uColor.rgb);\\n',\n subtract: 'gl_FragColor.rgb -= uColor.rgb;\\n',\n lighten: 'gl_FragColor.rgb = max(gl_FragColor.rgb, uColor.rgb);\\n',\n darken: 'gl_FragColor.rgb = min(gl_FragColor.rgb, uColor.rgb);\\n',\n exclusion: 'gl_FragColor.rgb += uColor.rgb - 2.0 * (uColor.rgb * gl_FragColor.rgb);\\n',\n overlay: 'if (uColor.r < 0.5) {\\n' +\n 'gl_FragColor.r *= 2.0 * uColor.r;\\n' +\n '} else {\\n' +\n 'gl_FragColor.r = 1.0 - 2.0 * (1.0 - gl_FragColor.r) * (1.0 - uColor.r);\\n' +\n '}\\n' +\n 'if (uColor.g < 0.5) {\\n' +\n 'gl_FragColor.g *= 2.0 * uColor.g;\\n' +\n '} else {\\n' +\n 'gl_FragColor.g = 1.0 - 2.0 * (1.0 - gl_FragColor.g) * (1.0 - uColor.g);\\n' +\n '}\\n' +\n 'if (uColor.b < 0.5) {\\n' +\n 'gl_FragColor.b *= 2.0 * uColor.b;\\n' +\n '} else {\\n' +\n 'gl_FragColor.b = 1.0 - 2.0 * (1.0 - gl_FragColor.b) * (1.0 - uColor.b);\\n' +\n '}\\n',\n tint: 'gl_FragColor.rgb *= (1.0 - uColor.a);\\n' +\n 'gl_FragColor.rgb += uColor.rgb;\\n',\n },\n\n /**\n * build the fragment source for the filters, joining the common part with\n * the specific one.\n * @param {String} mode the mode of the filter, a key of this.fragmentSource\n * @return {String} the source to be compiled\n * @private\n */\n buildSource: function(mode) {\n return 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec4 uColor;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'gl_FragColor = color;\\n' +\n 'if (color.a > 0.0) {\\n' +\n this.fragmentSource[mode] +\n '}\\n' +\n '}';\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var cacheKey = this.type + '_' + this.mode, shaderSource;\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n shaderSource = this.buildSource(this.mode);\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n /**\n * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n data = imageData.data, iLen = data.length,\n tr, tg, tb,\n r, g, b,\n source, alpha1 = 1 - this.alpha;\n\n source = new fabric.Color(this.color).getSource();\n tr = source[0] * this.alpha;\n tg = source[1] * this.alpha;\n tb = source[2] * this.alpha;\n\n for (var i = 0; i < iLen; i += 4) {\n\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n\n switch (this.mode) {\n case 'multiply':\n data[i] = r * tr / 255;\n data[i + 1] = g * tg / 255;\n data[i + 2] = b * tb / 255;\n break;\n case 'screen':\n data[i] = 255 - (255 - r) * (255 - tr) / 255;\n data[i + 1] = 255 - (255 - g) * (255 - tg) / 255;\n data[i + 2] = 255 - (255 - b) * (255 - tb) / 255;\n break;\n case 'add':\n data[i] = r + tr;\n data[i + 1] = g + tg;\n data[i + 2] = b + tb;\n break;\n case 'diff':\n case 'difference':\n data[i] = Math.abs(r - tr);\n data[i + 1] = Math.abs(g - tg);\n data[i + 2] = Math.abs(b - tb);\n break;\n case 'subtract':\n data[i] = r - tr;\n data[i + 1] = g - tg;\n data[i + 2] = b - tb;\n break;\n case 'darken':\n data[i] = Math.min(r, tr);\n data[i + 1] = Math.min(g, tg);\n data[i + 2] = Math.min(b, tb);\n break;\n case 'lighten':\n data[i] = Math.max(r, tr);\n data[i + 1] = Math.max(g, tg);\n data[i + 2] = Math.max(b, tb);\n break;\n case 'overlay':\n data[i] = tr < 128 ? (2 * r * tr / 255) : (255 - 2 * (255 - r) * (255 - tr) / 255);\n data[i + 1] = tg < 128 ? (2 * g * tg / 255) : (255 - 2 * (255 - g) * (255 - tg) / 255);\n data[i + 2] = tb < 128 ? (2 * b * tb / 255) : (255 - 2 * (255 - b) * (255 - tb) / 255);\n break;\n case 'exclusion':\n data[i] = tr + r - ((2 * tr * r) / 255);\n data[i + 1] = tg + g - ((2 * tg * g) / 255);\n data[i + 2] = tb + b - ((2 * tb * b) / 255);\n break;\n case 'tint':\n data[i] = tr + r * alpha1;\n data[i + 1] = tg + g * alpha1;\n data[i + 2] = tb + b * alpha1;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uColor: gl.getUniformLocation(program, 'uColor'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var source = new fabric.Color(this.color).getSource();\n source[0] = this.alpha * source[0] / 255;\n source[1] = this.alpha * source[1] / 255;\n source[2] = this.alpha * source[2] / 255;\n source[3] = this.alpha;\n gl.uniform4fv(uniformLocations.uColor, source);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return {\n type: this.type,\n color: this.color,\n mode: this.mode,\n alpha: this.alpha\n };\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.BlendColor} Instance of fabric.Image.filters.BlendColor\n */\n fabric.Image.filters.BlendColor.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n 'use strict';\n\n var fabric = global.fabric,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Image Blend filter class\n * @class fabric.Image.filter.BlendImage\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @example\n * var filter = new fabric.Image.filters.BlendColor({\n * color: '#000',\n * mode: 'multiply'\n * });\n *\n * var filter = new fabric.Image.filters.BlendImage({\n * image: fabricImageObject,\n * mode: 'multiply',\n * alpha: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n\n filters.BlendImage = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.BlendImage.prototype */ {\n type: 'BlendImage',\n\n /**\n * Color to make the blend operation with. default to a reddish color since black or white\n * gives always strong result.\n **/\n image: null,\n\n /**\n * Blend mode for the filter (one of \"multiply\", \"mask\")\n * @type String\n * @default\n **/\n mode: 'multiply',\n\n /**\n * alpha value. represent the strength of the blend image operation.\n * not implemented.\n **/\n alpha: 1,\n\n vertexSource: 'attribute vec2 aPosition;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'varying vec2 vTexCoord2;\\n' +\n 'uniform mat3 uTransformMatrix;\\n' +\n 'void main() {\\n' +\n 'vTexCoord = aPosition;\\n' +\n 'vTexCoord2 = (uTransformMatrix * vec3(aPosition, 1.0)).xy;\\n' +\n 'gl_Position = vec4(aPosition * 2.0 - 1.0, 0.0, 1.0);\\n' +\n '}',\n\n /**\n * Fragment source for the Multiply program\n */\n fragmentSource: {\n multiply: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform sampler2D uImage;\\n' +\n 'uniform vec4 uColor;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'varying vec2 vTexCoord2;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'vec4 color2 = texture2D(uImage, vTexCoord2);\\n' +\n 'color.rgba *= color2.rgba;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n mask: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform sampler2D uImage;\\n' +\n 'uniform vec4 uColor;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'varying vec2 vTexCoord2;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'vec4 color2 = texture2D(uImage, vTexCoord2);\\n' +\n 'color.a = color2.a;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var cacheKey = this.type + '_' + this.mode;\n var shaderSource = this.fragmentSource[this.mode];\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n options.programCache[cacheKey] = this.createProgram(options.context, shaderSource);\n }\n return options.programCache[cacheKey];\n },\n\n applyToWebGL: function(options) {\n // load texture to blend.\n var gl = options.context,\n texture = this.createTexture(options.filterBackend, this.image);\n this.bindAdditionalTexture(gl, texture, gl.TEXTURE1);\n this.callSuper('applyToWebGL', options);\n this.unbindAdditionalTexture(gl, gl.TEXTURE1);\n },\n\n createTexture: function(backend, image) {\n return backend.getCachedTexture(image.cacheKey, image._element);\n },\n\n /**\n * Calculate a transformMatrix to adapt the image to blend over\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n calculateMatrix: function() {\n var image = this.image,\n width = image._element.width,\n height = image._element.height;\n return [\n 1 / image.scaleX, 0, 0,\n 0, 1 / image.scaleY, 0,\n -image.left / width, -image.top / height, 1\n ];\n },\n\n /**\n * Apply the Blend operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n resources = options.filterBackend.resources,\n data = imageData.data, iLen = data.length,\n width = imageData.width,\n height = imageData.height,\n tr, tg, tb, ta,\n r, g, b, a,\n canvas1, context, image = this.image, blendData;\n\n if (!resources.blendImage) {\n resources.blendImage = fabric.util.createCanvasElement();\n }\n canvas1 = resources.blendImage;\n context = canvas1.getContext('2d');\n if (canvas1.width !== width || canvas1.height !== height) {\n canvas1.width = width;\n canvas1.height = height;\n }\n else {\n context.clearRect(0, 0, width, height);\n }\n context.setTransform(image.scaleX, 0, 0, image.scaleY, image.left, image.top);\n context.drawImage(image._element, 0, 0, width, height);\n blendData = context.getImageData(0, 0, width, height).data;\n for (var i = 0; i < iLen; i += 4) {\n\n r = data[i];\n g = data[i + 1];\n b = data[i + 2];\n a = data[i + 3];\n\n tr = blendData[i];\n tg = blendData[i + 1];\n tb = blendData[i + 2];\n ta = blendData[i + 3];\n\n switch (this.mode) {\n case 'multiply':\n data[i] = r * tr / 255;\n data[i + 1] = g * tg / 255;\n data[i + 2] = b * tb / 255;\n data[i + 3] = a * ta / 255;\n break;\n case 'mask':\n data[i + 3] = ta;\n break;\n }\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uTransformMatrix: gl.getUniformLocation(program, 'uTransformMatrix'),\n uImage: gl.getUniformLocation(program, 'uImage'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var matrix = this.calculateMatrix();\n gl.uniform1i(uniformLocations.uImage, 1); // texture unit 1.\n gl.uniformMatrix3fv(uniformLocations.uTransformMatrix, false, matrix);\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return {\n type: this.type,\n image: this.image && this.image.toObject(),\n mode: this.mode,\n alpha: this.alpha\n };\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} callback to be invoked after filter creation\n * @return {fabric.Image.filters.BlendImage} Instance of fabric.Image.filters.BlendImage\n */\n fabric.Image.filters.BlendImage.fromObject = function(object, callback) {\n fabric.Image.fromObject(object.image, function(image) {\n var options = fabric.util.object.clone(object);\n options.image = image;\n callback(new fabric.Image.filters.BlendImage(options));\n });\n };\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }), pow = Math.pow, floor = Math.floor,\n sqrt = Math.sqrt, abs = Math.abs, round = Math.round, sin = Math.sin,\n ceil = Math.ceil,\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Resize image filter class\n * @class fabric.Image.filters.Resize\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Resize();\n * object.filters.push(filter);\n * object.applyFilters(canvas.renderAll.bind(canvas));\n */\n filters.Resize = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Resize.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Resize',\n\n /**\n * Resize type\n * for webgl resizeType is just lanczos, for canvas2d can be:\n * bilinear, hermite, sliceHack, lanczos.\n * @param {String} resizeType\n * @default\n */\n resizeType: 'hermite',\n\n /**\n * Scale factor for resizing, x axis\n * @param {Number} scaleX\n * @default\n */\n scaleX: 1,\n\n /**\n * Scale factor for resizing, y axis\n * @param {Number} scaleY\n * @default\n */\n scaleY: 1,\n\n /**\n * LanczosLobes parameter for lanczos filter, valid for resizeType lanczos\n * @param {Number} lanczosLobes\n * @default\n */\n lanczosLobes: 3,\n\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uDelta: gl.getUniformLocation(program, 'uDelta'),\n uTaps: gl.getUniformLocation(program, 'uTaps'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform2fv(uniformLocations.uDelta, this.horizontal ? [1 / this.width, 0] : [0, 1 / this.height]);\n gl.uniform1fv(uniformLocations.uTaps, this.taps);\n },\n\n /**\n * Retrieves the cached shader.\n * @param {Object} options\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n retrieveShader: function(options) {\n var filterWindow = this.getFilterWindow(), cacheKey = this.type + '_' + filterWindow;\n if (!options.programCache.hasOwnProperty(cacheKey)) {\n var fragmentShader = this.generateShader(filterWindow);\n options.programCache[cacheKey] = this.createProgram(options.context, fragmentShader);\n }\n return options.programCache[cacheKey];\n },\n\n getFilterWindow: function() {\n var scale = this.tempScale;\n return Math.ceil(this.lanczosLobes / scale);\n },\n\n getTaps: function() {\n var lobeFunction = this.lanczosCreate(this.lanczosLobes), scale = this.tempScale,\n filterWindow = this.getFilterWindow(), taps = new Array(filterWindow);\n for (var i = 1; i <= filterWindow; i++) {\n taps[i - 1] = lobeFunction(i * scale);\n }\n return taps;\n },\n\n /**\n * Generate vertex and shader sources from the necessary steps numbers\n * @param {Number} filterWindow\n */\n generateShader: function(filterWindow) {\n var offsets = new Array(filterWindow),\n fragmentShader = this.fragmentSourceTOP, filterWindow;\n\n for (var i = 1; i <= filterWindow; i++) {\n offsets[i - 1] = i + '.0 * uDelta';\n }\n\n fragmentShader += 'uniform float uTaps[' + filterWindow + '];\\n';\n fragmentShader += 'void main() {\\n';\n fragmentShader += ' vec4 color = texture2D(uTexture, vTexCoord);\\n';\n fragmentShader += ' float sum = 1.0;\\n';\n\n offsets.forEach(function(offset, i) {\n fragmentShader += ' color += texture2D(uTexture, vTexCoord + ' + offset + ') * uTaps[' + i + '];\\n';\n fragmentShader += ' color += texture2D(uTexture, vTexCoord - ' + offset + ') * uTaps[' + i + '];\\n';\n fragmentShader += ' sum += 2.0 * uTaps[' + i + '];\\n';\n });\n fragmentShader += ' gl_FragColor = color / sum;\\n';\n fragmentShader += '}';\n return fragmentShader;\n },\n\n fragmentSourceTOP: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec2 uDelta;\\n' +\n 'varying vec2 vTexCoord;\\n',\n\n /**\n * Apply the resize filter to the image\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo: function(options) {\n if (options.webgl) {\n options.passes++;\n this.width = options.sourceWidth;\n this.horizontal = true;\n this.dW = Math.round(this.width * this.scaleX);\n this.dH = options.sourceHeight;\n this.tempScale = this.dW / this.width;\n this.taps = this.getTaps();\n options.destinationWidth = this.dW;\n this._setupFrameBuffer(options);\n this.applyToWebGL(options);\n this._swapTextures(options);\n options.sourceWidth = options.destinationWidth;\n\n this.height = options.sourceHeight;\n this.horizontal = false;\n this.dH = Math.round(this.height * this.scaleY);\n this.tempScale = this.dH / this.height;\n this.taps = this.getTaps();\n options.destinationHeight = this.dH;\n this._setupFrameBuffer(options);\n this.applyToWebGL(options);\n this._swapTextures(options);\n options.sourceHeight = options.destinationHeight;\n }\n else {\n this.applyTo2d(options);\n }\n },\n\n isNeutralState: function() {\n return this.scaleX === 1 && this.scaleY === 1;\n },\n\n lanczosCreate: function(lobes) {\n return function(x) {\n if (x >= lobes || x <= -lobes) {\n return 0.0;\n }\n if (x < 1.19209290E-07 && x > -1.19209290E-07) {\n return 1.0;\n }\n x *= Math.PI;\n var xx = x / lobes;\n return (sin(x) / x) * sin(xx) / xx;\n };\n },\n\n /**\n * Applies filter to canvas element\n * @memberOf fabric.Image.filters.Resize.prototype\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} scaleX\n * @param {Number} scaleY\n */\n applyTo2d: function(options) {\n var imageData = options.imageData,\n scaleX = this.scaleX,\n scaleY = this.scaleY;\n\n this.rcpScaleX = 1 / scaleX;\n this.rcpScaleY = 1 / scaleY;\n\n var oW = imageData.width, oH = imageData.height,\n dW = round(oW * scaleX), dH = round(oH * scaleY),\n newData;\n\n if (this.resizeType === 'sliceHack') {\n newData = this.sliceByTwo(options, oW, oH, dW, dH);\n }\n else if (this.resizeType === 'hermite') {\n newData = this.hermiteFastResize(options, oW, oH, dW, dH);\n }\n else if (this.resizeType === 'bilinear') {\n newData = this.bilinearFiltering(options, oW, oH, dW, dH);\n }\n else if (this.resizeType === 'lanczos') {\n newData = this.lanczosResize(options, oW, oH, dW, dH);\n }\n options.imageData = newData;\n },\n\n /**\n * Filter sliceByTwo\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n sliceByTwo: function(options, oW, oH, dW, dH) {\n var imageData = options.imageData,\n mult = 0.5, doneW = false, doneH = false, stepW = oW * mult,\n stepH = oH * mult, resources = fabric.filterBackend.resources,\n tmpCanvas, ctx, sX = 0, sY = 0, dX = oW, dY = 0;\n if (!resources.sliceByTwo) {\n resources.sliceByTwo = document.createElement('canvas');\n }\n tmpCanvas = resources.sliceByTwo;\n if (tmpCanvas.width < oW * 1.5 || tmpCanvas.height < oH) {\n tmpCanvas.width = oW * 1.5;\n tmpCanvas.height = oH;\n }\n ctx = tmpCanvas.getContext('2d');\n ctx.clearRect(0, 0, oW * 1.5, oH);\n ctx.putImageData(imageData, 0, 0);\n\n dW = floor(dW);\n dH = floor(dH);\n\n while (!doneW || !doneH) {\n oW = stepW;\n oH = stepH;\n if (dW < floor(stepW * mult)) {\n stepW = floor(stepW * mult);\n }\n else {\n stepW = dW;\n doneW = true;\n }\n if (dH < floor(stepH * mult)) {\n stepH = floor(stepH * mult);\n }\n else {\n stepH = dH;\n doneH = true;\n }\n ctx.drawImage(tmpCanvas, sX, sY, oW, oH, dX, dY, stepW, stepH);\n sX = dX;\n sY = dY;\n dY += stepH;\n }\n return ctx.getImageData(sX, sY, dW, dH);\n },\n\n /**\n * Filter lanczosResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n lanczosResize: function(options, oW, oH, dW, dH) {\n\n function process(u) {\n var v, i, weight, idx, a, red, green,\n blue, alpha, fX, fY;\n center.x = (u + 0.5) * ratioX;\n icenter.x = floor(center.x);\n for (v = 0; v < dH; v++) {\n center.y = (v + 0.5) * ratioY;\n icenter.y = floor(center.y);\n a = 0; red = 0; green = 0; blue = 0; alpha = 0;\n for (i = icenter.x - range2X; i <= icenter.x + range2X; i++) {\n if (i < 0 || i >= oW) {\n continue;\n }\n fX = floor(1000 * abs(i - center.x));\n if (!cacheLanc[fX]) {\n cacheLanc[fX] = { };\n }\n for (var j = icenter.y - range2Y; j <= icenter.y + range2Y; j++) {\n if (j < 0 || j >= oH) {\n continue;\n }\n fY = floor(1000 * abs(j - center.y));\n if (!cacheLanc[fX][fY]) {\n cacheLanc[fX][fY] = lanczos(sqrt(pow(fX * rcpRatioX, 2) + pow(fY * rcpRatioY, 2)) / 1000);\n }\n weight = cacheLanc[fX][fY];\n if (weight > 0) {\n idx = (j * oW + i) * 4;\n a += weight;\n red += weight * srcData[idx];\n green += weight * srcData[idx + 1];\n blue += weight * srcData[idx + 2];\n alpha += weight * srcData[idx + 3];\n }\n }\n }\n idx = (v * dW + u) * 4;\n destData[idx] = red / a;\n destData[idx + 1] = green / a;\n destData[idx + 2] = blue / a;\n destData[idx + 3] = alpha / a;\n }\n\n if (++u < dW) {\n return process(u);\n }\n else {\n return destImg;\n }\n }\n\n var srcData = options.imageData.data,\n destImg = options.ctx.createImageData(dW, dH),\n destData = destImg.data,\n lanczos = this.lanczosCreate(this.lanczosLobes),\n ratioX = this.rcpScaleX, ratioY = this.rcpScaleY,\n rcpRatioX = 2 / this.rcpScaleX, rcpRatioY = 2 / this.rcpScaleY,\n range2X = ceil(ratioX * this.lanczosLobes / 2),\n range2Y = ceil(ratioY * this.lanczosLobes / 2),\n cacheLanc = { }, center = { }, icenter = { };\n\n return process(0);\n },\n\n /**\n * bilinearFiltering\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n bilinearFiltering: function(options, oW, oH, dW, dH) {\n var a, b, c, d, x, y, i, j, xDiff, yDiff, chnl,\n color, offset = 0, origPix, ratioX = this.rcpScaleX,\n ratioY = this.rcpScaleY,\n w4 = 4 * (oW - 1), img = options.imageData,\n pixels = img.data, destImage = options.ctx.createImageData(dW, dH),\n destPixels = destImage.data;\n for (i = 0; i < dH; i++) {\n for (j = 0; j < dW; j++) {\n x = floor(ratioX * j);\n y = floor(ratioY * i);\n xDiff = ratioX * j - x;\n yDiff = ratioY * i - y;\n origPix = 4 * (y * oW + x);\n\n for (chnl = 0; chnl < 4; chnl++) {\n a = pixels[origPix + chnl];\n b = pixels[origPix + 4 + chnl];\n c = pixels[origPix + w4 + chnl];\n d = pixels[origPix + w4 + 4 + chnl];\n color = a * (1 - xDiff) * (1 - yDiff) + b * xDiff * (1 - yDiff) +\n c * yDiff * (1 - xDiff) + d * xDiff * yDiff;\n destPixels[offset++] = color;\n }\n }\n }\n return destImage;\n },\n\n /**\n * hermiteFastResize\n * @param {Object} canvasEl Canvas element to apply filter to\n * @param {Number} oW Original Width\n * @param {Number} oH Original Height\n * @param {Number} dW Destination Width\n * @param {Number} dH Destination Height\n * @returns {ImageData}\n */\n hermiteFastResize: function(options, oW, oH, dW, dH) {\n var ratioW = this.rcpScaleX, ratioH = this.rcpScaleY,\n ratioWHalf = ceil(ratioW / 2),\n ratioHHalf = ceil(ratioH / 2),\n img = options.imageData, data = img.data,\n img2 = options.ctx.createImageData(dW, dH), data2 = img2.data;\n for (var j = 0; j < dH; j++) {\n for (var i = 0; i < dW; i++) {\n var x2 = (i + j * dW) * 4, weight = 0, weights = 0, weightsAlpha = 0,\n gxR = 0, gxG = 0, gxB = 0, gxA = 0, centerY = (j + 0.5) * ratioH;\n for (var yy = floor(j * ratioH); yy < (j + 1) * ratioH; yy++) {\n var dy = abs(centerY - (yy + 0.5)) / ratioHHalf,\n centerX = (i + 0.5) * ratioW, w0 = dy * dy;\n for (var xx = floor(i * ratioW); xx < (i + 1) * ratioW; xx++) {\n var dx = abs(centerX - (xx + 0.5)) / ratioWHalf,\n w = sqrt(w0 + dx * dx);\n /* eslint-disable max-depth */\n if (w > 1 && w < -1) {\n continue;\n }\n //hermite filter\n weight = 2 * w * w * w - 3 * w * w + 1;\n if (weight > 0) {\n dx = 4 * (xx + yy * oW);\n //alpha\n gxA += weight * data[dx + 3];\n weightsAlpha += weight;\n //colors\n if (data[dx + 3] < 255) {\n weight = weight * data[dx + 3] / 250;\n }\n gxR += weight * data[dx];\n gxG += weight * data[dx + 1];\n gxB += weight * data[dx + 2];\n weights += weight;\n }\n /* eslint-enable max-depth */\n }\n }\n data2[x2] = gxR / weights;\n data2[x2 + 1] = gxG / weights;\n data2[x2 + 2] = gxB / weights;\n data2[x2 + 3] = gxA / weightsAlpha;\n }\n }\n return img2;\n },\n\n /**\n * Returns object representation of an instance\n * @return {Object} Object representation of an instance\n */\n toObject: function() {\n return {\n type: this.type,\n scaleX: this.scaleX,\n scaleY: this.scaleY,\n resizeType: this.resizeType,\n lanczosLobes: this.lanczosLobes\n };\n }\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Resize} Instance of fabric.Image.filters.Resize\n */\n fabric.Image.filters.Resize.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Contrast filter class\n * @class fabric.Image.filters.Contrast\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Contrast#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Contrast({\n * contrast: 0.25\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Contrast = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Contrast.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Contrast',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uContrast;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'float contrastF = 1.015 * (uContrast + 1.0) / (1.0 * (1.015 - uContrast));\\n' +\n 'color.rgb = contrastF * (color.rgb - 0.5) + 0.5;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * contrast value, range from -1 to 1.\n * @param {Number} contrast\n * @default 0\n */\n contrast: 0,\n\n mainParameter: 'contrast',\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.Contrast.prototype\n * @param {Object} [options] Options object\n * @param {Number} [options.contrast=0] Value to contrast the image up (-1...1)\n */\n\n /**\n * Apply the Contrast operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n if (this.contrast === 0) {\n return;\n }\n var imageData = options.imageData, i, len,\n data = imageData.data, len = data.length,\n contrast = Math.floor(this.contrast * 255),\n contrastF = 259 * (contrast + 255) / (255 * (259 - contrast));\n\n for (i = 0; i < len; i += 4) {\n data[i] = contrastF * (data[i] - 128) + 128;\n data[i + 1] = contrastF * (data[i + 1] - 128) + 128;\n data[i + 2] = contrastF * (data[i + 2] - 128) + 128;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uContrast: gl.getUniformLocation(program, 'uContrast'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uContrast, this.contrast);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Contrast} Instance of fabric.Image.filters.Contrast\n */\n fabric.Image.filters.Contrast.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Saturate filter class\n * @class fabric.Image.filters.Saturation\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Saturation#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Saturation({\n * saturation: 1\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Saturation = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Saturation.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Saturation',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uSaturation;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'float rgMax = max(color.r, color.g);\\n' +\n 'float rgbMax = max(rgMax, color.b);\\n' +\n 'color.r += rgbMax != color.r ? (rgbMax - color.r) * uSaturation : 0.00;\\n' +\n 'color.g += rgbMax != color.g ? (rgbMax - color.g) * uSaturation : 0.00;\\n' +\n 'color.b += rgbMax != color.b ? (rgbMax - color.b) * uSaturation : 0.00;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Saturation value, from -1 to 1.\n * Increases/decreases the color saturation.\n * A value of 0 has no effect.\n * \n * @param {Number} saturation\n * @default\n */\n saturation: 0,\n\n mainParameter: 'saturation',\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.Saturate.prototype\n * @param {Object} [options] Options object\n * @param {Number} [options.saturate=0] Value to saturate the image (-1...1)\n */\n\n /**\n * Apply the Saturation operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n if (this.saturation === 0) {\n return;\n }\n var imageData = options.imageData,\n data = imageData.data, len = data.length,\n adjust = -this.saturation, i, max;\n\n for (i = 0; i < len; i += 4) {\n max = Math.max(data[i], data[i + 1], data[i + 2]);\n data[i] += max !== data[i] ? (max - data[i]) * adjust : 0;\n data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * adjust : 0;\n data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * adjust : 0;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uSaturation: gl.getUniformLocation(program, 'uSaturation'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uSaturation, -this.saturation);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Saturation} Instance of fabric.Image.filters.Saturate\n */\n fabric.Image.filters.Saturation.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Vibrance filter class\n * @class fabric.Image.filters.Vibrance\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Vibrance#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Vibrance({\n * vibrance: 1\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Vibrance = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Vibrance.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Vibrance',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform float uVibrance;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'float max = max(color.r, max(color.g, color.b));\\n' +\n 'float avg = (color.r + color.g + color.b) / 3.0;\\n' +\n 'float amt = (abs(max - avg) * 2.0) * uVibrance;\\n' +\n 'color.r += max != color.r ? (max - color.r) * amt : 0.00;\\n' +\n 'color.g += max != color.g ? (max - color.g) * amt : 0.00;\\n' +\n 'color.b += max != color.b ? (max - color.b) * amt : 0.00;\\n' +\n 'gl_FragColor = color;\\n' +\n '}',\n\n /**\n * Vibrance value, from -1 to 1.\n * Increases/decreases the saturation of more muted colors with less effect on saturated colors.\n * A value of 0 has no effect.\n * \n * @param {Number} vibrance\n * @default\n */\n vibrance: 0,\n\n mainParameter: 'vibrance',\n\n /**\n * Constructor\n * @memberOf fabric.Image.filters.Vibrance.prototype\n * @param {Object} [options] Options object\n * @param {Number} [options.vibrance=0] Vibrance value for the image (between -1 and 1)\n */\n\n /**\n * Apply the Vibrance operation to a Uint8ClampedArray representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8ClampedArray to be filtered.\n */\n applyTo2d: function(options) {\n if (this.vibrance === 0) {\n return;\n }\n var imageData = options.imageData,\n data = imageData.data, len = data.length,\n adjust = -this.vibrance, i, max, avg, amt;\n\n for (i = 0; i < len; i += 4) {\n max = Math.max(data[i], data[i + 1], data[i + 2]);\n avg = (data[i] + data[i + 1] + data[i + 2]) / 3;\n amt = ((Math.abs(max - avg) * 2 / 255) * adjust);\n data[i] += max !== data[i] ? (max - data[i]) * amt : 0;\n data[i + 1] += max !== data[i + 1] ? (max - data[i + 1]) * amt : 0;\n data[i + 2] += max !== data[i + 2] ? (max - data[i + 2]) * amt : 0;\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uVibrance: gl.getUniformLocation(program, 'uVibrance'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform1f(uniformLocations.uVibrance, -this.vibrance);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Vibrance} Instance of fabric.Image.filters.Vibrance\n */\n fabric.Image.filters.Vibrance.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Blur filter class\n * @class fabric.Image.filters.Blur\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Blur#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Blur({\n * blur: 0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n * canvas.renderAll();\n */\n filters.Blur = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Blur.prototype */ {\n\n type: 'Blur',\n\n /*\n'gl_FragColor = vec4(0.0);',\n'gl_FragColor += texture2D(texture, vTexCoord + -7 * uDelta)*0.0044299121055113265;',\n'gl_FragColor += texture2D(texture, vTexCoord + -6 * uDelta)*0.00895781211794;',\n'gl_FragColor += texture2D(texture, vTexCoord + -5 * uDelta)*0.0215963866053;',\n'gl_FragColor += texture2D(texture, vTexCoord + -4 * uDelta)*0.0443683338718;',\n'gl_FragColor += texture2D(texture, vTexCoord + -3 * uDelta)*0.0776744219933;',\n'gl_FragColor += texture2D(texture, vTexCoord + -2 * uDelta)*0.115876621105;',\n'gl_FragColor += texture2D(texture, vTexCoord + -1 * uDelta)*0.147308056121;',\n'gl_FragColor += texture2D(texture, vTexCoord )*0.159576912161;',\n'gl_FragColor += texture2D(texture, vTexCoord + 1 * uDelta)*0.147308056121;',\n'gl_FragColor += texture2D(texture, vTexCoord + 2 * uDelta)*0.115876621105;',\n'gl_FragColor += texture2D(texture, vTexCoord + 3 * uDelta)*0.0776744219933;',\n'gl_FragColor += texture2D(texture, vTexCoord + 4 * uDelta)*0.0443683338718;',\n'gl_FragColor += texture2D(texture, vTexCoord + 5 * uDelta)*0.0215963866053;',\n'gl_FragColor += texture2D(texture, vTexCoord + 6 * uDelta)*0.00895781211794;',\n'gl_FragColor += texture2D(texture, vTexCoord + 7 * uDelta)*0.0044299121055113265;',\n*/\n\n /* eslint-disable max-len */\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec2 uDelta;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'const float nSamples = 15.0;\\n' +\n 'vec3 v3offset = vec3(12.9898, 78.233, 151.7182);\\n' +\n 'float random(vec3 scale) {\\n' +\n /* use the fragment position for a different seed per-pixel */\n 'return fract(sin(dot(gl_FragCoord.xyz, scale)) * 43758.5453);\\n' +\n '}\\n' +\n 'void main() {\\n' +\n 'vec4 color = vec4(0.0);\\n' +\n 'float total = 0.0;\\n' +\n 'float offset = random(v3offset);\\n' +\n 'for (float t = -nSamples; t <= nSamples; t++) {\\n' +\n 'float percent = (t + offset - 0.5) / nSamples;\\n' +\n 'float weight = 1.0 - abs(percent);\\n' +\n 'color += texture2D(uTexture, vTexCoord + uDelta * percent) * weight;\\n' +\n 'total += weight;\\n' +\n '}\\n' +\n 'gl_FragColor = color / total;\\n' +\n '}',\n /* eslint-enable max-len */\n\n /**\n * blur value, in percentage of image dimensions.\n * specific to keep the image blur constant at different resolutions\n * range between 0 and 1.\n * @type Number\n * @default\n */\n blur: 0,\n\n mainParameter: 'blur',\n\n applyTo: function(options) {\n if (options.webgl) {\n // this aspectRatio is used to give the same blur to vertical and horizontal\n this.aspectRatio = options.sourceWidth / options.sourceHeight;\n options.passes++;\n this._setupFrameBuffer(options);\n this.horizontal = true;\n this.applyToWebGL(options);\n this._swapTextures(options);\n this._setupFrameBuffer(options);\n this.horizontal = false;\n this.applyToWebGL(options);\n this._swapTextures(options);\n }\n else {\n this.applyTo2d(options);\n }\n },\n\n applyTo2d: function(options) {\n // paint canvasEl with current image data.\n //options.ctx.putImageData(options.imageData, 0, 0);\n options.imageData = this.simpleBlur(options);\n },\n\n simpleBlur: function(options) {\n var resources = options.filterBackend.resources, canvas1, canvas2,\n width = options.imageData.width,\n height = options.imageData.height;\n\n if (!resources.blurLayer1) {\n resources.blurLayer1 = fabric.util.createCanvasElement();\n resources.blurLayer2 = fabric.util.createCanvasElement();\n }\n canvas1 = resources.blurLayer1;\n canvas2 = resources.blurLayer2;\n if (canvas1.width !== width || canvas1.height !== height) {\n canvas2.width = canvas1.width = width;\n canvas2.height = canvas1.height = height;\n }\n var ctx1 = canvas1.getContext('2d'),\n ctx2 = canvas2.getContext('2d'),\n nSamples = 15,\n random, percent, j, i,\n blur = this.blur * 0.06 * 0.5;\n\n // load first canvas\n ctx1.putImageData(options.imageData, 0, 0);\n ctx2.clearRect(0, 0, width, height);\n\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * width + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, j, random);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n for (i = -nSamples; i <= nSamples; i++) {\n random = (Math.random() - 0.5) / 4;\n percent = i / nSamples;\n j = blur * percent * height + random;\n ctx2.globalAlpha = 1 - Math.abs(percent);\n ctx2.drawImage(canvas1, random, j);\n ctx1.drawImage(canvas2, 0, 0);\n ctx2.globalAlpha = 1;\n ctx2.clearRect(0, 0, canvas2.width, canvas2.height);\n }\n options.ctx.drawImage(canvas1, 0, 0);\n var newImageData = options.ctx.getImageData(0, 0, canvas1.width, canvas1.height);\n ctx1.globalAlpha = 1;\n ctx1.clearRect(0, 0, canvas1.width, canvas1.height);\n return newImageData;\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n delta: gl.getUniformLocation(program, 'uDelta'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n var delta = this.chooseRightDelta();\n gl.uniform2fv(uniformLocations.delta, delta);\n },\n\n /**\n * choose right value of image percentage to blur with\n * @returns {Array} a numeric array with delta values\n */\n chooseRightDelta: function() {\n var blurScale = 1, delta = [0, 0], blur;\n if (this.horizontal) {\n if (this.aspectRatio > 1) {\n // image is wide, i want to shrink radius horizontal\n blurScale = 1 / this.aspectRatio;\n }\n }\n else {\n if (this.aspectRatio < 1) {\n // image is tall, i want to shrink radius vertical\n blurScale = this.aspectRatio;\n }\n }\n blur = blurScale * this.blur * 0.12;\n if (this.horizontal) {\n delta[0] = blur;\n }\n else {\n delta[1] = blur;\n }\n return delta;\n },\n });\n\n /**\n * Deserialize a JSON definition of a BlurFilter into a concrete instance.\n */\n filters.Blur.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * Gamma filter class\n * @class fabric.Image.filters.Gamma\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.Gamma#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.Gamma({\n * gamma: [1, 0.5, 2.1]\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.Gamma = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Gamma.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'Gamma',\n\n fragmentSource: 'precision highp float;\\n' +\n 'uniform sampler2D uTexture;\\n' +\n 'uniform vec3 uGamma;\\n' +\n 'varying vec2 vTexCoord;\\n' +\n 'void main() {\\n' +\n 'vec4 color = texture2D(uTexture, vTexCoord);\\n' +\n 'vec3 correction = (1.0 / uGamma);\\n' +\n 'color.r = pow(color.r, correction.r);\\n' +\n 'color.g = pow(color.g, correction.g);\\n' +\n 'color.b = pow(color.b, correction.b);\\n' +\n 'gl_FragColor = color;\\n' +\n 'gl_FragColor.rgb *= color.a;\\n' +\n '}',\n\n /**\n * Gamma array value, from 0.01 to 2.2.\n * @param {Array} gamma\n * @default\n */\n gamma: [1, 1, 1],\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'gamma',\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n this.gamma = [1, 1, 1];\n filters.BaseFilter.prototype.initialize.call(this, options);\n },\n\n /**\n * Apply the Gamma operation to a Uint8Array representing the pixels of an image.\n *\n * @param {Object} options\n * @param {ImageData} options.imageData The Uint8Array to be filtered.\n */\n applyTo2d: function(options) {\n var imageData = options.imageData, data = imageData.data,\n gamma = this.gamma, len = data.length,\n rInv = 1 / gamma[0], gInv = 1 / gamma[1],\n bInv = 1 / gamma[2], i;\n\n if (!this.rVals) {\n // eslint-disable-next-line\n this.rVals = new Uint8Array(256);\n // eslint-disable-next-line\n this.gVals = new Uint8Array(256);\n // eslint-disable-next-line\n this.bVals = new Uint8Array(256);\n }\n\n // This is an optimization - pre-compute a look-up table for each color channel\n // instead of performing these pow calls for each pixel in the image.\n for (i = 0, len = 256; i < len; i++) {\n this.rVals[i] = Math.pow(i / 255, rInv) * 255;\n this.gVals[i] = Math.pow(i / 255, gInv) * 255;\n this.bVals[i] = Math.pow(i / 255, bInv) * 255;\n }\n for (i = 0, len = data.length; i < len; i += 4) {\n data[i] = this.rVals[data[i]];\n data[i + 1] = this.gVals[data[i + 1]];\n data[i + 2] = this.bVals[data[i + 2]];\n }\n },\n\n /**\n * Return WebGL uniform locations for this filter's shader.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {WebGLShaderProgram} program This filter's compiled shader program.\n */\n getUniformLocations: function(gl, program) {\n return {\n uGamma: gl.getUniformLocation(program, 'uGamma'),\n };\n },\n\n /**\n * Send data from this filter to its shader program's uniforms.\n *\n * @param {WebGLRenderingContext} gl The GL canvas context used to compile this filter's shader.\n * @param {Object} uniformLocations A map of string uniform names to WebGLUniformLocation objects\n */\n sendUniformData: function(gl, uniformLocations) {\n gl.uniform3fv(uniformLocations.uGamma, this.gamma);\n },\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.Gamma} Instance of fabric.Image.filters.Gamma\n */\n fabric.Image.filters.Gamma.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * A container class that knows how to apply a sequence of filters to an input image.\n */\n filters.Composed = createClass(filters.BaseFilter, /** @lends fabric.Image.filters.Composed.prototype */ {\n\n type: 'Composed',\n\n /**\n * A non sparse array of filters to apply\n */\n subFilters: [],\n\n /**\n * Constructor\n * @param {Object} [options] Options object\n */\n initialize: function(options) {\n this.callSuper('initialize', options);\n // create a new array instead mutating the prototype with push\n this.subFilters = this.subFilters.slice(0);\n },\n\n /**\n * Apply this container's filters to the input image provided.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be applied.\n */\n applyTo: function(options) {\n options.passes += this.subFilters.length - 1;\n this.subFilters.forEach(function(filter) {\n filter.applyTo(options);\n });\n },\n\n /**\n * Serialize this filter into JSON.\n *\n * @returns {Object} A JSON representation of this filter.\n */\n toObject: function() {\n return fabric.util.object.extend(this.callSuper('toObject'), {\n subFilters: this.subFilters.map(function(filter) { return filter.toObject(); }),\n });\n },\n\n isNeutralState: function() {\n return !this.subFilters.some(function(filter) { return !filter.isNeutralState(); });\n }\n });\n\n /**\n * Deserialize a JSON definition of a ComposedFilter into a concrete instance.\n */\n fabric.Image.filters.Composed.fromObject = function(object, callback) {\n var filters = object.subFilters || [],\n subFilters = filters.map(function(filter) {\n return new fabric.Image.filters[filter.type](filter);\n }),\n instance = new fabric.Image.filters.Composed({ subFilters: subFilters });\n callback && callback(instance);\n return instance;\n };\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n filters = fabric.Image.filters,\n createClass = fabric.util.createClass;\n\n /**\n * HueRotation filter class\n * @class fabric.Image.filters.HueRotation\n * @memberOf fabric.Image.filters\n * @extends fabric.Image.filters.BaseFilter\n * @see {@link fabric.Image.filters.HueRotation#initialize} for constructor definition\n * @see {@link http://fabricjs.com/image-filters|ImageFilters demo}\n * @example\n * var filter = new fabric.Image.filters.HueRotation({\n * rotation: -0.5\n * });\n * object.filters.push(filter);\n * object.applyFilters();\n */\n filters.HueRotation = createClass(filters.ColorMatrix, /** @lends fabric.Image.filters.HueRotation.prototype */ {\n\n /**\n * Filter type\n * @param {String} type\n * @default\n */\n type: 'HueRotation',\n\n /**\n * HueRotation value, from -1 to 1.\n * the unit is radians\n * @param {Number} myParameter\n * @default\n */\n rotation: 0,\n\n /**\n * Describe the property that is the filter parameter\n * @param {String} m\n * @default\n */\n mainParameter: 'rotation',\n\n calculateMatrix: function() {\n var rad = this.rotation * Math.PI, cos = fabric.util.cos(rad), sin = fabric.util.sin(rad),\n aThird = 1 / 3, aThirdSqtSin = Math.sqrt(aThird) * sin, OneMinusCos = 1 - cos;\n this.matrix = [\n 1, 0, 0, 0, 0,\n 0, 1, 0, 0, 0,\n 0, 0, 1, 0, 0,\n 0, 0, 0, 1, 0\n ];\n this.matrix[0] = cos + OneMinusCos / 3;\n this.matrix[1] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[2] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[5] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[6] = cos + aThird * OneMinusCos;\n this.matrix[7] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[10] = aThird * OneMinusCos - aThirdSqtSin;\n this.matrix[11] = aThird * OneMinusCos + aThirdSqtSin;\n this.matrix[12] = cos + aThird * OneMinusCos;\n },\n\n /**\n * HueRotation isNeutralState implementation\n * Used only in image applyFilters to discard filters that will not have an effect\n * on the image\n * @param {Object} options\n **/\n isNeutralState: function(options) {\n this.calculateMatrix();\n return filters.BaseFilter.prototype.isNeutralState.call(this, options);\n },\n\n /**\n * Apply this filter to the input image data provided.\n *\n * Determines whether to use WebGL or Canvas2D based on the options.webgl flag.\n *\n * @param {Object} options\n * @param {Number} options.passes The number of filters remaining to be executed\n * @param {Boolean} options.webgl Whether to use webgl to render the filter.\n * @param {WebGLTexture} options.sourceTexture The texture setup as the source to be filtered.\n * @param {WebGLTexture} options.targetTexture The texture where filtered output should be drawn.\n * @param {WebGLRenderingContext} options.context The GL context used for rendering.\n * @param {Object} options.programCache A map of compiled shader programs, keyed by filter type.\n */\n applyTo: function(options) {\n this.calculateMatrix();\n filters.BaseFilter.prototype.applyTo.call(this, options);\n },\n\n });\n\n /**\n * Returns filter instance from an object representation\n * @static\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] to be invoked after filter creation\n * @return {fabric.Image.filters.HueRotation} Instance of fabric.Image.filters.HueRotation\n */\n fabric.Image.filters.HueRotation.fromObject = fabric.Image.filters.BaseFilter.fromObject;\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = { }),\n clone = fabric.util.object.clone;\n\n if (fabric.Text) {\n fabric.warn('fabric.Text is already defined');\n return;\n }\n\n var additionalProps =\n ('fontFamily fontWeight fontSize text underline overline linethrough' +\n ' textAlign fontStyle lineHeight textBackgroundColor charSpacing styles' +\n ' direction path pathStartOffset pathSide pathAlign').split(' ');\n\n /**\n * Text class\n * @class fabric.Text\n * @extends fabric.Object\n * @return {fabric.Text} thisArg\n * @tutorial {@link http://fabricjs.com/fabric-intro-part-2#text}\n * @see {@link fabric.Text#initialize} for constructor definition\n */\n fabric.Text = fabric.util.createClass(fabric.Object, /** @lends fabric.Text.prototype */ {\n\n /**\n * Properties which when set cause object to change dimensions\n * @type Array\n * @private\n */\n _dimensionAffectingProps: [\n 'fontSize',\n 'fontWeight',\n 'fontFamily',\n 'fontStyle',\n 'lineHeight',\n 'text',\n 'charSpacing',\n 'textAlign',\n 'styles',\n 'path',\n 'pathStartOffset',\n 'pathSide',\n 'pathAlign'\n ],\n\n /**\n * @private\n */\n _reNewline: /\\r?\\n/,\n\n /**\n * Use this regular expression to filter for whitespaces that is not a new line.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n _reSpacesAndTabs: /[ \\t\\r]/g,\n\n /**\n * Use this regular expression to filter for whitespace that is not a new line.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n _reSpaceAndTab: /[ \\t\\r]/,\n\n /**\n * Use this regular expression to filter consecutive groups of non spaces.\n * Mostly used when text is 'justify' aligned.\n * @private\n */\n _reWords: /\\S+/g,\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'text',\n\n /**\n * Font size (in pixels)\n * @type Number\n * @default\n */\n fontSize: 40,\n\n /**\n * Font weight (e.g. bold, normal, 400, 600, 800)\n * @type {(Number|String)}\n * @default\n */\n fontWeight: 'normal',\n\n /**\n * Font family\n * @type String\n * @default\n */\n fontFamily: 'Times New Roman',\n\n /**\n * Text decoration underline.\n * @type Boolean\n * @default\n */\n underline: false,\n\n /**\n * Text decoration overline.\n * @type Boolean\n * @default\n */\n overline: false,\n\n /**\n * Text decoration linethrough.\n * @type Boolean\n * @default\n */\n linethrough: false,\n\n /**\n * Text alignment. Possible values: \"left\", \"center\", \"right\", \"justify\",\n * \"justify-left\", \"justify-center\" or \"justify-right\".\n * @type String\n * @default\n */\n textAlign: 'left',\n\n /**\n * Font style . Possible values: \"\", \"normal\", \"italic\" or \"oblique\".\n * @type String\n * @default\n */\n fontStyle: 'normal',\n\n /**\n * Line height\n * @type Number\n * @default\n */\n lineHeight: 1.16,\n\n /**\n * Superscript schema object (minimum overlap)\n * @type {Object}\n * @default\n */\n superscript: {\n size: 0.60, // fontSize factor\n baseline: -0.35 // baseline-shift factor (upwards)\n },\n\n /**\n * Subscript schema object (minimum overlap)\n * @type {Object}\n * @default\n */\n subscript: {\n size: 0.60, // fontSize factor\n baseline: 0.11 // baseline-shift factor (downwards)\n },\n\n /**\n * Background color of text lines\n * @type String\n * @default\n */\n textBackgroundColor: '',\n\n /**\n * List of properties to consider when checking if\n * state of an object is changed ({@link fabric.Object#hasStateChanged})\n * as well as for history (undo/redo) purposes\n * @type Array\n */\n stateProperties: fabric.Object.prototype.stateProperties.concat(additionalProps),\n\n /**\n * List of properties to consider when checking if cache needs refresh\n * @type Array\n */\n cacheProperties: fabric.Object.prototype.cacheProperties.concat(additionalProps),\n\n /**\n * When defined, an object is rendered via stroke and this property specifies its color.\n * Backwards incompatibility note: This property was named \"strokeStyle\" until v1.1.6\n * @type String\n * @default\n */\n stroke: null,\n\n /**\n * Shadow object representing shadow of this shape.\n * Backwards incompatibility note: This property was named \"textShadow\" (String) until v1.2.11\n * @type fabric.Shadow\n * @default\n */\n shadow: null,\n\n /**\n * fabric.Path that the text should follow.\n * since 4.6.0 the path will be drawn automatically.\n * if you want to make the path visible, give it a stroke and strokeWidth or fill value\n * if you want it to be hidden, assign visible = false to the path.\n * This feature is in BETA, and SVG import/export is not yet supported.\n * @type fabric.Path\n * @example\n * var textPath = new fabric.Text('Text on a path', {\n * top: 150,\n * left: 150,\n * textAlign: 'center',\n * charSpacing: -50,\n * path: new fabric.Path('M 0 0 C 50 -100 150 -100 200 0', {\n * strokeWidth: 1,\n * visible: false\n * }),\n * pathSide: 'left',\n * pathStartOffset: 0\n * });\n * @default\n */\n path: null,\n\n /**\n * Offset amount for text path starting position\n * Only used when text has a path\n * @type Number\n * @default\n */\n pathStartOffset: 0,\n\n /**\n * Which side of the path the text should be drawn on.\n * Only used when text has a path\n * @type {String} 'left|right'\n * @default\n */\n pathSide: 'left',\n\n /**\n * How text is aligned to the path. This property determines\n * the perpendicular position of each character relative to the path.\n * (one of \"baseline\", \"center\", \"ascender\", \"descender\")\n * This feature is in BETA, and its behavior may change\n * @type String\n * @default\n */\n pathAlign: 'baseline',\n\n /**\n * @private\n */\n _fontSizeFraction: 0.222,\n\n /**\n * @private\n */\n offsets: {\n underline: 0.10,\n linethrough: -0.315,\n overline: -0.88\n },\n\n /**\n * Text Line proportion to font Size (in pixels)\n * @type Number\n * @default\n */\n _fontSizeMult: 1.13,\n\n /**\n * additional space between characters\n * expressed in thousands of em unit\n * @type Number\n * @default\n */\n charSpacing: 0,\n\n /**\n * Object containing character styles - top-level properties -> line numbers,\n * 2nd-level properties - character numbers\n * @type Object\n * @default\n */\n styles: null,\n\n /**\n * Reference to a context to measure text char or couple of chars\n * the cacheContext of the canvas will be used or a freshly created one if the object is not on canvas\n * once created it will be referenced on fabric._measuringContext to avoid creating a canvas for every\n * text object created.\n * @type {CanvasRenderingContext2D}\n * @default\n */\n _measuringContext: null,\n\n /**\n * Baseline shift, styles only, keep at 0 for the main text object\n * @type {Number}\n * @default\n */\n deltaY: 0,\n\n /**\n * WARNING: EXPERIMENTAL. NOT SUPPORTED YET\n * determine the direction of the text.\n * This has to be set manually together with textAlign and originX for proper\n * experience.\n * some interesting link for the future\n * https://www.w3.org/International/questions/qa-bidi-unicode-controls\n * @since 4.5.0\n * @type {String} 'ltr|rtl'\n * @default\n */\n direction: 'ltr',\n\n /**\n * Array of properties that define a style unit (of 'styles').\n * @type {Array}\n * @default\n */\n _styleProperties: [\n 'stroke',\n 'strokeWidth',\n 'fill',\n 'fontFamily',\n 'fontSize',\n 'fontWeight',\n 'fontStyle',\n 'underline',\n 'overline',\n 'linethrough',\n 'deltaY',\n 'textBackgroundColor',\n ],\n\n /**\n * contains characters bounding boxes\n */\n __charBounds: [],\n\n /**\n * use this size when measuring text. To avoid IE11 rounding errors\n * @type {Number}\n * @default\n * @readonly\n * @private\n */\n CACHE_FONT_SIZE: 400,\n\n /**\n * contains the min text width to avoid getting 0\n * @type {Number}\n * @default\n */\n MIN_TEXT_WIDTH: 2,\n\n /**\n * Constructor\n * @param {String} text Text string\n * @param {Object} [options] Options object\n * @return {fabric.Text} thisArg\n */\n initialize: function(text, options) {\n this.styles = options ? (options.styles || { }) : { };\n this.text = text;\n this.__skipDimension = true;\n this.callSuper('initialize', options);\n if (this.path) {\n this.setPathInfo();\n }\n this.__skipDimension = false;\n this.initDimensions();\n this.setCoords();\n this.setupState({ propertySet: '_dimensionAffectingProps' });\n },\n\n /**\n * If text has a path, it will add the extra information needed\n * for path and text calculations\n * @return {fabric.Text} thisArg\n */\n setPathInfo: function() {\n var path = this.path;\n if (path) {\n path.segmentsInfo = fabric.util.getPathSegmentsInfo(path.path);\n }\n },\n\n /**\n * Return a context for measurement of text string.\n * if created it gets stored for reuse\n * this is for internal use, please do not use it\n * @private\n * @param {String} text Text string\n * @param {Object} [options] Options object\n * @return {fabric.Text} thisArg\n */\n getMeasuringContext: function() {\n // if we did not return we have to measure something.\n if (!fabric._measuringContext) {\n fabric._measuringContext = this.canvas && this.canvas.contextCache ||\n fabric.util.createCanvasElement().getContext('2d');\n }\n return fabric._measuringContext;\n },\n\n /**\n * @private\n * Divides text into lines of text and lines of graphemes.\n */\n _splitText: function() {\n var newLines = this._splitTextIntoLines(this.text);\n this.textLines = newLines.lines;\n this._textLines = newLines.graphemeLines;\n this._unwrappedTextLines = newLines._unwrappedLines;\n this._text = newLines.graphemeText;\n return newLines;\n },\n\n /**\n * Initialize or update text dimensions.\n * Updates this.width and this.height with the proper values.\n * Does not return dimensions.\n */\n initDimensions: function() {\n if (this.__skipDimension) {\n return;\n }\n this._splitText();\n this._clearCache();\n if (this.path) {\n this.width = this.path.width;\n this.height = this.path.height;\n }\n else {\n this.width = this.calcTextWidth() || this.cursorWidth || this.MIN_TEXT_WIDTH;\n this.height = this.calcTextHeight();\n }\n if (this.textAlign.indexOf('justify') !== -1) {\n // once text is measured we need to make space fatter to make justified text.\n this.enlargeSpaces();\n }\n this.saveState({ propertySet: '_dimensionAffectingProps' });\n },\n\n /**\n * Enlarge space boxes and shift the others\n */\n enlargeSpaces: function() {\n var diffSpace, currentLineWidth, numberOfSpaces, accumulatedSpace, line, charBound, spaces;\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n if (this.textAlign !== 'justify' && (i === len - 1 || this.isEndOfWrapping(i))) {\n continue;\n }\n accumulatedSpace = 0;\n line = this._textLines[i];\n currentLineWidth = this.getLineWidth(i);\n if (currentLineWidth < this.width && (spaces = this.textLines[i].match(this._reSpacesAndTabs))) {\n numberOfSpaces = spaces.length;\n diffSpace = (this.width - currentLineWidth) / numberOfSpaces;\n for (var j = 0, jlen = line.length; j <= jlen; j++) {\n charBound = this.__charBounds[i][j];\n if (this._reSpaceAndTab.test(line[j])) {\n charBound.width += diffSpace;\n charBound.kernedWidth += diffSpace;\n charBound.left += accumulatedSpace;\n accumulatedSpace += diffSpace;\n }\n else {\n charBound.left += accumulatedSpace;\n }\n }\n }\n }\n },\n\n /**\n * Detect if the text line is ended with an hard break\n * text and itext do not have wrapping, return false\n * @return {Boolean}\n */\n isEndOfWrapping: function(lineIndex) {\n return lineIndex === this._textLines.length - 1;\n },\n\n /**\n * Detect if a line has a linebreak and so we need to account for it when moving\n * and counting style.\n * It return always for text and Itext.\n * @return Number\n */\n missingNewlineOffset: function() {\n return 1;\n },\n\n /**\n * Returns string representation of an instance\n * @return {String} String representation of text object\n */\n toString: function() {\n return '#';\n },\n\n /**\n * Return the dimension and the zoom level needed to create a cache canvas\n * big enough to host the object to be cached.\n * @private\n * @param {Object} dim.x width of object to be cached\n * @param {Object} dim.y height of object to be cached\n * @return {Object}.width width of canvas\n * @return {Object}.height height of canvas\n * @return {Object}.zoomX zoomX zoom value to unscale the canvas before drawing cache\n * @return {Object}.zoomY zoomY zoom value to unscale the canvas before drawing cache\n */\n _getCacheCanvasDimensions: function() {\n var dims = this.callSuper('_getCacheCanvasDimensions');\n var fontSize = this.fontSize;\n dims.width += fontSize * dims.zoomX;\n dims.height += fontSize * dims.zoomY;\n return dims;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n var path = this.path;\n path && !path.isNotVisible() && path._render(ctx);\n this._setTextStyles(ctx);\n this._renderTextLinesBackground(ctx);\n this._renderTextDecoration(ctx, 'underline');\n this._renderText(ctx);\n this._renderTextDecoration(ctx, 'overline');\n this._renderTextDecoration(ctx, 'linethrough');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderText: function(ctx) {\n if (this.paintFirst === 'stroke') {\n this._renderTextStroke(ctx);\n this._renderTextFill(ctx);\n }\n else {\n this._renderTextFill(ctx);\n this._renderTextStroke(ctx);\n }\n },\n\n /**\n * Set the font parameter of the context with the object properties or with charStyle\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Object} [charStyle] object with font style properties\n * @param {String} [charStyle.fontFamily] Font Family\n * @param {Number} [charStyle.fontSize] Font size in pixels. ( without px suffix )\n * @param {String} [charStyle.fontWeight] Font weight\n * @param {String} [charStyle.fontStyle] Font style (italic|normal)\n */\n _setTextStyles: function(ctx, charStyle, forMeasuring) {\n ctx.textBaseline = 'alphabetical';\n if (this.path) {\n switch (this.pathAlign) {\n case 'center':\n ctx.textBaseline = 'middle';\n break;\n case 'ascender':\n ctx.textBaseline = 'top';\n break;\n case 'descender':\n ctx.textBaseline = 'bottom';\n break;\n }\n }\n ctx.font = this._getFontDeclaration(charStyle, forMeasuring);\n },\n\n /**\n * calculate and return the text Width measuring each line.\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @return {Number} Maximum width of fabric.Text object\n */\n calcTextWidth: function() {\n var maxWidth = this.getLineWidth(0);\n\n for (var i = 1, len = this._textLines.length; i < len; i++) {\n var currentLineWidth = this.getLineWidth(i);\n if (currentLineWidth > maxWidth) {\n maxWidth = currentLineWidth;\n }\n }\n return maxWidth;\n },\n\n /**\n * @private\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {String} line Text to render\n * @param {Number} left Left position of text\n * @param {Number} top Top position of text\n * @param {Number} lineIndex Index of a line in a text\n */\n _renderTextLine: function(method, ctx, line, left, top, lineIndex) {\n this._renderChars(method, ctx, line, left, top, lineIndex);\n },\n\n /**\n * Renders the text background for lines, taking care of style\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextLinesBackground: function(ctx) {\n if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor')) {\n return;\n }\n var heightOfLine,\n lineLeftOffset, originalFill = ctx.fillStyle,\n line, lastColor,\n leftOffset = this._getLeftOffset(),\n lineTopOffset = this._getTopOffset(),\n boxStart = 0, boxWidth = 0, charBox, currentColor, path = this.path,\n drawStart;\n\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n heightOfLine = this.getHeightOfLine(i);\n if (!this.textBackgroundColor && !this.styleHas('textBackgroundColor', i)) {\n lineTopOffset += heightOfLine;\n continue;\n }\n line = this._textLines[i];\n lineLeftOffset = this._getLineLeftOffset(i);\n boxWidth = 0;\n boxStart = 0;\n lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor');\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charBox = this.__charBounds[i][j];\n currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor');\n if (path) {\n ctx.save();\n ctx.translate(charBox.renderLeft, charBox.renderTop);\n ctx.rotate(charBox.angle);\n ctx.fillStyle = currentColor;\n currentColor && ctx.fillRect(\n -charBox.width / 2,\n -heightOfLine / this.lineHeight * (1 - this._fontSizeFraction),\n charBox.width,\n heightOfLine / this.lineHeight\n );\n ctx.restore();\n }\n else if (currentColor !== lastColor) {\n drawStart = leftOffset + lineLeftOffset + boxStart;\n if (this.direction === 'rtl') {\n drawStart = this.width - drawStart - boxWidth;\n }\n ctx.fillStyle = lastColor;\n lastColor && ctx.fillRect(\n drawStart,\n lineTopOffset,\n boxWidth,\n heightOfLine / this.lineHeight\n );\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastColor = currentColor;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n }\n if (currentColor && !path) {\n drawStart = leftOffset + lineLeftOffset + boxStart;\n if (this.direction === 'rtl') {\n drawStart = this.width - drawStart - boxWidth;\n }\n ctx.fillStyle = currentColor;\n ctx.fillRect(\n drawStart,\n lineTopOffset,\n boxWidth,\n heightOfLine / this.lineHeight\n );\n }\n lineTopOffset += heightOfLine;\n }\n ctx.fillStyle = originalFill;\n // if there is text background color no\n // other shadows should be casted\n this._removeShadow(ctx);\n },\n\n /**\n * @private\n * @param {Object} decl style declaration for cache\n * @param {String} decl.fontFamily fontFamily\n * @param {String} decl.fontStyle fontStyle\n * @param {String} decl.fontWeight fontWeight\n * @return {Object} reference to cache\n */\n getFontCache: function(decl) {\n var fontFamily = decl.fontFamily.toLowerCase();\n if (!fabric.charWidthsCache[fontFamily]) {\n fabric.charWidthsCache[fontFamily] = { };\n }\n var cache = fabric.charWidthsCache[fontFamily],\n cacheProp = decl.fontStyle.toLowerCase() + '_' + (decl.fontWeight + '').toLowerCase();\n if (!cache[cacheProp]) {\n cache[cacheProp] = { };\n }\n return cache[cacheProp];\n },\n\n /**\n * measure and return the width of a single character.\n * possibly overridden to accommodate different measure logic or\n * to hook some external lib for character measurement\n * @private\n * @param {String} _char, char to be measured\n * @param {Object} charStyle style of char to be measured\n * @param {String} [previousChar] previous char\n * @param {Object} [prevCharStyle] style of previous char\n */\n _measureChar: function(_char, charStyle, previousChar, prevCharStyle) {\n // first i try to return from cache\n var fontCache = this.getFontCache(charStyle), fontDeclaration = this._getFontDeclaration(charStyle),\n previousFontDeclaration = this._getFontDeclaration(prevCharStyle), couple = previousChar + _char,\n stylesAreEqual = fontDeclaration === previousFontDeclaration, width, coupleWidth, previousWidth,\n fontMultiplier = charStyle.fontSize / this.CACHE_FONT_SIZE, kernedWidth;\n\n if (previousChar && fontCache[previousChar] !== undefined) {\n previousWidth = fontCache[previousChar];\n }\n if (fontCache[_char] !== undefined) {\n kernedWidth = width = fontCache[_char];\n }\n if (stylesAreEqual && fontCache[couple] !== undefined) {\n coupleWidth = fontCache[couple];\n kernedWidth = coupleWidth - previousWidth;\n }\n if (width === undefined || previousWidth === undefined || coupleWidth === undefined) {\n var ctx = this.getMeasuringContext();\n // send a TRUE to specify measuring font size CACHE_FONT_SIZE\n this._setTextStyles(ctx, charStyle, true);\n }\n if (width === undefined) {\n kernedWidth = width = ctx.measureText(_char).width;\n fontCache[_char] = width;\n }\n if (previousWidth === undefined && stylesAreEqual && previousChar) {\n previousWidth = ctx.measureText(previousChar).width;\n fontCache[previousChar] = previousWidth;\n }\n if (stylesAreEqual && coupleWidth === undefined) {\n // we can measure the kerning couple and subtract the width of the previous character\n coupleWidth = ctx.measureText(couple).width;\n fontCache[couple] = coupleWidth;\n kernedWidth = coupleWidth - previousWidth;\n }\n return { width: width * fontMultiplier, kernedWidth: kernedWidth * fontMultiplier };\n },\n\n /**\n * Computes height of character at given position\n * @param {Number} line the line index number\n * @param {Number} _char the character index number\n * @return {Number} fontSize of the character\n */\n getHeightOfChar: function(line, _char) {\n return this.getValueOfPropertyAt(line, _char, 'fontSize');\n },\n\n /**\n * measure a text line measuring all characters.\n * @param {Number} lineIndex line number\n * @return {Number} Line width\n */\n measureLine: function(lineIndex) {\n var lineInfo = this._measureLine(lineIndex);\n if (this.charSpacing !== 0) {\n lineInfo.width -= this._getWidthOfCharSpacing();\n }\n if (lineInfo.width < 0) {\n lineInfo.width = 0;\n }\n return lineInfo;\n },\n\n /**\n * measure every grapheme of a line, populating __charBounds\n * @param {Number} lineIndex\n * @return {Object} object.width total width of characters\n * @return {Object} object.widthOfSpaces length of chars that match this._reSpacesAndTabs\n */\n _measureLine: function(lineIndex) {\n var width = 0, i, grapheme, line = this._textLines[lineIndex], prevGrapheme,\n graphemeInfo, numOfSpaces = 0, lineBounds = new Array(line.length),\n positionInPath = 0, startingPoint, totalPathLength, path = this.path,\n reverse = this.pathSide === 'right';\n\n this.__charBounds[lineIndex] = lineBounds;\n for (i = 0; i < line.length; i++) {\n grapheme = line[i];\n graphemeInfo = this._getGraphemeBox(grapheme, lineIndex, i, prevGrapheme);\n lineBounds[i] = graphemeInfo;\n width += graphemeInfo.kernedWidth;\n prevGrapheme = grapheme;\n }\n // this latest bound box represent the last character of the line\n // to simplify cursor handling in interactive mode.\n lineBounds[i] = {\n left: graphemeInfo ? graphemeInfo.left + graphemeInfo.width : 0,\n width: 0,\n kernedWidth: 0,\n height: this.fontSize\n };\n if (path) {\n totalPathLength = path.segmentsInfo[path.segmentsInfo.length - 1].length;\n startingPoint = fabric.util.getPointOnPath(path.path, 0, path.segmentsInfo);\n startingPoint.x += path.pathOffset.x;\n startingPoint.y += path.pathOffset.y;\n switch (this.textAlign) {\n case 'left':\n positionInPath = reverse ? (totalPathLength - width) : 0;\n break;\n case 'center':\n positionInPath = (totalPathLength - width) / 2;\n break;\n case 'right':\n positionInPath = reverse ? 0 : (totalPathLength - width);\n break;\n //todo - add support for justify\n }\n positionInPath += this.pathStartOffset * (reverse ? -1 : 1);\n for (i = reverse ? line.length - 1 : 0;\n reverse ? i >= 0 : i < line.length;\n reverse ? i-- : i++) {\n graphemeInfo = lineBounds[i];\n if (positionInPath > totalPathLength) {\n positionInPath %= totalPathLength;\n }\n else if (positionInPath < 0) {\n positionInPath += totalPathLength;\n }\n // it would probably much faster to send all the grapheme position for a line\n // and calculate path position/angle at once.\n this._setGraphemeOnPath(positionInPath, graphemeInfo, startingPoint);\n positionInPath += graphemeInfo.kernedWidth;\n }\n }\n return { width: width, numOfSpaces: numOfSpaces };\n },\n\n /**\n * Calculate the angle and the left,top position of the char that follow a path.\n * It appends it to graphemeInfo to be reused later at rendering\n * @private\n * @param {Number} positionInPath to be measured\n * @param {Object} graphemeInfo current grapheme box information\n * @param {Object} startingPoint position of the point\n */\n _setGraphemeOnPath: function(positionInPath, graphemeInfo, startingPoint) {\n var centerPosition = positionInPath + graphemeInfo.kernedWidth / 2,\n path = this.path;\n\n // we are at currentPositionOnPath. we want to know what point on the path is.\n var info = fabric.util.getPointOnPath(path.path, centerPosition, path.segmentsInfo);\n graphemeInfo.renderLeft = info.x - startingPoint.x;\n graphemeInfo.renderTop = info.y - startingPoint.y;\n graphemeInfo.angle = info.angle + (this.pathSide === 'right' ? Math.PI : 0);\n },\n\n /**\n * Measure and return the info of a single grapheme.\n * needs the the info of previous graphemes already filled\n * @private\n * @param {String} grapheme to be measured\n * @param {Number} lineIndex index of the line where the char is\n * @param {Number} charIndex position in the line\n * @param {String} [prevGrapheme] character preceding the one to be measured\n */\n _getGraphemeBox: function(grapheme, lineIndex, charIndex, prevGrapheme, skipLeft) {\n var style = this.getCompleteStyleDeclaration(lineIndex, charIndex),\n prevStyle = prevGrapheme ? this.getCompleteStyleDeclaration(lineIndex, charIndex - 1) : { },\n info = this._measureChar(grapheme, style, prevGrapheme, prevStyle),\n kernedWidth = info.kernedWidth,\n width = info.width, charSpacing;\n\n if (this.charSpacing !== 0) {\n charSpacing = this._getWidthOfCharSpacing();\n width += charSpacing;\n kernedWidth += charSpacing;\n }\n\n var box = {\n width: width,\n left: 0,\n height: style.fontSize,\n kernedWidth: kernedWidth,\n deltaY: style.deltaY,\n };\n if (charIndex > 0 && !skipLeft) {\n var previousBox = this.__charBounds[lineIndex][charIndex - 1];\n box.left = previousBox.left + previousBox.width + info.kernedWidth - info.width;\n }\n return box;\n },\n\n /**\n * Calculate height of line at 'lineIndex'\n * @param {Number} lineIndex index of line to calculate\n * @return {Number}\n */\n getHeightOfLine: function(lineIndex) {\n if (this.__lineHeights[lineIndex]) {\n return this.__lineHeights[lineIndex];\n }\n\n var line = this._textLines[lineIndex],\n // char 0 is measured before the line cycle because it nneds to char\n // emptylines\n maxHeight = this.getHeightOfChar(lineIndex, 0);\n for (var i = 1, len = line.length; i < len; i++) {\n maxHeight = Math.max(this.getHeightOfChar(lineIndex, i), maxHeight);\n }\n\n return this.__lineHeights[lineIndex] = maxHeight * this.lineHeight * this._fontSizeMult;\n },\n\n /**\n * Calculate text box height\n */\n calcTextHeight: function() {\n var lineHeight, height = 0;\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n lineHeight = this.getHeightOfLine(i);\n height += (i === len - 1 ? lineHeight / this.lineHeight : lineHeight);\n }\n return height;\n },\n\n /**\n * @private\n * @return {Number} Left offset\n */\n _getLeftOffset: function() {\n return this.direction === 'ltr' ? -this.width / 2 : this.width / 2;\n },\n\n /**\n * @private\n * @return {Number} Top offset\n */\n _getTopOffset: function() {\n return -this.height / 2;\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {String} method Method name (\"fillText\" or \"strokeText\")\n */\n _renderTextCommon: function(ctx, method) {\n ctx.save();\n var lineHeights = 0, left = this._getLeftOffset(), top = this._getTopOffset();\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n var heightOfLine = this.getHeightOfLine(i),\n maxHeight = heightOfLine / this.lineHeight,\n leftOffset = this._getLineLeftOffset(i);\n this._renderTextLine(\n method,\n ctx,\n this._textLines[i],\n left + leftOffset,\n top + lineHeights + maxHeight,\n i\n );\n lineHeights += heightOfLine;\n }\n ctx.restore();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextFill: function(ctx) {\n if (!this.fill && !this.styleHas('fill')) {\n return;\n }\n\n this._renderTextCommon(ctx, 'fillText');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextStroke: function(ctx) {\n if ((!this.stroke || this.strokeWidth === 0) && this.isEmptyStyles()) {\n return;\n }\n\n if (this.shadow && !this.shadow.affectStroke) {\n this._removeShadow(ctx);\n }\n\n ctx.save();\n this._setLineDash(ctx, this.strokeDashArray);\n ctx.beginPath();\n this._renderTextCommon(ctx, 'strokeText');\n ctx.closePath();\n ctx.restore();\n },\n\n /**\n * @private\n * @param {String} method fillText or strokeText.\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Array} line Content of the line, splitted in an array by grapheme\n * @param {Number} left\n * @param {Number} top\n * @param {Number} lineIndex\n */\n _renderChars: function(method, ctx, line, left, top, lineIndex) {\n // set proper line offset\n var lineHeight = this.getHeightOfLine(lineIndex),\n isJustify = this.textAlign.indexOf('justify') !== -1,\n actualStyle,\n nextStyle,\n charsToRender = '',\n charBox,\n boxWidth = 0,\n timeToRender,\n path = this.path,\n shortCut = !isJustify && this.charSpacing === 0 && this.isEmptyStyles(lineIndex) && !path,\n isLtr = this.direction === 'ltr', sign = this.direction === 'ltr' ? 1 : -1,\n drawingLeft, currentDirection = ctx.canvas.getAttribute('dir');\n ctx.save();\n if (currentDirection !== this.direction) {\n ctx.canvas.setAttribute('dir', isLtr ? 'ltr' : 'rtl');\n ctx.direction = isLtr ? 'ltr' : 'rtl';\n ctx.textAlign = isLtr ? 'left' : 'right';\n }\n top -= lineHeight * this._fontSizeFraction / this.lineHeight;\n if (shortCut) {\n // render all the line in one pass without checking\n // drawingLeft = isLtr ? left : left - this.getLineWidth(lineIndex);\n this._renderChar(method, ctx, lineIndex, 0, line.join(''), left, top, lineHeight);\n ctx.restore();\n return;\n }\n for (var i = 0, len = line.length - 1; i <= len; i++) {\n timeToRender = i === len || this.charSpacing || path;\n charsToRender += line[i];\n charBox = this.__charBounds[lineIndex][i];\n if (boxWidth === 0) {\n left += sign * (charBox.kernedWidth - charBox.width);\n boxWidth += charBox.width;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n if (isJustify && !timeToRender) {\n if (this._reSpaceAndTab.test(line[i])) {\n timeToRender = true;\n }\n }\n if (!timeToRender) {\n // if we have charSpacing, we render char by char\n actualStyle = actualStyle || this.getCompleteStyleDeclaration(lineIndex, i);\n nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1);\n timeToRender = fabric.util.hasStyleChanged(actualStyle, nextStyle, false);\n }\n if (timeToRender) {\n if (path) {\n ctx.save();\n ctx.translate(charBox.renderLeft, charBox.renderTop);\n ctx.rotate(charBox.angle);\n this._renderChar(method, ctx, lineIndex, i, charsToRender, -boxWidth / 2, 0, lineHeight);\n ctx.restore();\n }\n else {\n drawingLeft = left;\n this._renderChar(method, ctx, lineIndex, i, charsToRender, drawingLeft, top, lineHeight);\n }\n charsToRender = '';\n actualStyle = nextStyle;\n left += sign * boxWidth;\n boxWidth = 0;\n }\n }\n ctx.restore();\n },\n\n /**\n * This function try to patch the missing gradientTransform on canvas gradients.\n * transforming a context to transform the gradient, is going to transform the stroke too.\n * we want to transform the gradient but not the stroke operation, so we create\n * a transformed gradient on a pattern and then we use the pattern instead of the gradient.\n * this method has drawbacks: is slow, is in low resolution, needs a patch for when the size\n * is limited.\n * @private\n * @param {fabric.Gradient} filler a fabric gradient instance\n * @return {CanvasPattern} a pattern to use as fill/stroke style\n */\n _applyPatternGradientTransformText: function(filler) {\n var pCanvas = fabric.util.createCanvasElement(), pCtx,\n // TODO: verify compatibility with strokeUniform\n width = this.width + this.strokeWidth, height = this.height + this.strokeWidth;\n pCanvas.width = width;\n pCanvas.height = height;\n pCtx = pCanvas.getContext('2d');\n pCtx.beginPath(); pCtx.moveTo(0, 0); pCtx.lineTo(width, 0); pCtx.lineTo(width, height);\n pCtx.lineTo(0, height); pCtx.closePath();\n pCtx.translate(width / 2, height / 2);\n pCtx.fillStyle = filler.toLive(pCtx);\n this._applyPatternGradientTransform(pCtx, filler);\n pCtx.fill();\n return pCtx.createPattern(pCanvas, 'no-repeat');\n },\n\n handleFiller: function(ctx, property, filler) {\n var offsetX, offsetY;\n if (filler.toLive) {\n if (filler.gradientUnits === 'percentage' || filler.gradientTransform || filler.patternTransform) {\n // need to transform gradient in a pattern.\n // this is a slow process. If you are hitting this codepath, and the object\n // is not using caching, you should consider switching it on.\n // we need a canvas as big as the current object caching canvas.\n offsetX = -this.width / 2;\n offsetY = -this.height / 2;\n ctx.translate(offsetX, offsetY);\n ctx[property] = this._applyPatternGradientTransformText(filler);\n return { offsetX: offsetX, offsetY: offsetY };\n }\n else {\n // is a simple gradient or pattern\n ctx[property] = filler.toLive(ctx, this);\n return this._applyPatternGradientTransform(ctx, filler);\n }\n }\n else {\n // is a color\n ctx[property] = filler;\n }\n return { offsetX: 0, offsetY: 0 };\n },\n\n _setStrokeStyles: function(ctx, decl) {\n ctx.lineWidth = decl.strokeWidth;\n ctx.lineCap = this.strokeLineCap;\n ctx.lineDashOffset = this.strokeDashOffset;\n ctx.lineJoin = this.strokeLineJoin;\n ctx.miterLimit = this.strokeMiterLimit;\n return this.handleFiller(ctx, 'strokeStyle', decl.stroke);\n },\n\n _setFillStyles: function(ctx, decl) {\n return this.handleFiller(ctx, 'fillStyle', decl.fill);\n },\n\n /**\n * @private\n * @param {String} method\n * @param {CanvasRenderingContext2D} ctx Context to render on\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {String} _char\n * @param {Number} left Left coordinate\n * @param {Number} top Top coordinate\n * @param {Number} lineHeight Height of the line\n */\n _renderChar: function(method, ctx, lineIndex, charIndex, _char, left, top) {\n var decl = this._getStyleDeclaration(lineIndex, charIndex),\n fullDecl = this.getCompleteStyleDeclaration(lineIndex, charIndex),\n shouldFill = method === 'fillText' && fullDecl.fill,\n shouldStroke = method === 'strokeText' && fullDecl.stroke && fullDecl.strokeWidth,\n fillOffsets, strokeOffsets;\n\n if (!shouldStroke && !shouldFill) {\n return;\n }\n ctx.save();\n\n shouldFill && (fillOffsets = this._setFillStyles(ctx, fullDecl));\n shouldStroke && (strokeOffsets = this._setStrokeStyles(ctx, fullDecl));\n\n ctx.font = this._getFontDeclaration(fullDecl);\n\n\n if (decl && decl.textBackgroundColor) {\n this._removeShadow(ctx);\n }\n if (decl && decl.deltaY) {\n top += decl.deltaY;\n }\n shouldFill && ctx.fillText(_char, left - fillOffsets.offsetX, top - fillOffsets.offsetY);\n shouldStroke && ctx.strokeText(_char, left - strokeOffsets.offsetX, top - strokeOffsets.offsetY);\n ctx.restore();\n },\n\n /**\n * Turns the character into a 'superior figure' (i.e. 'superscript')\n * @param {Number} start selection start\n * @param {Number} end selection end\n * @returns {fabric.Text} thisArg\n * @chainable\n */\n setSuperscript: function(start, end) {\n return this._setScript(start, end, this.superscript);\n },\n\n /**\n * Turns the character into an 'inferior figure' (i.e. 'subscript')\n * @param {Number} start selection start\n * @param {Number} end selection end\n * @returns {fabric.Text} thisArg\n * @chainable\n */\n setSubscript: function(start, end) {\n return this._setScript(start, end, this.subscript);\n },\n\n /**\n * Applies 'schema' at given position\n * @private\n * @param {Number} start selection start\n * @param {Number} end selection end\n * @param {Number} schema\n * @returns {fabric.Text} thisArg\n * @chainable\n */\n _setScript: function(start, end, schema) {\n var loc = this.get2DCursorLocation(start, true),\n fontSize = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'fontSize'),\n dy = this.getValueOfPropertyAt(loc.lineIndex, loc.charIndex, 'deltaY'),\n style = { fontSize: fontSize * schema.size, deltaY: dy + fontSize * schema.baseline };\n this.setSelectionStyles(style, start, end);\n return this;\n },\n\n /**\n * @private\n * @param {Number} lineIndex index text line\n * @return {Number} Line left offset\n */\n _getLineLeftOffset: function(lineIndex) {\n var lineWidth = this.getLineWidth(lineIndex),\n lineDiff = this.width - lineWidth, textAlign = this.textAlign, direction = this.direction,\n isEndOfWrapping, leftOffset = 0, isEndOfWrapping = this.isEndOfWrapping(lineIndex);\n if (textAlign === 'justify'\n || (textAlign === 'justify-center' && !isEndOfWrapping)\n || (textAlign === 'justify-right' && !isEndOfWrapping)\n || (textAlign === 'justify-left' && !isEndOfWrapping)\n ) {\n return 0;\n }\n if (textAlign === 'center') {\n leftOffset = lineDiff / 2;\n }\n if (textAlign === 'right') {\n leftOffset = lineDiff;\n }\n if (textAlign === 'justify-center') {\n leftOffset = lineDiff / 2;\n }\n if (textAlign === 'justify-right') {\n leftOffset = lineDiff;\n }\n if (direction === 'rtl') {\n leftOffset -= lineDiff;\n }\n return leftOffset;\n },\n\n /**\n * @private\n */\n _clearCache: function() {\n this.__lineWidths = [];\n this.__lineHeights = [];\n this.__charBounds = [];\n },\n\n /**\n * @private\n */\n _shouldClearDimensionCache: function() {\n var shouldClear = this._forceClearCache;\n shouldClear || (shouldClear = this.hasStateChanged('_dimensionAffectingProps'));\n if (shouldClear) {\n this.dirty = true;\n this._forceClearCache = false;\n }\n return shouldClear;\n },\n\n /**\n * Measure a single line given its index. Used to calculate the initial\n * text bounding box. The values are calculated and stored in __lineWidths cache.\n * @private\n * @param {Number} lineIndex line number\n * @return {Number} Line width\n */\n getLineWidth: function(lineIndex) {\n if (this.__lineWidths[lineIndex] !== undefined) {\n return this.__lineWidths[lineIndex];\n }\n\n var lineInfo = this.measureLine(lineIndex);\n var width = lineInfo.width;\n this.__lineWidths[lineIndex] = width;\n return width;\n },\n\n _getWidthOfCharSpacing: function() {\n if (this.charSpacing !== 0) {\n return this.fontSize * this.charSpacing / 1000;\n }\n return 0;\n },\n\n /**\n * Retrieves the value of property at given character position\n * @param {Number} lineIndex the line number\n * @param {Number} charIndex the character number\n * @param {String} property the property name\n * @returns the value of 'property'\n */\n getValueOfPropertyAt: function(lineIndex, charIndex, property) {\n var charStyle = this._getStyleDeclaration(lineIndex, charIndex);\n if (charStyle && typeof charStyle[property] !== 'undefined') {\n return charStyle[property];\n }\n return this[property];\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _renderTextDecoration: function(ctx, type) {\n if (!this[type] && !this.styleHas(type)) {\n return;\n }\n var heightOfLine, size, _size,\n lineLeftOffset, dy, _dy,\n line, lastDecoration,\n leftOffset = this._getLeftOffset(),\n topOffset = this._getTopOffset(), top,\n boxStart, boxWidth, charBox, currentDecoration,\n maxHeight, currentFill, lastFill, path = this.path,\n charSpacing = this._getWidthOfCharSpacing(),\n offsetY = this.offsets[type];\n\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n heightOfLine = this.getHeightOfLine(i);\n if (!this[type] && !this.styleHas(type, i)) {\n topOffset += heightOfLine;\n continue;\n }\n line = this._textLines[i];\n maxHeight = heightOfLine / this.lineHeight;\n lineLeftOffset = this._getLineLeftOffset(i);\n boxStart = 0;\n boxWidth = 0;\n lastDecoration = this.getValueOfPropertyAt(i, 0, type);\n lastFill = this.getValueOfPropertyAt(i, 0, 'fill');\n top = topOffset + maxHeight * (1 - this._fontSizeFraction);\n size = this.getHeightOfChar(i, 0);\n dy = this.getValueOfPropertyAt(i, 0, 'deltaY');\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charBox = this.__charBounds[i][j];\n currentDecoration = this.getValueOfPropertyAt(i, j, type);\n currentFill = this.getValueOfPropertyAt(i, j, 'fill');\n _size = this.getHeightOfChar(i, j);\n _dy = this.getValueOfPropertyAt(i, j, 'deltaY');\n if (path && currentDecoration && currentFill) {\n ctx.save();\n ctx.fillStyle = lastFill;\n ctx.translate(charBox.renderLeft, charBox.renderTop);\n ctx.rotate(charBox.angle);\n ctx.fillRect(\n -charBox.kernedWidth / 2,\n offsetY * _size + _dy,\n charBox.kernedWidth,\n this.fontSize / 15\n );\n ctx.restore();\n }\n else if (\n (currentDecoration !== lastDecoration || currentFill !== lastFill || _size !== size || _dy !== dy)\n && boxWidth > 0\n ) {\n var drawStart = leftOffset + lineLeftOffset + boxStart;\n if (this.direction === 'rtl') {\n drawStart = this.width - drawStart - boxWidth;\n }\n if (lastDecoration && lastFill) {\n ctx.fillStyle = lastFill;\n ctx.fillRect(\n drawStart,\n top + offsetY * size + dy,\n boxWidth,\n this.fontSize / 15\n );\n }\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastDecoration = currentDecoration;\n lastFill = currentFill;\n size = _size;\n dy = _dy;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n }\n var drawStart = leftOffset + lineLeftOffset + boxStart;\n if (this.direction === 'rtl') {\n drawStart = this.width - drawStart - boxWidth;\n }\n ctx.fillStyle = currentFill;\n currentDecoration && currentFill && ctx.fillRect(\n drawStart,\n top + offsetY * size + dy,\n boxWidth - charSpacing,\n this.fontSize / 15\n );\n topOffset += heightOfLine;\n }\n // if there is text background color no\n // other shadows should be casted\n this._removeShadow(ctx);\n },\n\n /**\n * return font declaration string for canvas context\n * @param {Object} [styleObject] object\n * @returns {String} font declaration formatted for canvas context.\n */\n _getFontDeclaration: function(styleObject, forMeasuring) {\n var style = styleObject || this, family = this.fontFamily,\n fontIsGeneric = fabric.Text.genericFonts.indexOf(family.toLowerCase()) > -1;\n var fontFamily = family === undefined ||\n family.indexOf('\\'') > -1 || family.indexOf(',') > -1 ||\n family.indexOf('\"') > -1 || fontIsGeneric\n ? style.fontFamily : '\"' + style.fontFamily + '\"';\n return [\n // node-canvas needs \"weight style\", while browsers need \"style weight\"\n // verify if this can be fixed in JSDOM\n (fabric.isLikelyNode ? style.fontWeight : style.fontStyle),\n (fabric.isLikelyNode ? style.fontStyle : style.fontWeight),\n forMeasuring ? this.CACHE_FONT_SIZE + 'px' : style.fontSize + 'px',\n fontFamily\n ].join(' ');\n },\n\n /**\n * Renders text instance on a specified context\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render: function(ctx) {\n // do not render if object is not visible\n if (!this.visible) {\n return;\n }\n if (this.canvas && this.canvas.skipOffscreen && !this.group && !this.isOnScreen()) {\n return;\n }\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n }\n this.callSuper('render', ctx);\n },\n\n /**\n * Returns the text as an array of lines.\n * @param {String} text text to split\n * @returns {Array} Lines in the text\n */\n _splitTextIntoLines: function(text) {\n var lines = text.split(this._reNewline),\n newLines = new Array(lines.length),\n newLine = ['\\n'],\n newText = [];\n for (var i = 0; i < lines.length; i++) {\n newLines[i] = fabric.util.string.graphemeSplit(lines[i]);\n newText = newText.concat(newLines[i], newLine);\n }\n newText.pop();\n return { _unwrappedLines: newLines, lines: lines, graphemeText: newText, graphemeLines: newLines };\n },\n\n /**\n * Returns object representation of an instance\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} Object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n var allProperties = additionalProps.concat(propertiesToInclude);\n var obj = this.callSuper('toObject', allProperties);\n obj.styles = fabric.util.stylesToArray(this.styles, this.text);\n if (obj.path) {\n obj.path = this.path.toObject();\n }\n return obj;\n },\n\n /**\n * Sets property to a given value. When changing position/dimension -related properties (left, top, scale, angle, etc.) `set` does not update position of object's borders/controls. If you need to update those, call `setCoords()`.\n * @param {String|Object} key Property name or object (if object, iterate over the object properties)\n * @param {Object|Function} value Property value (if function, the value is passed into it and its return value is used as a new one)\n * @return {fabric.Object} thisArg\n * @chainable\n */\n set: function(key, value) {\n this.callSuper('set', key, value);\n var needsDims = false;\n var isAddingPath = false;\n if (typeof key === 'object') {\n for (var _key in key) {\n if (_key === 'path') {\n this.setPathInfo();\n }\n needsDims = needsDims || this._dimensionAffectingProps.indexOf(_key) !== -1;\n isAddingPath = isAddingPath || _key === 'path';\n }\n }\n else {\n needsDims = this._dimensionAffectingProps.indexOf(key) !== -1;\n isAddingPath = key === 'path';\n }\n if (isAddingPath) {\n this.setPathInfo();\n }\n if (needsDims) {\n this.initDimensions();\n this.setCoords();\n }\n return this;\n },\n\n /**\n * Returns complexity of an instance\n * @return {Number} complexity\n */\n complexity: function() {\n return 1;\n }\n });\n\n /* _FROM_SVG_START_ */\n /**\n * List of attribute names to account for when parsing SVG element (used by {@link fabric.Text.fromElement})\n * @static\n * @memberOf fabric.Text\n * @see: http://www.w3.org/TR/SVG/text.html#TextElement\n */\n fabric.Text.ATTRIBUTE_NAMES = fabric.SHARED_ATTRIBUTES.concat(\n 'x y dx dy font-family font-style font-weight font-size letter-spacing text-decoration text-anchor'.split(' '));\n\n /**\n * Default SVG font size\n * @static\n * @memberOf fabric.Text\n */\n fabric.Text.DEFAULT_SVG_FONT_SIZE = 16;\n\n /**\n * Returns fabric.Text instance from an SVG element (not yet implemented)\n * @static\n * @memberOf fabric.Text\n * @param {SVGElement} element Element to parse\n * @param {Function} callback callback function invoked after parsing\n * @param {Object} [options] Options object\n */\n fabric.Text.fromElement = function(element, callback, options) {\n if (!element) {\n return callback(null);\n }\n\n var parsedAttributes = fabric.parseAttributes(element, fabric.Text.ATTRIBUTE_NAMES),\n parsedAnchor = parsedAttributes.textAnchor || 'left';\n options = fabric.util.object.extend((options ? clone(options) : { }), parsedAttributes);\n\n options.top = options.top || 0;\n options.left = options.left || 0;\n if (parsedAttributes.textDecoration) {\n var textDecoration = parsedAttributes.textDecoration;\n if (textDecoration.indexOf('underline') !== -1) {\n options.underline = true;\n }\n if (textDecoration.indexOf('overline') !== -1) {\n options.overline = true;\n }\n if (textDecoration.indexOf('line-through') !== -1) {\n options.linethrough = true;\n }\n delete options.textDecoration;\n }\n if ('dx' in parsedAttributes) {\n options.left += parsedAttributes.dx;\n }\n if ('dy' in parsedAttributes) {\n options.top += parsedAttributes.dy;\n }\n if (!('fontSize' in options)) {\n options.fontSize = fabric.Text.DEFAULT_SVG_FONT_SIZE;\n }\n\n var textContent = '';\n\n // The XML is not properly parsed in IE9 so a workaround to get\n // textContent is through firstChild.data. Another workaround would be\n // to convert XML loaded from a file to be converted using DOMParser (same way loadSVGFromString() does)\n if (!('textContent' in element)) {\n if ('firstChild' in element && element.firstChild !== null) {\n if ('data' in element.firstChild && element.firstChild.data !== null) {\n textContent = element.firstChild.data;\n }\n }\n }\n else {\n textContent = element.textContent;\n }\n\n textContent = textContent.replace(/^\\s+|\\s+$|\\n+/g, '').replace(/\\s+/g, ' ');\n var originalStrokeWidth = options.strokeWidth;\n options.strokeWidth = 0;\n\n var text = new fabric.Text(textContent, options),\n textHeightScaleFactor = text.getScaledHeight() / text.height,\n lineHeightDiff = (text.height + text.strokeWidth) * text.lineHeight - text.height,\n scaledDiff = lineHeightDiff * textHeightScaleFactor,\n textHeight = text.getScaledHeight() + scaledDiff,\n offX = 0;\n /*\n Adjust positioning:\n x/y attributes in SVG correspond to the bottom-left corner of text bounding box\n fabric output by default at top, left.\n */\n if (parsedAnchor === 'center') {\n offX = text.getScaledWidth() / 2;\n }\n if (parsedAnchor === 'right') {\n offX = text.getScaledWidth();\n }\n text.set({\n left: text.left - offX,\n top: text.top - (textHeight - text.fontSize * (0.07 + text._fontSizeFraction)) / text.lineHeight,\n strokeWidth: typeof originalStrokeWidth !== 'undefined' ? originalStrokeWidth : 1,\n });\n callback(text);\n };\n /* _FROM_SVG_END_ */\n\n /**\n * Returns fabric.Text instance from an object representation\n * @static\n * @memberOf fabric.Text\n * @param {Object} object plain js Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Text instance is created\n */\n fabric.Text.fromObject = function(object, callback) {\n var objectCopy = clone(object), path = object.path;\n delete objectCopy.path;\n return fabric.Object._fromObject('Text', objectCopy, function(textInstance) {\n textInstance.styles = fabric.util.stylesFromArray(object.styles, object.text);\n if (path) {\n fabric.Object._fromObject('Path', path, function(pathInstance) {\n textInstance.set('path', pathInstance);\n callback(textInstance);\n }, 'path');\n }\n else {\n callback(textInstance);\n }\n }, 'text');\n };\n\n fabric.Text.genericFonts = ['sans-serif', 'serif', 'cursive', 'fantasy', 'monospace'];\n\n fabric.util.createAccessors && fabric.util.createAccessors(fabric.Text);\n\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n fabric.util.object.extend(fabric.Text.prototype, /** @lends fabric.Text.prototype */ {\n /**\n * Returns true if object has no styling or no styling in a line\n * @param {Number} lineIndex , lineIndex is on wrapped lines.\n * @return {Boolean}\n */\n isEmptyStyles: function(lineIndex) {\n if (!this.styles) {\n return true;\n }\n if (typeof lineIndex !== 'undefined' && !this.styles[lineIndex]) {\n return true;\n }\n var obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] };\n for (var p1 in obj) {\n for (var p2 in obj[p1]) {\n // eslint-disable-next-line no-unused-vars\n for (var p3 in obj[p1][p2]) {\n return false;\n }\n }\n }\n return true;\n },\n\n /**\n * Returns true if object has a style property or has it ina specified line\n * This function is used to detect if a text will use a particular property or not.\n * @param {String} property to check for\n * @param {Number} lineIndex to check the style on\n * @return {Boolean}\n */\n styleHas: function(property, lineIndex) {\n if (!this.styles || !property || property === '') {\n return false;\n }\n if (typeof lineIndex !== 'undefined' && !this.styles[lineIndex]) {\n return false;\n }\n var obj = typeof lineIndex === 'undefined' ? this.styles : { 0: this.styles[lineIndex] };\n // eslint-disable-next-line\n for (var p1 in obj) {\n // eslint-disable-next-line\n for (var p2 in obj[p1]) {\n if (typeof obj[p1][p2][property] !== 'undefined') {\n return true;\n }\n }\n }\n return false;\n },\n\n /**\n * Check if characters in a text have a value for a property\n * whose value matches the textbox's value for that property. If so,\n * the character-level property is deleted. If the character\n * has no other properties, then it is also deleted. Finally,\n * if the line containing that character has no other characters\n * then it also is deleted.\n *\n * @param {string} property The property to compare between characters and text.\n */\n cleanStyle: function(property) {\n if (!this.styles || !property || property === '') {\n return false;\n }\n var obj = this.styles, stylesCount = 0, letterCount, stylePropertyValue,\n allStyleObjectPropertiesMatch = true, graphemeCount = 0, styleObject;\n // eslint-disable-next-line\n for (var p1 in obj) {\n letterCount = 0;\n // eslint-disable-next-line\n for (var p2 in obj[p1]) {\n var styleObject = obj[p1][p2],\n stylePropertyHasBeenSet = styleObject.hasOwnProperty(property);\n\n stylesCount++;\n\n if (stylePropertyHasBeenSet) {\n if (!stylePropertyValue) {\n stylePropertyValue = styleObject[property];\n }\n else if (styleObject[property] !== stylePropertyValue) {\n allStyleObjectPropertiesMatch = false;\n }\n\n if (styleObject[property] === this[property]) {\n delete styleObject[property];\n }\n }\n else {\n allStyleObjectPropertiesMatch = false;\n }\n\n if (Object.keys(styleObject).length !== 0) {\n letterCount++;\n }\n else {\n delete obj[p1][p2];\n }\n }\n\n if (letterCount === 0) {\n delete obj[p1];\n }\n }\n // if every grapheme has the same style set then\n // delete those styles and set it on the parent\n for (var i = 0; i < this._textLines.length; i++) {\n graphemeCount += this._textLines[i].length;\n }\n if (allStyleObjectPropertiesMatch && stylesCount === graphemeCount) {\n this[property] = stylePropertyValue;\n this.removeStyle(property);\n }\n },\n\n /**\n * Remove a style property or properties from all individual character styles\n * in a text object. Deletes the character style object if it contains no other style\n * props. Deletes a line style object if it contains no other character styles.\n *\n * @param {String} props The property to remove from character styles.\n */\n removeStyle: function(property) {\n if (!this.styles || !property || property === '') {\n return;\n }\n var obj = this.styles, line, lineNum, charNum;\n for (lineNum in obj) {\n line = obj[lineNum];\n for (charNum in line) {\n delete line[charNum][property];\n if (Object.keys(line[charNum]).length === 0) {\n delete line[charNum];\n }\n }\n if (Object.keys(line).length === 0) {\n delete obj[lineNum];\n }\n }\n },\n\n /**\n * @private\n */\n _extendStyles: function(index, styles) {\n var loc = this.get2DCursorLocation(index);\n\n if (!this._getLineStyle(loc.lineIndex)) {\n this._setLineStyle(loc.lineIndex);\n }\n\n if (!this._getStyleDeclaration(loc.lineIndex, loc.charIndex)) {\n this._setStyleDeclaration(loc.lineIndex, loc.charIndex, {});\n }\n\n fabric.util.object.extend(this._getStyleDeclaration(loc.lineIndex, loc.charIndex), styles);\n },\n\n /**\n * Returns 2d representation (lineIndex and charIndex) of cursor (or selection start)\n * @param {Number} [selectionStart] Optional index. When not given, current selectionStart is used.\n * @param {Boolean} [skipWrapping] consider the location for unwrapped lines. useful to manage styles.\n */\n get2DCursorLocation: function(selectionStart, skipWrapping) {\n if (typeof selectionStart === 'undefined') {\n selectionStart = this.selectionStart;\n }\n var lines = skipWrapping ? this._unwrappedTextLines : this._textLines,\n len = lines.length;\n for (var i = 0; i < len; i++) {\n if (selectionStart <= lines[i].length) {\n return {\n lineIndex: i,\n charIndex: selectionStart\n };\n }\n selectionStart -= lines[i].length + this.missingNewlineOffset(i);\n }\n return {\n lineIndex: i - 1,\n charIndex: lines[i - 1].length < selectionStart ? lines[i - 1].length : selectionStart\n };\n },\n\n /**\n * Gets style of a current selection/cursor (at the start position)\n * if startIndex or endIndex are not provided, selectionStart or selectionEnd will be used.\n * @param {Number} [startIndex] Start index to get styles at\n * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1\n * @param {Boolean} [complete] get full style or not\n * @return {Array} styles an array with one, zero or more Style objects\n */\n getSelectionStyles: function(startIndex, endIndex, complete) {\n if (typeof startIndex === 'undefined') {\n startIndex = this.selectionStart || 0;\n }\n if (typeof endIndex === 'undefined') {\n endIndex = this.selectionEnd || startIndex;\n }\n var styles = [];\n for (var i = startIndex; i < endIndex; i++) {\n styles.push(this.getStyleAtPosition(i, complete));\n }\n return styles;\n },\n\n /**\n * Gets style of a current selection/cursor position\n * @param {Number} position to get styles at\n * @param {Boolean} [complete] full style if true\n * @return {Object} style Style object at a specified index\n * @private\n */\n getStyleAtPosition: function(position, complete) {\n var loc = this.get2DCursorLocation(position),\n style = complete ? this.getCompleteStyleDeclaration(loc.lineIndex, loc.charIndex) :\n this._getStyleDeclaration(loc.lineIndex, loc.charIndex);\n return style || {};\n },\n\n /**\n * Sets style of a current selection, if no selection exist, do not set anything.\n * @param {Object} [styles] Styles object\n * @param {Number} [startIndex] Start index to get styles at\n * @param {Number} [endIndex] End index to get styles at, if not specified selectionEnd or startIndex + 1\n * @return {fabric.IText} thisArg\n * @chainable\n */\n setSelectionStyles: function(styles, startIndex, endIndex) {\n if (typeof startIndex === 'undefined') {\n startIndex = this.selectionStart || 0;\n }\n if (typeof endIndex === 'undefined') {\n endIndex = this.selectionEnd || startIndex;\n }\n for (var i = startIndex; i < endIndex; i++) {\n this._extendStyles(i, styles);\n }\n /* not included in _extendStyles to avoid clearing cache more than once */\n this._forceClearCache = true;\n return this;\n },\n\n /**\n * get the reference, not a clone, of the style object for a given character\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @return {Object} style object\n */\n _getStyleDeclaration: function(lineIndex, charIndex) {\n var lineStyle = this.styles && this.styles[lineIndex];\n if (!lineStyle) {\n return null;\n }\n return lineStyle[charIndex];\n },\n\n /**\n * return a new object that contains all the style property for a character\n * the object returned is newly created\n * @param {Number} lineIndex of the line where the character is\n * @param {Number} charIndex position of the character on the line\n * @return {Object} style object\n */\n getCompleteStyleDeclaration: function(lineIndex, charIndex) {\n var style = this._getStyleDeclaration(lineIndex, charIndex) || { },\n styleObject = { }, prop;\n for (var i = 0; i < this._styleProperties.length; i++) {\n prop = this._styleProperties[i];\n styleObject[prop] = typeof style[prop] === 'undefined' ? this[prop] : style[prop];\n }\n return styleObject;\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {Object} style\n * @private\n */\n _setStyleDeclaration: function(lineIndex, charIndex, style) {\n this.styles[lineIndex][charIndex] = style;\n },\n\n /**\n *\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @private\n */\n _deleteStyleDeclaration: function(lineIndex, charIndex) {\n delete this.styles[lineIndex][charIndex];\n },\n\n /**\n * @param {Number} lineIndex\n * @return {Boolean} if the line exists or not\n * @private\n */\n _getLineStyle: function(lineIndex) {\n return !!this.styles[lineIndex];\n },\n\n /**\n * Set the line style to an empty object so that is initialized\n * @param {Number} lineIndex\n * @private\n */\n _setLineStyle: function(lineIndex) {\n this.styles[lineIndex] = {};\n },\n\n /**\n * @param {Number} lineIndex\n * @private\n */\n _deleteLineStyle: function(lineIndex) {\n delete this.styles[lineIndex];\n }\n });\n})();\n\n\n(function() {\n\n function parseDecoration(object) {\n if (object.textDecoration) {\n object.textDecoration.indexOf('underline') > -1 && (object.underline = true);\n object.textDecoration.indexOf('line-through') > -1 && (object.linethrough = true);\n object.textDecoration.indexOf('overline') > -1 && (object.overline = true);\n delete object.textDecoration;\n }\n }\n\n /**\n * IText class (introduced in v1.4) Events are also fired with \"text:\"\n * prefix when observing canvas.\n * @class fabric.IText\n * @extends fabric.Text\n * @mixes fabric.Observable\n *\n * @fires changed\n * @fires selection:changed\n * @fires editing:entered\n * @fires editing:exited\n *\n * @return {fabric.IText} thisArg\n * @see {@link fabric.IText#initialize} for constructor definition\n *\n *

Supported key combinations:

\n *
\n   *   Move cursor:                    left, right, up, down\n   *   Select character:               shift + left, shift + right\n   *   Select text vertically:         shift + up, shift + down\n   *   Move cursor by word:            alt + left, alt + right\n   *   Select words:                   shift + alt + left, shift + alt + right\n   *   Move cursor to line start/end:  cmd + left, cmd + right or home, end\n   *   Select till start/end of line:  cmd + shift + left, cmd + shift + right or shift + home, shift + end\n   *   Jump to start/end of text:      cmd + up, cmd + down\n   *   Select till start/end of text:  cmd + shift + up, cmd + shift + down or shift + pgUp, shift + pgDown\n   *   Delete character:               backspace\n   *   Delete word:                    alt + backspace\n   *   Delete line:                    cmd + backspace\n   *   Forward delete:                 delete\n   *   Copy text:                      ctrl/cmd + c\n   *   Paste text:                     ctrl/cmd + v\n   *   Cut text:                       ctrl/cmd + x\n   *   Select entire text:             ctrl/cmd + a\n   *   Quit editing                    tab or esc\n   * 
\n *\n *

Supported mouse/touch combination

\n *
\n   *   Position cursor:                click/touch\n   *   Create selection:               click/touch & drag\n   *   Create selection:               click & shift + click\n   *   Select word:                    double click\n   *   Select line:                    triple click\n   * 
\n */\n fabric.IText = fabric.util.createClass(fabric.Text, fabric.Observable, /** @lends fabric.IText.prototype */ {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'i-text',\n\n /**\n * Index where text selection starts (or where cursor is when there is no selection)\n * @type Number\n * @default\n */\n selectionStart: 0,\n\n /**\n * Index where text selection ends\n * @type Number\n * @default\n */\n selectionEnd: 0,\n\n /**\n * Color of text selection\n * @type String\n * @default\n */\n selectionColor: 'rgba(17,119,255,0.3)',\n\n /**\n * Indicates whether text is in editing mode\n * @type Boolean\n * @default\n */\n isEditing: false,\n\n /**\n * Indicates whether a text can be edited\n * @type Boolean\n * @default\n */\n editable: true,\n\n /**\n * Border color of text object while it's in editing mode\n * @type String\n * @default\n */\n editingBorderColor: 'rgba(102,153,255,0.25)',\n\n /**\n * Width of cursor (in px)\n * @type Number\n * @default\n */\n cursorWidth: 2,\n\n /**\n * Color of text cursor color in editing mode.\n * if not set (default) will take color from the text.\n * if set to a color value that fabric can understand, it will\n * be used instead of the color of the text at the current position.\n * @type String\n * @default\n */\n cursorColor: '',\n\n /**\n * Delay between cursor blink (in ms)\n * @type Number\n * @default\n */\n cursorDelay: 1000,\n\n /**\n * Duration of cursor fadein (in ms)\n * @type Number\n * @default\n */\n cursorDuration: 600,\n\n /**\n * Indicates whether internal text char widths can be cached\n * @type Boolean\n * @default\n */\n caching: true,\n\n /**\n * DOM container to append the hiddenTextarea.\n * An alternative to attaching to the document.body.\n * Useful to reduce laggish redraw of the full document.body tree and\n * also with modals event capturing that won't let the textarea take focus.\n * @type HTMLElement\n * @default\n */\n hiddenTextareaContainer: null,\n\n /**\n * @private\n */\n _reSpace: /\\s|\\n/,\n\n /**\n * @private\n */\n _currentCursorOpacity: 0,\n\n /**\n * @private\n */\n _selectionDirection: null,\n\n /**\n * @private\n */\n _abortCursorAnimation: false,\n\n /**\n * @private\n */\n __widthOfSpace: [],\n\n /**\n * Helps determining when the text is in composition, so that the cursor\n * rendering is altered.\n */\n inCompositionMode: false,\n\n /**\n * Constructor\n * @param {String} text Text string\n * @param {Object} [options] Options object\n * @return {fabric.IText} thisArg\n */\n initialize: function(text, options) {\n this.callSuper('initialize', text, options);\n this.initBehavior();\n },\n\n /**\n * Sets selection start (left boundary of a selection)\n * @param {Number} index Index to set selection start to\n */\n setSelectionStart: function(index) {\n index = Math.max(index, 0);\n this._updateAndFire('selectionStart', index);\n },\n\n /**\n * Sets selection end (right boundary of a selection)\n * @param {Number} index Index to set selection end to\n */\n setSelectionEnd: function(index) {\n index = Math.min(index, this.text.length);\n this._updateAndFire('selectionEnd', index);\n },\n\n /**\n * @private\n * @param {String} property 'selectionStart' or 'selectionEnd'\n * @param {Number} index new position of property\n */\n _updateAndFire: function(property, index) {\n if (this[property] !== index) {\n this._fireSelectionChanged();\n this[property] = index;\n }\n this._updateTextarea();\n },\n\n /**\n * Fires the even of selection changed\n * @private\n */\n _fireSelectionChanged: function() {\n this.fire('selection:changed');\n this.canvas && this.canvas.fire('text:selection:changed', { target: this });\n },\n\n /**\n * Initialize text dimensions. Render all text on given context\n * or on a offscreen canvas to get the text width with measureText.\n * Updates this.width and this.height with the proper values.\n * Does not return dimensions.\n * @private\n */\n initDimensions: function() {\n this.isEditing && this.initDelayedCursor();\n this.clearContextTop();\n this.callSuper('initDimensions');\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n render: function(ctx) {\n this.clearContextTop();\n this.callSuper('render', ctx);\n // clear the cursorOffsetCache, so we ensure to calculate once per renderCursor\n // the correct position but not at every cursor animation.\n this.cursorOffsetCache = { };\n this.renderCursorOrSelection();\n },\n\n /**\n * @private\n * @param {CanvasRenderingContext2D} ctx Context to render on\n */\n _render: function(ctx) {\n this.callSuper('_render', ctx);\n },\n\n /**\n * Prepare and clean the contextTop\n */\n clearContextTop: function(skipRestore) {\n if (!this.isEditing || !this.canvas || !this.canvas.contextTop) {\n return;\n }\n var ctx = this.canvas.contextTop, v = this.canvas.viewportTransform;\n ctx.save();\n ctx.transform(v[0], v[1], v[2], v[3], v[4], v[5]);\n this.transform(ctx);\n this._clearTextArea(ctx);\n skipRestore || ctx.restore();\n },\n /**\n * Renders cursor or selection (depending on what exists)\n * it does on the contextTop. If contextTop is not available, do nothing.\n */\n renderCursorOrSelection: function() {\n if (!this.isEditing || !this.canvas || !this.canvas.contextTop) {\n return;\n }\n var boundaries = this._getCursorBoundaries(),\n ctx = this.canvas.contextTop;\n this.clearContextTop(true);\n if (this.selectionStart === this.selectionEnd) {\n this.renderCursor(boundaries, ctx);\n }\n else {\n this.renderSelection(boundaries, ctx);\n }\n ctx.restore();\n },\n\n _clearTextArea: function(ctx) {\n // we add 4 pixel, to be sure to do not leave any pixel out\n var width = this.width + 4, height = this.height + 4;\n ctx.clearRect(-width / 2, -height / 2, width, height);\n },\n\n /**\n * Returns cursor boundaries (left, top, leftOffset, topOffset)\n * @private\n * @param {Array} chars Array of characters\n * @param {String} typeOfBoundaries\n */\n _getCursorBoundaries: function(position) {\n\n // left/top are left/top of entire text box\n // leftOffset/topOffset are offset from that left/top point of a text box\n\n if (typeof position === 'undefined') {\n position = this.selectionStart;\n }\n\n var left = this._getLeftOffset(),\n top = this._getTopOffset(),\n offsets = this._getCursorBoundariesOffsets(position);\n return {\n left: left,\n top: top,\n leftOffset: offsets.left,\n topOffset: offsets.top\n };\n },\n\n /**\n * @private\n */\n _getCursorBoundariesOffsets: function(position) {\n if (this.cursorOffsetCache && 'top' in this.cursorOffsetCache) {\n return this.cursorOffsetCache;\n }\n var lineLeftOffset,\n lineIndex,\n charIndex,\n topOffset = 0,\n leftOffset = 0,\n boundaries,\n cursorPosition = this.get2DCursorLocation(position);\n charIndex = cursorPosition.charIndex;\n lineIndex = cursorPosition.lineIndex;\n for (var i = 0; i < lineIndex; i++) {\n topOffset += this.getHeightOfLine(i);\n }\n lineLeftOffset = this._getLineLeftOffset(lineIndex);\n var bound = this.__charBounds[lineIndex][charIndex];\n bound && (leftOffset = bound.left);\n if (this.charSpacing !== 0 && charIndex === this._textLines[lineIndex].length) {\n leftOffset -= this._getWidthOfCharSpacing();\n }\n boundaries = {\n top: topOffset,\n left: lineLeftOffset + (leftOffset > 0 ? leftOffset : 0),\n };\n if (this.direction === 'rtl') {\n boundaries.left *= -1;\n }\n this.cursorOffsetCache = boundaries;\n return this.cursorOffsetCache;\n },\n\n /**\n * Renders cursor\n * @param {Object} boundaries\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\n */\n renderCursor: function(boundaries, ctx) {\n var cursorLocation = this.get2DCursorLocation(),\n lineIndex = cursorLocation.lineIndex,\n charIndex = cursorLocation.charIndex > 0 ? cursorLocation.charIndex - 1 : 0,\n charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize'),\n multiplier = this.scaleX * this.canvas.getZoom(),\n cursorWidth = this.cursorWidth / multiplier,\n topOffset = boundaries.topOffset,\n dy = this.getValueOfPropertyAt(lineIndex, charIndex, 'deltaY');\n topOffset += (1 - this._fontSizeFraction) * this.getHeightOfLine(lineIndex) / this.lineHeight\n - charHeight * (1 - this._fontSizeFraction);\n\n if (this.inCompositionMode) {\n this.renderSelection(boundaries, ctx);\n }\n ctx.fillStyle = this.cursorColor || this.getValueOfPropertyAt(lineIndex, charIndex, 'fill');\n ctx.globalAlpha = this.__isMousedown ? 1 : this._currentCursorOpacity;\n ctx.fillRect(\n boundaries.left + boundaries.leftOffset - cursorWidth / 2,\n topOffset + boundaries.top + dy,\n cursorWidth,\n charHeight);\n },\n\n /**\n * Renders text selection\n * @param {Object} boundaries Object with left/top/leftOffset/topOffset\n * @param {CanvasRenderingContext2D} ctx transformed context to draw on\n */\n renderSelection: function(boundaries, ctx) {\n\n var selectionStart = this.inCompositionMode ? this.hiddenTextarea.selectionStart : this.selectionStart,\n selectionEnd = this.inCompositionMode ? this.hiddenTextarea.selectionEnd : this.selectionEnd,\n isJustify = this.textAlign.indexOf('justify') !== -1,\n start = this.get2DCursorLocation(selectionStart),\n end = this.get2DCursorLocation(selectionEnd),\n startLine = start.lineIndex,\n endLine = end.lineIndex,\n startChar = start.charIndex < 0 ? 0 : start.charIndex,\n endChar = end.charIndex < 0 ? 0 : end.charIndex;\n\n for (var i = startLine; i <= endLine; i++) {\n var lineOffset = this._getLineLeftOffset(i) || 0,\n lineHeight = this.getHeightOfLine(i),\n realLineHeight = 0, boxStart = 0, boxEnd = 0;\n\n if (i === startLine) {\n boxStart = this.__charBounds[startLine][startChar].left;\n }\n if (i >= startLine && i < endLine) {\n boxEnd = isJustify && !this.isEndOfWrapping(i) ? this.width : this.getLineWidth(i) || 5; // WTF is this 5?\n }\n else if (i === endLine) {\n if (endChar === 0) {\n boxEnd = this.__charBounds[endLine][endChar].left;\n }\n else {\n var charSpacing = this._getWidthOfCharSpacing();\n boxEnd = this.__charBounds[endLine][endChar - 1].left\n + this.__charBounds[endLine][endChar - 1].width - charSpacing;\n }\n }\n realLineHeight = lineHeight;\n if (this.lineHeight < 1 || (i === endLine && this.lineHeight > 1)) {\n lineHeight /= this.lineHeight;\n }\n var drawStart = boundaries.left + lineOffset + boxStart,\n drawWidth = boxEnd - boxStart,\n drawHeight = lineHeight, extraTop = 0;\n if (this.inCompositionMode) {\n ctx.fillStyle = this.compositionColor || 'black';\n drawHeight = 1;\n extraTop = lineHeight;\n }\n else {\n ctx.fillStyle = this.selectionColor;\n }\n if (this.direction === 'rtl') {\n drawStart = this.width - drawStart - drawWidth;\n }\n ctx.fillRect(\n drawStart,\n boundaries.top + boundaries.topOffset + extraTop,\n drawWidth,\n drawHeight);\n boundaries.topOffset += realLineHeight;\n }\n },\n\n /**\n * High level function to know the height of the cursor.\n * the currentChar is the one that precedes the cursor\n * Returns fontSize of char at the current cursor\n * Unused from the library, is for the end user\n * @return {Number} Character font size\n */\n getCurrentCharFontSize: function() {\n var cp = this._getCurrentCharIndex();\n return this.getValueOfPropertyAt(cp.l, cp.c, 'fontSize');\n },\n\n /**\n * High level function to know the color of the cursor.\n * the currentChar is the one that precedes the cursor\n * Returns color (fill) of char at the current cursor\n * if the text object has a pattern or gradient for filler, it will return that.\n * Unused by the library, is for the end user\n * @return {String | fabric.Gradient | fabric.Pattern} Character color (fill)\n */\n getCurrentCharColor: function() {\n var cp = this._getCurrentCharIndex();\n return this.getValueOfPropertyAt(cp.l, cp.c, 'fill');\n },\n\n /**\n * Returns the cursor position for the getCurrent.. functions\n * @private\n */\n _getCurrentCharIndex: function() {\n var cursorPosition = this.get2DCursorLocation(this.selectionStart, true),\n charIndex = cursorPosition.charIndex > 0 ? cursorPosition.charIndex - 1 : 0;\n return { l: cursorPosition.lineIndex, c: charIndex };\n }\n });\n\n /**\n * Returns fabric.IText instance from an object representation\n * @static\n * @memberOf fabric.IText\n * @param {Object} object Object to create an instance from\n * @param {function} [callback] invoked with new instance as argument\n */\n fabric.IText.fromObject = function(object, callback) {\n var styles = fabric.util.stylesFromArray(object.styles, object.text);\n //copy object to prevent mutation\n var objCopy = Object.assign({}, object, { styles: styles });\n parseDecoration(objCopy);\n if (objCopy.styles) {\n for (var i in objCopy.styles) {\n for (var j in objCopy.styles[i]) {\n parseDecoration(objCopy.styles[i][j]);\n }\n }\n }\n fabric.Object._fromObject('IText', objCopy, callback, 'text');\n };\n})();\n\n\n(function() {\n\n var clone = fabric.util.object.clone;\n\n fabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n\n /**\n * Initializes all the interactive behavior of IText\n */\n initBehavior: function() {\n this.initAddedHandler();\n this.initRemovedHandler();\n this.initCursorSelectionHandlers();\n this.initDoubleClickSimulation();\n this.mouseMoveHandler = this.mouseMoveHandler.bind(this);\n },\n\n onDeselect: function() {\n this.isEditing && this.exitEditing();\n this.selected = false;\n },\n\n /**\n * Initializes \"added\" event handler\n */\n initAddedHandler: function() {\n var _this = this;\n this.on('added', function() {\n var canvas = _this.canvas;\n if (canvas) {\n if (!canvas._hasITextHandlers) {\n canvas._hasITextHandlers = true;\n _this._initCanvasHandlers(canvas);\n }\n canvas._iTextInstances = canvas._iTextInstances || [];\n canvas._iTextInstances.push(_this);\n }\n });\n },\n\n initRemovedHandler: function() {\n var _this = this;\n this.on('removed', function() {\n var canvas = _this.canvas;\n if (canvas) {\n canvas._iTextInstances = canvas._iTextInstances || [];\n fabric.util.removeFromArray(canvas._iTextInstances, _this);\n if (canvas._iTextInstances.length === 0) {\n canvas._hasITextHandlers = false;\n _this._removeCanvasHandlers(canvas);\n }\n }\n });\n },\n\n /**\n * register canvas event to manage exiting on other instances\n * @private\n */\n _initCanvasHandlers: function(canvas) {\n canvas._mouseUpITextHandler = function() {\n if (canvas._iTextInstances) {\n canvas._iTextInstances.forEach(function(obj) {\n obj.__isMousedown = false;\n });\n }\n };\n canvas.on('mouse:up', canvas._mouseUpITextHandler);\n },\n\n /**\n * remove canvas event to manage exiting on other instances\n * @private\n */\n _removeCanvasHandlers: function(canvas) {\n canvas.off('mouse:up', canvas._mouseUpITextHandler);\n },\n\n /**\n * @private\n */\n _tick: function() {\n this._currentTickState = this._animateCursor(this, 1, this.cursorDuration, '_onTickComplete');\n },\n\n /**\n * @private\n */\n _animateCursor: function(obj, targetOpacity, duration, completeMethod) {\n\n var tickState;\n\n tickState = {\n isAborted: false,\n abort: function() {\n this.isAborted = true;\n },\n };\n\n obj.animate('_currentCursorOpacity', targetOpacity, {\n duration: duration,\n onComplete: function() {\n if (!tickState.isAborted) {\n obj[completeMethod]();\n }\n },\n onChange: function() {\n // we do not want to animate a selection, only cursor\n if (obj.canvas && obj.selectionStart === obj.selectionEnd) {\n obj.renderCursorOrSelection();\n }\n },\n abort: function() {\n return tickState.isAborted;\n }\n });\n return tickState;\n },\n\n /**\n * @private\n */\n _onTickComplete: function() {\n\n var _this = this;\n\n if (this._cursorTimeout1) {\n clearTimeout(this._cursorTimeout1);\n }\n this._cursorTimeout1 = setTimeout(function() {\n _this._currentTickCompleteState = _this._animateCursor(_this, 0, this.cursorDuration / 2, '_tick');\n }, 100);\n },\n\n /**\n * Initializes delayed cursor\n */\n initDelayedCursor: function(restart) {\n var _this = this,\n delay = restart ? 0 : this.cursorDelay;\n\n this.abortCursorAnimation();\n this._currentCursorOpacity = 1;\n this._cursorTimeout2 = setTimeout(function() {\n _this._tick();\n }, delay);\n },\n\n /**\n * Aborts cursor animation and clears all timeouts\n */\n abortCursorAnimation: function() {\n var shouldClear = this._currentTickState || this._currentTickCompleteState,\n canvas = this.canvas;\n this._currentTickState && this._currentTickState.abort();\n this._currentTickCompleteState && this._currentTickCompleteState.abort();\n\n clearTimeout(this._cursorTimeout1);\n clearTimeout(this._cursorTimeout2);\n\n this._currentCursorOpacity = 0;\n // to clear just itext area we need to transform the context\n // it may not be worth it\n if (shouldClear && canvas) {\n canvas.clearContext(canvas.contextTop || canvas.contextContainer);\n }\n\n },\n\n /**\n * Selects entire text\n * @return {fabric.IText} thisArg\n * @chainable\n */\n selectAll: function() {\n this.selectionStart = 0;\n this.selectionEnd = this._text.length;\n this._fireSelectionChanged();\n this._updateTextarea();\n return this;\n },\n\n /**\n * Returns selected text\n * @return {String}\n */\n getSelectedText: function() {\n return this._text.slice(this.selectionStart, this.selectionEnd).join('');\n },\n\n /**\n * Find new selection index representing start of current word according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findWordBoundaryLeft: function(startFrom) {\n var offset = 0, index = startFrom - 1;\n\n // remove space before cursor first\n if (this._reSpace.test(this._text[index])) {\n while (this._reSpace.test(this._text[index])) {\n offset++;\n index--;\n }\n }\n while (/\\S/.test(this._text[index]) && index > -1) {\n offset++;\n index--;\n }\n\n return startFrom - offset;\n },\n\n /**\n * Find new selection index representing end of current word according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findWordBoundaryRight: function(startFrom) {\n var offset = 0, index = startFrom;\n\n // remove space after cursor first\n if (this._reSpace.test(this._text[index])) {\n while (this._reSpace.test(this._text[index])) {\n offset++;\n index++;\n }\n }\n while (/\\S/.test(this._text[index]) && index < this._text.length) {\n offset++;\n index++;\n }\n\n return startFrom + offset;\n },\n\n /**\n * Find new selection index representing start of current line according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findLineBoundaryLeft: function(startFrom) {\n var offset = 0, index = startFrom - 1;\n\n while (!/\\n/.test(this._text[index]) && index > -1) {\n offset++;\n index--;\n }\n\n return startFrom - offset;\n },\n\n /**\n * Find new selection index representing end of current line according to current selection index\n * @param {Number} startFrom Current selection index\n * @return {Number} New selection index\n */\n findLineBoundaryRight: function(startFrom) {\n var offset = 0, index = startFrom;\n\n while (!/\\n/.test(this._text[index]) && index < this._text.length) {\n offset++;\n index++;\n }\n\n return startFrom + offset;\n },\n\n /**\n * Finds index corresponding to beginning or end of a word\n * @param {Number} selectionStart Index of a character\n * @param {Number} direction 1 or -1\n * @return {Number} Index of the beginning or end of a word\n */\n searchWordBoundary: function(selectionStart, direction) {\n var text = this._text,\n index = this._reSpace.test(text[selectionStart]) ? selectionStart - 1 : selectionStart,\n _char = text[index],\n // wrong\n reNonWord = fabric.reNonWord;\n\n while (!reNonWord.test(_char) && index > 0 && index < text.length) {\n index += direction;\n _char = text[index];\n }\n if (reNonWord.test(_char)) {\n index += direction === 1 ? 0 : 1;\n }\n return index;\n },\n\n /**\n * Selects a word based on the index\n * @param {Number} selectionStart Index of a character\n */\n selectWord: function(selectionStart) {\n selectionStart = selectionStart || this.selectionStart;\n var newSelectionStart = this.searchWordBoundary(selectionStart, -1), /* search backwards */\n newSelectionEnd = this.searchWordBoundary(selectionStart, 1); /* search forward */\n\n this.selectionStart = newSelectionStart;\n this.selectionEnd = newSelectionEnd;\n this._fireSelectionChanged();\n this._updateTextarea();\n this.renderCursorOrSelection();\n },\n\n /**\n * Selects a line based on the index\n * @param {Number} selectionStart Index of a character\n * @return {fabric.IText} thisArg\n * @chainable\n */\n selectLine: function(selectionStart) {\n selectionStart = selectionStart || this.selectionStart;\n var newSelectionStart = this.findLineBoundaryLeft(selectionStart),\n newSelectionEnd = this.findLineBoundaryRight(selectionStart);\n\n this.selectionStart = newSelectionStart;\n this.selectionEnd = newSelectionEnd;\n this._fireSelectionChanged();\n this._updateTextarea();\n return this;\n },\n\n /**\n * Enters editing state\n * @return {fabric.IText} thisArg\n * @chainable\n */\n enterEditing: function(e) {\n if (this.isEditing || !this.editable) {\n return;\n }\n\n if (this.canvas) {\n this.canvas.calcOffset();\n this.exitEditingOnOthers(this.canvas);\n }\n\n this.isEditing = true;\n\n this.initHiddenTextarea(e);\n this.hiddenTextarea.focus();\n this.hiddenTextarea.value = this.text;\n this._updateTextarea();\n this._saveEditingProps();\n this._setEditingProps();\n this._textBeforeEdit = this.text;\n\n this._tick();\n this.fire('editing:entered');\n this._fireSelectionChanged();\n if (!this.canvas) {\n return this;\n }\n this.canvas.fire('text:editing:entered', { target: this });\n this.initMouseMoveHandler();\n this.canvas.requestRenderAll();\n return this;\n },\n\n exitEditingOnOthers: function(canvas) {\n if (canvas._iTextInstances) {\n canvas._iTextInstances.forEach(function(obj) {\n obj.selected = false;\n if (obj.isEditing) {\n obj.exitEditing();\n }\n });\n }\n },\n\n /**\n * Initializes \"mousemove\" event handler\n */\n initMouseMoveHandler: function() {\n this.canvas.on('mouse:move', this.mouseMoveHandler);\n },\n\n /**\n * @private\n */\n mouseMoveHandler: function(options) {\n if (!this.__isMousedown || !this.isEditing) {\n return;\n }\n\n // regain focus\n document.activeElement !== this.hiddenTextarea && this.hiddenTextarea.focus();\n\n var newSelectionStart = this.getSelectionStartFromPointer(options.e),\n currentStart = this.selectionStart,\n currentEnd = this.selectionEnd;\n if (\n (newSelectionStart !== this.__selectionStartOnMouseDown || currentStart === currentEnd)\n &&\n (currentStart === newSelectionStart || currentEnd === newSelectionStart)\n ) {\n return;\n }\n if (newSelectionStart > this.__selectionStartOnMouseDown) {\n this.selectionStart = this.__selectionStartOnMouseDown;\n this.selectionEnd = newSelectionStart;\n }\n else {\n this.selectionStart = newSelectionStart;\n this.selectionEnd = this.__selectionStartOnMouseDown;\n }\n if (this.selectionStart !== currentStart || this.selectionEnd !== currentEnd) {\n this.restartCursorIfNeeded();\n this._fireSelectionChanged();\n this._updateTextarea();\n this.renderCursorOrSelection();\n }\n },\n\n /**\n * @private\n */\n _setEditingProps: function() {\n this.hoverCursor = 'text';\n\n if (this.canvas) {\n this.canvas.defaultCursor = this.canvas.moveCursor = 'text';\n }\n\n this.borderColor = this.editingBorderColor;\n this.hasControls = this.selectable = false;\n this.lockMovementX = this.lockMovementY = true;\n },\n\n /**\n * convert from textarea to grapheme indexes\n */\n fromStringToGraphemeSelection: function(start, end, text) {\n var smallerTextStart = text.slice(0, start),\n graphemeStart = fabric.util.string.graphemeSplit(smallerTextStart).length;\n if (start === end) {\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart };\n }\n var smallerTextEnd = text.slice(start, end),\n graphemeEnd = fabric.util.string.graphemeSplit(smallerTextEnd).length;\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart + graphemeEnd };\n },\n\n /**\n * convert from fabric to textarea values\n */\n fromGraphemeToStringSelection: function(start, end, _text) {\n var smallerTextStart = _text.slice(0, start),\n graphemeStart = smallerTextStart.join('').length;\n if (start === end) {\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart };\n }\n var smallerTextEnd = _text.slice(start, end),\n graphemeEnd = smallerTextEnd.join('').length;\n return { selectionStart: graphemeStart, selectionEnd: graphemeStart + graphemeEnd };\n },\n\n /**\n * @private\n */\n _updateTextarea: function() {\n this.cursorOffsetCache = { };\n if (!this.hiddenTextarea) {\n return;\n }\n if (!this.inCompositionMode) {\n var newSelection = this.fromGraphemeToStringSelection(this.selectionStart, this.selectionEnd, this._text);\n this.hiddenTextarea.selectionStart = newSelection.selectionStart;\n this.hiddenTextarea.selectionEnd = newSelection.selectionEnd;\n }\n this.updateTextareaPosition();\n },\n\n /**\n * @private\n */\n updateFromTextArea: function() {\n if (!this.hiddenTextarea) {\n return;\n }\n this.cursorOffsetCache = { };\n this.text = this.hiddenTextarea.value;\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n var newSelection = this.fromStringToGraphemeSelection(\n this.hiddenTextarea.selectionStart, this.hiddenTextarea.selectionEnd, this.hiddenTextarea.value);\n this.selectionEnd = this.selectionStart = newSelection.selectionEnd;\n if (!this.inCompositionMode) {\n this.selectionStart = newSelection.selectionStart;\n }\n this.updateTextareaPosition();\n },\n\n /**\n * @private\n */\n updateTextareaPosition: function() {\n if (this.selectionStart === this.selectionEnd) {\n var style = this._calcTextareaPosition();\n this.hiddenTextarea.style.left = style.left;\n this.hiddenTextarea.style.top = style.top;\n }\n },\n\n /**\n * @private\n * @return {Object} style contains style for hiddenTextarea\n */\n _calcTextareaPosition: function() {\n if (!this.canvas) {\n return { x: 1, y: 1 };\n }\n var desiredPosition = this.inCompositionMode ? this.compositionStart : this.selectionStart,\n boundaries = this._getCursorBoundaries(desiredPosition),\n cursorLocation = this.get2DCursorLocation(desiredPosition),\n lineIndex = cursorLocation.lineIndex,\n charIndex = cursorLocation.charIndex,\n charHeight = this.getValueOfPropertyAt(lineIndex, charIndex, 'fontSize') * this.lineHeight,\n leftOffset = boundaries.leftOffset,\n m = this.calcTransformMatrix(),\n p = {\n x: boundaries.left + leftOffset,\n y: boundaries.top + boundaries.topOffset + charHeight\n },\n retinaScaling = this.canvas.getRetinaScaling(),\n upperCanvas = this.canvas.upperCanvasEl,\n upperCanvasWidth = upperCanvas.width / retinaScaling,\n upperCanvasHeight = upperCanvas.height / retinaScaling,\n maxWidth = upperCanvasWidth - charHeight,\n maxHeight = upperCanvasHeight - charHeight,\n scaleX = upperCanvas.clientWidth / upperCanvasWidth,\n scaleY = upperCanvas.clientHeight / upperCanvasHeight;\n\n p = fabric.util.transformPoint(p, m);\n p = fabric.util.transformPoint(p, this.canvas.viewportTransform);\n p.x *= scaleX;\n p.y *= scaleY;\n if (p.x < 0) {\n p.x = 0;\n }\n if (p.x > maxWidth) {\n p.x = maxWidth;\n }\n if (p.y < 0) {\n p.y = 0;\n }\n if (p.y > maxHeight) {\n p.y = maxHeight;\n }\n\n // add canvas offset on document\n p.x += this.canvas._offset.left;\n p.y += this.canvas._offset.top;\n\n return { left: p.x + 'px', top: p.y + 'px', fontSize: charHeight + 'px', charHeight: charHeight };\n },\n\n /**\n * @private\n */\n _saveEditingProps: function() {\n this._savedProps = {\n hasControls: this.hasControls,\n borderColor: this.borderColor,\n lockMovementX: this.lockMovementX,\n lockMovementY: this.lockMovementY,\n hoverCursor: this.hoverCursor,\n selectable: this.selectable,\n defaultCursor: this.canvas && this.canvas.defaultCursor,\n moveCursor: this.canvas && this.canvas.moveCursor\n };\n },\n\n /**\n * @private\n */\n _restoreEditingProps: function() {\n if (!this._savedProps) {\n return;\n }\n\n this.hoverCursor = this._savedProps.hoverCursor;\n this.hasControls = this._savedProps.hasControls;\n this.borderColor = this._savedProps.borderColor;\n this.selectable = this._savedProps.selectable;\n this.lockMovementX = this._savedProps.lockMovementX;\n this.lockMovementY = this._savedProps.lockMovementY;\n\n if (this.canvas) {\n this.canvas.defaultCursor = this._savedProps.defaultCursor;\n this.canvas.moveCursor = this._savedProps.moveCursor;\n }\n },\n\n /**\n * Exits from editing state\n * @return {fabric.IText} thisArg\n * @chainable\n */\n exitEditing: function() {\n var isTextChanged = (this._textBeforeEdit !== this.text);\n var hiddenTextarea = this.hiddenTextarea;\n this.selected = false;\n this.isEditing = false;\n\n this.selectionEnd = this.selectionStart;\n\n if (hiddenTextarea) {\n hiddenTextarea.blur && hiddenTextarea.blur();\n hiddenTextarea.parentNode && hiddenTextarea.parentNode.removeChild(hiddenTextarea);\n }\n this.hiddenTextarea = null;\n this.abortCursorAnimation();\n this._restoreEditingProps();\n this._currentCursorOpacity = 0;\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n this.fire('editing:exited');\n isTextChanged && this.fire('modified');\n if (this.canvas) {\n this.canvas.off('mouse:move', this.mouseMoveHandler);\n this.canvas.fire('text:editing:exited', { target: this });\n isTextChanged && this.canvas.fire('object:modified', { target: this });\n }\n return this;\n },\n\n /**\n * @private\n */\n _removeExtraneousStyles: function() {\n for (var prop in this.styles) {\n if (!this._textLines[prop]) {\n delete this.styles[prop];\n }\n }\n },\n\n /**\n * remove and reflow a style block from start to end.\n * @param {Number} start linear start position for removal (included in removal)\n * @param {Number} end linear end position for removal ( excluded from removal )\n */\n removeStyleFromTo: function(start, end) {\n var cursorStart = this.get2DCursorLocation(start, true),\n cursorEnd = this.get2DCursorLocation(end, true),\n lineStart = cursorStart.lineIndex,\n charStart = cursorStart.charIndex,\n lineEnd = cursorEnd.lineIndex,\n charEnd = cursorEnd.charIndex,\n i, styleObj;\n if (lineStart !== lineEnd) {\n // step1 remove the trailing of lineStart\n if (this.styles[lineStart]) {\n for (i = charStart; i < this._unwrappedTextLines[lineStart].length; i++) {\n delete this.styles[lineStart][i];\n }\n }\n // step2 move the trailing of lineEnd to lineStart if needed\n if (this.styles[lineEnd]) {\n for (i = charEnd; i < this._unwrappedTextLines[lineEnd].length; i++) {\n styleObj = this.styles[lineEnd][i];\n if (styleObj) {\n this.styles[lineStart] || (this.styles[lineStart] = { });\n this.styles[lineStart][charStart + i - charEnd] = styleObj;\n }\n }\n }\n // step3 detects lines will be completely removed.\n for (i = lineStart + 1; i <= lineEnd; i++) {\n delete this.styles[i];\n }\n // step4 shift remaining lines.\n this.shiftLineStyles(lineEnd, lineStart - lineEnd);\n }\n else {\n // remove and shift left on the same line\n if (this.styles[lineStart]) {\n styleObj = this.styles[lineStart];\n var diff = charEnd - charStart, numericChar, _char;\n for (i = charStart; i < charEnd; i++) {\n delete styleObj[i];\n }\n for (_char in this.styles[lineStart]) {\n numericChar = parseInt(_char, 10);\n if (numericChar >= charEnd) {\n styleObj[numericChar - diff] = styleObj[_char];\n delete styleObj[_char];\n }\n }\n }\n }\n },\n\n /**\n * Shifts line styles up or down\n * @param {Number} lineIndex Index of a line\n * @param {Number} offset Can any number?\n */\n shiftLineStyles: function(lineIndex, offset) {\n // shift all line styles by offset upward or downward\n // do not clone deep. we need new array, not new style objects\n var clonedStyles = clone(this.styles);\n for (var line in this.styles) {\n var numericLine = parseInt(line, 10);\n if (numericLine > lineIndex) {\n this.styles[numericLine + offset] = clonedStyles[numericLine];\n if (!clonedStyles[numericLine - offset]) {\n delete this.styles[numericLine];\n }\n }\n }\n },\n\n restartCursorIfNeeded: function() {\n if (!this._currentTickState || this._currentTickState.isAborted\n || !this._currentTickCompleteState || this._currentTickCompleteState.isAborted\n ) {\n this.initDelayedCursor();\n }\n },\n\n /**\n * Handle insertion of more consecutive style lines for when one or more\n * newlines gets added to the text. Since current style needs to be shifted\n * first we shift the current style of the number lines needed, then we add\n * new lines from the last to the first.\n * @param {Number} lineIndex Index of a line\n * @param {Number} charIndex Index of a char\n * @param {Number} qty number of lines to add\n * @param {Array} copiedStyle Array of objects styles\n */\n insertNewlineStyleObject: function(lineIndex, charIndex, qty, copiedStyle) {\n var currentCharStyle,\n newLineStyles = {},\n somethingAdded = false,\n isEndOfLine = this._unwrappedTextLines[lineIndex].length === charIndex;\n\n qty || (qty = 1);\n this.shiftLineStyles(lineIndex, qty);\n if (this.styles[lineIndex]) {\n currentCharStyle = this.styles[lineIndex][charIndex === 0 ? charIndex : charIndex - 1];\n }\n // we clone styles of all chars\n // after cursor onto the current line\n for (var index in this.styles[lineIndex]) {\n var numIndex = parseInt(index, 10);\n if (numIndex >= charIndex) {\n somethingAdded = true;\n newLineStyles[numIndex - charIndex] = this.styles[lineIndex][index];\n // remove lines from the previous line since they're on a new line now\n if (!(isEndOfLine && charIndex === 0)) {\n delete this.styles[lineIndex][index];\n }\n }\n }\n var styleCarriedOver = false;\n if (somethingAdded && !isEndOfLine) {\n // if is end of line, the extra style we copied\n // is probably not something we want\n this.styles[lineIndex + qty] = newLineStyles;\n styleCarriedOver = true;\n }\n if (styleCarriedOver) {\n // skip the last line of since we already prepared it.\n qty--;\n }\n // for the all the lines or all the other lines\n // we clone current char style onto the next (otherwise empty) line\n while (qty > 0) {\n if (copiedStyle && copiedStyle[qty - 1]) {\n this.styles[lineIndex + qty] = { 0: clone(copiedStyle[qty - 1]) };\n }\n else if (currentCharStyle) {\n this.styles[lineIndex + qty] = { 0: clone(currentCharStyle) };\n }\n else {\n delete this.styles[lineIndex + qty];\n }\n qty--;\n }\n this._forceClearCache = true;\n },\n\n /**\n * Inserts style object for a given line/char index\n * @param {Number} lineIndex Index of a line\n * @param {Number} charIndex Index of a char\n * @param {Number} quantity number Style object to insert, if given\n * @param {Array} copiedStyle array of style objects\n */\n insertCharStyleObject: function(lineIndex, charIndex, quantity, copiedStyle) {\n if (!this.styles) {\n this.styles = {};\n }\n var currentLineStyles = this.styles[lineIndex],\n currentLineStylesCloned = currentLineStyles ? clone(currentLineStyles) : {};\n\n quantity || (quantity = 1);\n // shift all char styles by quantity forward\n // 0,1,2,3 -> (charIndex=2) -> 0,1,3,4 -> (insert 2) -> 0,1,2,3,4\n for (var index in currentLineStylesCloned) {\n var numericIndex = parseInt(index, 10);\n if (numericIndex >= charIndex) {\n currentLineStyles[numericIndex + quantity] = currentLineStylesCloned[numericIndex];\n // only delete the style if there was nothing moved there\n if (!currentLineStylesCloned[numericIndex - quantity]) {\n delete currentLineStyles[numericIndex];\n }\n }\n }\n this._forceClearCache = true;\n if (copiedStyle) {\n while (quantity--) {\n if (!Object.keys(copiedStyle[quantity]).length) {\n continue;\n }\n if (!this.styles[lineIndex]) {\n this.styles[lineIndex] = {};\n }\n this.styles[lineIndex][charIndex + quantity] = clone(copiedStyle[quantity]);\n }\n return;\n }\n if (!currentLineStyles) {\n return;\n }\n var newStyle = currentLineStyles[charIndex ? charIndex - 1 : 1];\n while (newStyle && quantity--) {\n this.styles[lineIndex][charIndex + quantity] = clone(newStyle);\n }\n },\n\n /**\n * Inserts style object(s)\n * @param {Array} insertedText Characters at the location where style is inserted\n * @param {Number} start cursor index for inserting style\n * @param {Array} [copiedStyle] array of style objects to insert.\n */\n insertNewStyleBlock: function(insertedText, start, copiedStyle) {\n var cursorLoc = this.get2DCursorLocation(start, true),\n addedLines = [0], linesLength = 0;\n // get an array of how many char per lines are being added.\n for (var i = 0; i < insertedText.length; i++) {\n if (insertedText[i] === '\\n') {\n linesLength++;\n addedLines[linesLength] = 0;\n }\n else {\n addedLines[linesLength]++;\n }\n }\n // for the first line copy the style from the current char position.\n if (addedLines[0] > 0) {\n this.insertCharStyleObject(cursorLoc.lineIndex, cursorLoc.charIndex, addedLines[0], copiedStyle);\n copiedStyle = copiedStyle && copiedStyle.slice(addedLines[0] + 1);\n }\n linesLength && this.insertNewlineStyleObject(\n cursorLoc.lineIndex, cursorLoc.charIndex + addedLines[0], linesLength);\n for (var i = 1; i < linesLength; i++) {\n if (addedLines[i] > 0) {\n this.insertCharStyleObject(cursorLoc.lineIndex + i, 0, addedLines[i], copiedStyle);\n }\n else if (copiedStyle) {\n // this test is required in order to close #6841\n // when a pasted buffer begins with a newline then\n // this.styles[cursorLoc.lineIndex + i] and copiedStyle[0]\n // may be undefined for some reason\n if (this.styles[cursorLoc.lineIndex + i] && copiedStyle[0]) {\n this.styles[cursorLoc.lineIndex + i][0] = copiedStyle[0];\n }\n }\n copiedStyle = copiedStyle && copiedStyle.slice(addedLines[i] + 1);\n }\n // we use i outside the loop to get it like linesLength\n if (addedLines[i] > 0) {\n this.insertCharStyleObject(cursorLoc.lineIndex + i, 0, addedLines[i], copiedStyle);\n }\n },\n\n /**\n * Set the selectionStart and selectionEnd according to the new position of cursor\n * mimic the key - mouse navigation when shift is pressed.\n */\n setSelectionStartEndWithShift: function(start, end, newSelection) {\n if (newSelection <= start) {\n if (end === start) {\n this._selectionDirection = 'left';\n }\n else if (this._selectionDirection === 'right') {\n this._selectionDirection = 'left';\n this.selectionEnd = start;\n }\n this.selectionStart = newSelection;\n }\n else if (newSelection > start && newSelection < end) {\n if (this._selectionDirection === 'right') {\n this.selectionEnd = newSelection;\n }\n else {\n this.selectionStart = newSelection;\n }\n }\n else {\n // newSelection is > selection start and end\n if (end === start) {\n this._selectionDirection = 'right';\n }\n else if (this._selectionDirection === 'left') {\n this._selectionDirection = 'right';\n this.selectionStart = end;\n }\n this.selectionEnd = newSelection;\n }\n },\n\n setSelectionInBoundaries: function() {\n var length = this.text.length;\n if (this.selectionStart > length) {\n this.selectionStart = length;\n }\n else if (this.selectionStart < 0) {\n this.selectionStart = 0;\n }\n if (this.selectionEnd > length) {\n this.selectionEnd = length;\n }\n else if (this.selectionEnd < 0) {\n this.selectionEnd = 0;\n }\n }\n });\n})();\n\n\nfabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n /**\n * Initializes \"dbclick\" event handler\n */\n initDoubleClickSimulation: function() {\n\n // for double click\n this.__lastClickTime = +new Date();\n\n // for triple click\n this.__lastLastClickTime = +new Date();\n\n this.__lastPointer = { };\n\n this.on('mousedown', this.onMouseDown);\n },\n\n /**\n * Default event handler to simulate triple click\n * @private\n */\n onMouseDown: function(options) {\n if (!this.canvas) {\n return;\n }\n this.__newClickTime = +new Date();\n var newPointer = options.pointer;\n if (this.isTripleClick(newPointer)) {\n this.fire('tripleclick', options);\n this._stopEvent(options.e);\n }\n this.__lastLastClickTime = this.__lastClickTime;\n this.__lastClickTime = this.__newClickTime;\n this.__lastPointer = newPointer;\n this.__lastIsEditing = this.isEditing;\n this.__lastSelected = this.selected;\n },\n\n isTripleClick: function(newPointer) {\n return this.__newClickTime - this.__lastClickTime < 500 &&\n this.__lastClickTime - this.__lastLastClickTime < 500 &&\n this.__lastPointer.x === newPointer.x &&\n this.__lastPointer.y === newPointer.y;\n },\n\n /**\n * @private\n */\n _stopEvent: function(e) {\n e.preventDefault && e.preventDefault();\n e.stopPropagation && e.stopPropagation();\n },\n\n /**\n * Initializes event handlers related to cursor or selection\n */\n initCursorSelectionHandlers: function() {\n this.initMousedownHandler();\n this.initMouseupHandler();\n this.initClicks();\n },\n\n /**\n * Default handler for double click, select a word\n */\n doubleClickHandler: function(options) {\n if (!this.isEditing) {\n return;\n }\n this.selectWord(this.getSelectionStartFromPointer(options.e));\n },\n\n /**\n * Default handler for triple click, select a line\n */\n tripleClickHandler: function(options) {\n if (!this.isEditing) {\n return;\n }\n this.selectLine(this.getSelectionStartFromPointer(options.e));\n },\n\n /**\n * Initializes double and triple click event handlers\n */\n initClicks: function() {\n this.on('mousedblclick', this.doubleClickHandler);\n this.on('tripleclick', this.tripleClickHandler);\n },\n\n /**\n * Default event handler for the basic functionalities needed on _mouseDown\n * can be overridden to do something different.\n * Scope of this implementation is: find the click position, set selectionStart\n * find selectionEnd, initialize the drawing of either cursor or selection area\n * initializing a mousedDown on a text area will cancel fabricjs knowledge of\n * current compositionMode. It will be set to false.\n */\n _mouseDownHandler: function(options) {\n if (!this.canvas || !this.editable || (options.e.button && options.e.button !== 1)) {\n return;\n }\n\n this.__isMousedown = true;\n\n if (this.selected) {\n this.inCompositionMode = false;\n this.setCursorByClick(options.e);\n }\n\n if (this.isEditing) {\n this.__selectionStartOnMouseDown = this.selectionStart;\n if (this.selectionStart === this.selectionEnd) {\n this.abortCursorAnimation();\n }\n this.renderCursorOrSelection();\n }\n },\n\n /**\n * Default event handler for the basic functionalities needed on mousedown:before\n * can be overridden to do something different.\n * Scope of this implementation is: verify the object is already selected when mousing down\n */\n _mouseDownHandlerBefore: function(options) {\n if (!this.canvas || !this.editable || (options.e.button && options.e.button !== 1)) {\n return;\n }\n // we want to avoid that an object that was selected and then becomes unselectable,\n // may trigger editing mode in some way.\n this.selected = this === this.canvas._activeObject;\n },\n\n /**\n * Initializes \"mousedown\" event handler\n */\n initMousedownHandler: function() {\n this.on('mousedown', this._mouseDownHandler);\n this.on('mousedown:before', this._mouseDownHandlerBefore);\n },\n\n /**\n * Initializes \"mouseup\" event handler\n */\n initMouseupHandler: function() {\n this.on('mouseup', this.mouseUpHandler);\n },\n\n /**\n * standard handler for mouse up, overridable\n * @private\n */\n mouseUpHandler: function(options) {\n this.__isMousedown = false;\n if (!this.editable || this.group ||\n (options.transform && options.transform.actionPerformed) ||\n (options.e.button && options.e.button !== 1)) {\n return;\n }\n\n if (this.canvas) {\n var currentActive = this.canvas._activeObject;\n if (currentActive && currentActive !== this) {\n // avoid running this logic when there is an active object\n // this because is possible with shift click and fast clicks,\n // to rapidly deselect and reselect this object and trigger an enterEdit\n return;\n }\n }\n\n if (this.__lastSelected && !this.__corner) {\n this.selected = false;\n this.__lastSelected = false;\n this.enterEditing(options.e);\n if (this.selectionStart === this.selectionEnd) {\n this.initDelayedCursor(true);\n }\n else {\n this.renderCursorOrSelection();\n }\n }\n else {\n this.selected = true;\n }\n },\n\n /**\n * Changes cursor location in a text depending on passed pointer (x/y) object\n * @param {Event} e Event object\n */\n setCursorByClick: function(e) {\n var newSelection = this.getSelectionStartFromPointer(e),\n start = this.selectionStart, end = this.selectionEnd;\n if (e.shiftKey) {\n this.setSelectionStartEndWithShift(start, end, newSelection);\n }\n else {\n this.selectionStart = newSelection;\n this.selectionEnd = newSelection;\n }\n if (this.isEditing) {\n this._fireSelectionChanged();\n this._updateTextarea();\n }\n },\n\n /**\n * Returns index of a character corresponding to where an object was clicked\n * @param {Event} e Event object\n * @return {Number} Index of a character\n */\n getSelectionStartFromPointer: function(e) {\n var mouseOffset = this.getLocalPointer(e),\n prevWidth = 0,\n width = 0,\n height = 0,\n charIndex = 0,\n lineIndex = 0,\n lineLeftOffset,\n line;\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n if (height <= mouseOffset.y) {\n height += this.getHeightOfLine(i) * this.scaleY;\n lineIndex = i;\n if (i > 0) {\n charIndex += this._textLines[i - 1].length + this.missingNewlineOffset(i - 1);\n }\n }\n else {\n break;\n }\n }\n lineLeftOffset = this._getLineLeftOffset(lineIndex);\n width = lineLeftOffset * this.scaleX;\n line = this._textLines[lineIndex];\n // handling of RTL: in order to get things work correctly,\n // we assume RTL writing is mirrored compared to LTR writing.\n // so in position detection we mirror the X offset, and when is time\n // of rendering it, we mirror it again.\n if (this.direction === 'rtl') {\n mouseOffset.x = this.width * this.scaleX - mouseOffset.x + width;\n }\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n prevWidth = width;\n // i removed something about flipX here, check.\n width += this.__charBounds[lineIndex][j].kernedWidth * this.scaleX;\n if (width <= mouseOffset.x) {\n charIndex++;\n }\n else {\n break;\n }\n }\n return this._getNewSelectionStartFromOffset(mouseOffset, prevWidth, width, charIndex, jlen);\n },\n\n /**\n * @private\n */\n _getNewSelectionStartFromOffset: function(mouseOffset, prevWidth, width, index, jlen) {\n // we need Math.abs because when width is after the last char, the offset is given as 1, while is 0\n var distanceBtwLastCharAndCursor = mouseOffset.x - prevWidth,\n distanceBtwNextCharAndCursor = width - mouseOffset.x,\n offset = distanceBtwNextCharAndCursor > distanceBtwLastCharAndCursor ||\n distanceBtwNextCharAndCursor < 0 ? 0 : 1,\n newSelectionStart = index + offset;\n // if object is horizontally flipped, mirror cursor location from the end\n if (this.flipX) {\n newSelectionStart = jlen - newSelectionStart;\n }\n\n if (newSelectionStart > this._text.length) {\n newSelectionStart = this._text.length;\n }\n\n return newSelectionStart;\n }\n});\n\n\nfabric.util.object.extend(fabric.IText.prototype, /** @lends fabric.IText.prototype */ {\n\n /**\n * Initializes hidden textarea (needed to bring up keyboard in iOS)\n */\n initHiddenTextarea: function() {\n this.hiddenTextarea = fabric.document.createElement('textarea');\n this.hiddenTextarea.setAttribute('autocapitalize', 'off');\n this.hiddenTextarea.setAttribute('autocorrect', 'off');\n this.hiddenTextarea.setAttribute('autocomplete', 'off');\n this.hiddenTextarea.setAttribute('spellcheck', 'false');\n this.hiddenTextarea.setAttribute('data-fabric-hiddentextarea', '');\n this.hiddenTextarea.setAttribute('wrap', 'off');\n var style = this._calcTextareaPosition();\n // line-height: 1px; was removed from the style to fix this:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=870966\n this.hiddenTextarea.style.cssText = 'position: absolute; top: ' + style.top +\n '; left: ' + style.left + '; z-index: -999; opacity: 0; width: 1px; height: 1px; font-size: 1px;' +\n ' paddingーtop: ' + style.fontSize + ';';\n\n if (this.hiddenTextareaContainer) {\n this.hiddenTextareaContainer.appendChild(this.hiddenTextarea);\n }\n else {\n fabric.document.body.appendChild(this.hiddenTextarea);\n }\n\n fabric.util.addListener(this.hiddenTextarea, 'keydown', this.onKeyDown.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'keyup', this.onKeyUp.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'input', this.onInput.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'copy', this.copy.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'cut', this.copy.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'paste', this.paste.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'compositionstart', this.onCompositionStart.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'compositionupdate', this.onCompositionUpdate.bind(this));\n fabric.util.addListener(this.hiddenTextarea, 'compositionend', this.onCompositionEnd.bind(this));\n\n if (!this._clickHandlerInitialized && this.canvas) {\n fabric.util.addListener(this.canvas.upperCanvasEl, 'click', this.onClick.bind(this));\n this._clickHandlerInitialized = true;\n }\n },\n\n /**\n * For functionalities on keyDown\n * Map a special key to a function of the instance/prototype\n * If you need different behaviour for ESC or TAB or arrows, you have to change\n * this map setting the name of a function that you build on the fabric.Itext or\n * your prototype.\n * the map change will affect all Instances unless you need for only some text Instances\n * in that case you have to clone this object and assign your Instance.\n * this.keysMap = fabric.util.object.clone(this.keysMap);\n * The function must be in fabric.Itext.prototype.myFunction And will receive event as args[0]\n */\n keysMap: {\n 9: 'exitEditing',\n 27: 'exitEditing',\n 33: 'moveCursorUp',\n 34: 'moveCursorDown',\n 35: 'moveCursorRight',\n 36: 'moveCursorLeft',\n 37: 'moveCursorLeft',\n 38: 'moveCursorUp',\n 39: 'moveCursorRight',\n 40: 'moveCursorDown',\n },\n\n keysMapRtl: {\n 9: 'exitEditing',\n 27: 'exitEditing',\n 33: 'moveCursorUp',\n 34: 'moveCursorDown',\n 35: 'moveCursorLeft',\n 36: 'moveCursorRight',\n 37: 'moveCursorRight',\n 38: 'moveCursorUp',\n 39: 'moveCursorLeft',\n 40: 'moveCursorDown',\n },\n\n /**\n * For functionalities on keyUp + ctrl || cmd\n */\n ctrlKeysMapUp: {\n 67: 'copy',\n 88: 'cut'\n },\n\n /**\n * For functionalities on keyDown + ctrl || cmd\n */\n ctrlKeysMapDown: {\n 65: 'selectAll'\n },\n\n onClick: function() {\n // No need to trigger click event here, focus is enough to have the keyboard appear on Android\n this.hiddenTextarea && this.hiddenTextarea.focus();\n },\n\n /**\n * Handles keydown event\n * only used for arrows and combination of modifier keys.\n * @param {Event} e Event object\n */\n onKeyDown: function(e) {\n if (!this.isEditing) {\n return;\n }\n var keyMap = this.direction === 'rtl' ? this.keysMapRtl : this.keysMap;\n if (e.keyCode in keyMap) {\n this[keyMap[e.keyCode]](e);\n }\n else if ((e.keyCode in this.ctrlKeysMapDown) && (e.ctrlKey || e.metaKey)) {\n this[this.ctrlKeysMapDown[e.keyCode]](e);\n }\n else {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n if (e.keyCode >= 33 && e.keyCode <= 40) {\n // if i press an arrow key just update selection\n this.inCompositionMode = false;\n this.clearContextTop();\n this.renderCursorOrSelection();\n }\n else {\n this.canvas && this.canvas.requestRenderAll();\n }\n },\n\n /**\n * Handles keyup event\n * We handle KeyUp because ie11 and edge have difficulties copy/pasting\n * if a copy/cut event fired, keyup is dismissed\n * @param {Event} e Event object\n */\n onKeyUp: function(e) {\n if (!this.isEditing || this._copyDone || this.inCompositionMode) {\n this._copyDone = false;\n return;\n }\n if ((e.keyCode in this.ctrlKeysMapUp) && (e.ctrlKey || e.metaKey)) {\n this[this.ctrlKeysMapUp[e.keyCode]](e);\n }\n else {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n this.canvas && this.canvas.requestRenderAll();\n },\n\n /**\n * Handles onInput event\n * @param {Event} e Event object\n */\n onInput: function(e) {\n var fromPaste = this.fromPaste;\n this.fromPaste = false;\n e && e.stopPropagation();\n if (!this.isEditing) {\n return;\n }\n // decisions about style changes.\n var nextText = this._splitTextIntoLines(this.hiddenTextarea.value).graphemeText,\n charCount = this._text.length,\n nextCharCount = nextText.length,\n removedText, insertedText,\n charDiff = nextCharCount - charCount,\n selectionStart = this.selectionStart, selectionEnd = this.selectionEnd,\n selection = selectionStart !== selectionEnd,\n copiedStyle, removeFrom, removeTo;\n if (this.hiddenTextarea.value === '') {\n this.styles = { };\n this.updateFromTextArea();\n this.fire('changed');\n if (this.canvas) {\n this.canvas.fire('text:changed', { target: this });\n this.canvas.requestRenderAll();\n }\n return;\n }\n\n var textareaSelection = this.fromStringToGraphemeSelection(\n this.hiddenTextarea.selectionStart,\n this.hiddenTextarea.selectionEnd,\n this.hiddenTextarea.value\n );\n var backDelete = selectionStart > textareaSelection.selectionStart;\n\n if (selection) {\n removedText = this._text.slice(selectionStart, selectionEnd);\n charDiff += selectionEnd - selectionStart;\n }\n else if (nextCharCount < charCount) {\n if (backDelete) {\n removedText = this._text.slice(selectionEnd + charDiff, selectionEnd);\n }\n else {\n removedText = this._text.slice(selectionStart, selectionStart - charDiff);\n }\n }\n insertedText = nextText.slice(textareaSelection.selectionEnd - charDiff, textareaSelection.selectionEnd);\n if (removedText && removedText.length) {\n if (insertedText.length) {\n // let's copy some style before deleting.\n // we want to copy the style before the cursor OR the style at the cursor if selection\n // is bigger than 0.\n copiedStyle = this.getSelectionStyles(selectionStart, selectionStart + 1, false);\n // now duplicate the style one for each inserted text.\n copiedStyle = insertedText.map(function() {\n // this return an array of references, but that is fine since we are\n // copying the style later.\n return copiedStyle[0];\n });\n }\n if (selection) {\n removeFrom = selectionStart;\n removeTo = selectionEnd;\n }\n else if (backDelete) {\n // detect differences between forwardDelete and backDelete\n removeFrom = selectionEnd - removedText.length;\n removeTo = selectionEnd;\n }\n else {\n removeFrom = selectionEnd;\n removeTo = selectionEnd + removedText.length;\n }\n this.removeStyleFromTo(removeFrom, removeTo);\n }\n if (insertedText.length) {\n if (fromPaste && insertedText.join('') === fabric.copiedText && !fabric.disableStyleCopyPaste) {\n copiedStyle = fabric.copiedTextStyle;\n }\n this.insertNewStyleBlock(insertedText, selectionStart, copiedStyle);\n }\n this.updateFromTextArea();\n this.fire('changed');\n if (this.canvas) {\n this.canvas.fire('text:changed', { target: this });\n this.canvas.requestRenderAll();\n }\n },\n /**\n * Composition start\n */\n onCompositionStart: function() {\n this.inCompositionMode = true;\n },\n\n /**\n * Composition end\n */\n onCompositionEnd: function() {\n this.inCompositionMode = false;\n },\n\n // /**\n // * Composition update\n // */\n onCompositionUpdate: function(e) {\n this.compositionStart = e.target.selectionStart;\n this.compositionEnd = e.target.selectionEnd;\n this.updateTextareaPosition();\n },\n\n /**\n * Copies selected text\n * @param {Event} e Event object\n */\n copy: function() {\n if (this.selectionStart === this.selectionEnd) {\n //do not cut-copy if no selection\n return;\n }\n\n fabric.copiedText = this.getSelectedText();\n if (!fabric.disableStyleCopyPaste) {\n fabric.copiedTextStyle = this.getSelectionStyles(this.selectionStart, this.selectionEnd, true);\n }\n else {\n fabric.copiedTextStyle = null;\n }\n this._copyDone = true;\n },\n\n /**\n * Pastes text\n * @param {Event} e Event object\n */\n paste: function() {\n this.fromPaste = true;\n },\n\n /**\n * @private\n * @param {Event} e Event object\n * @return {Object} Clipboard data object\n */\n _getClipboardData: function(e) {\n return (e && e.clipboardData) || fabric.window.clipboardData;\n },\n\n /**\n * Finds the width in pixels before the cursor on the same line\n * @private\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @return {Number} widthBeforeCursor width before cursor\n */\n _getWidthBeforeCursor: function(lineIndex, charIndex) {\n var widthBeforeCursor = this._getLineLeftOffset(lineIndex), bound;\n\n if (charIndex > 0) {\n bound = this.__charBounds[lineIndex][charIndex - 1];\n widthBeforeCursor += bound.left + bound.width;\n }\n return widthBeforeCursor;\n },\n\n /**\n * Gets start offset of a selection\n * @param {Event} e Event object\n * @param {Boolean} isRight\n * @return {Number}\n */\n getDownCursorOffset: function(e, isRight) {\n var selectionProp = this._getSelectionForOffset(e, isRight),\n cursorLocation = this.get2DCursorLocation(selectionProp),\n lineIndex = cursorLocation.lineIndex;\n // if on last line, down cursor goes to end of line\n if (lineIndex === this._textLines.length - 1 || e.metaKey || e.keyCode === 34) {\n // move to the end of a text\n return this._text.length - selectionProp;\n }\n var charIndex = cursorLocation.charIndex,\n widthBeforeCursor = this._getWidthBeforeCursor(lineIndex, charIndex),\n indexOnOtherLine = this._getIndexOnLine(lineIndex + 1, widthBeforeCursor),\n textAfterCursor = this._textLines[lineIndex].slice(charIndex);\n return textAfterCursor.length + indexOnOtherLine + 1 + this.missingNewlineOffset(lineIndex);\n },\n\n /**\n * private\n * Helps finding if the offset should be counted from Start or End\n * @param {Event} e Event object\n * @param {Boolean} isRight\n * @return {Number}\n */\n _getSelectionForOffset: function(e, isRight) {\n if (e.shiftKey && this.selectionStart !== this.selectionEnd && isRight) {\n return this.selectionEnd;\n }\n else {\n return this.selectionStart;\n }\n },\n\n /**\n * @param {Event} e Event object\n * @param {Boolean} isRight\n * @return {Number}\n */\n getUpCursorOffset: function(e, isRight) {\n var selectionProp = this._getSelectionForOffset(e, isRight),\n cursorLocation = this.get2DCursorLocation(selectionProp),\n lineIndex = cursorLocation.lineIndex;\n if (lineIndex === 0 || e.metaKey || e.keyCode === 33) {\n // if on first line, up cursor goes to start of line\n return -selectionProp;\n }\n var charIndex = cursorLocation.charIndex,\n widthBeforeCursor = this._getWidthBeforeCursor(lineIndex, charIndex),\n indexOnOtherLine = this._getIndexOnLine(lineIndex - 1, widthBeforeCursor),\n textBeforeCursor = this._textLines[lineIndex].slice(0, charIndex),\n missingNewlineOffset = this.missingNewlineOffset(lineIndex - 1);\n // return a negative offset\n return -this._textLines[lineIndex - 1].length\n + indexOnOtherLine - textBeforeCursor.length + (1 - missingNewlineOffset);\n },\n\n /**\n * for a given width it founds the matching character.\n * @private\n */\n _getIndexOnLine: function(lineIndex, width) {\n\n var line = this._textLines[lineIndex],\n lineLeftOffset = this._getLineLeftOffset(lineIndex),\n widthOfCharsOnLine = lineLeftOffset,\n indexOnLine = 0, charWidth, foundMatch;\n\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charWidth = this.__charBounds[lineIndex][j].width;\n widthOfCharsOnLine += charWidth;\n if (widthOfCharsOnLine > width) {\n foundMatch = true;\n var leftEdge = widthOfCharsOnLine - charWidth,\n rightEdge = widthOfCharsOnLine,\n offsetFromLeftEdge = Math.abs(leftEdge - width),\n offsetFromRightEdge = Math.abs(rightEdge - width);\n\n indexOnLine = offsetFromRightEdge < offsetFromLeftEdge ? j : (j - 1);\n break;\n }\n }\n\n // reached end\n if (!foundMatch) {\n indexOnLine = line.length - 1;\n }\n\n return indexOnLine;\n },\n\n\n /**\n * Moves cursor down\n * @param {Event} e Event object\n */\n moveCursorDown: function(e) {\n if (this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length) {\n return;\n }\n this._moveCursorUpOrDown('Down', e);\n },\n\n /**\n * Moves cursor up\n * @param {Event} e Event object\n */\n moveCursorUp: function(e) {\n if (this.selectionStart === 0 && this.selectionEnd === 0) {\n return;\n }\n this._moveCursorUpOrDown('Up', e);\n },\n\n /**\n * Moves cursor up or down, fires the events\n * @param {String} direction 'Up' or 'Down'\n * @param {Event} e Event object\n */\n _moveCursorUpOrDown: function(direction, e) {\n // getUpCursorOffset\n // getDownCursorOffset\n var action = 'get' + direction + 'CursorOffset',\n offset = this[action](e, this._selectionDirection === 'right');\n if (e.shiftKey) {\n this.moveCursorWithShift(offset);\n }\n else {\n this.moveCursorWithoutShift(offset);\n }\n if (offset !== 0) {\n this.setSelectionInBoundaries();\n this.abortCursorAnimation();\n this._currentCursorOpacity = 1;\n this.initDelayedCursor();\n this._fireSelectionChanged();\n this._updateTextarea();\n }\n },\n\n /**\n * Moves cursor with shift\n * @param {Number} offset\n */\n moveCursorWithShift: function(offset) {\n var newSelection = this._selectionDirection === 'left'\n ? this.selectionStart + offset\n : this.selectionEnd + offset;\n this.setSelectionStartEndWithShift(this.selectionStart, this.selectionEnd, newSelection);\n return offset !== 0;\n },\n\n /**\n * Moves cursor up without shift\n * @param {Number} offset\n */\n moveCursorWithoutShift: function(offset) {\n if (offset < 0) {\n this.selectionStart += offset;\n this.selectionEnd = this.selectionStart;\n }\n else {\n this.selectionEnd += offset;\n this.selectionStart = this.selectionEnd;\n }\n return offset !== 0;\n },\n\n /**\n * Moves cursor left\n * @param {Event} e Event object\n */\n moveCursorLeft: function(e) {\n if (this.selectionStart === 0 && this.selectionEnd === 0) {\n return;\n }\n this._moveCursorLeftOrRight('Left', e);\n },\n\n /**\n * @private\n * @return {Boolean} true if a change happened\n */\n _move: function(e, prop, direction) {\n var newValue;\n if (e.altKey) {\n newValue = this['findWordBoundary' + direction](this[prop]);\n }\n else if (e.metaKey || e.keyCode === 35 || e.keyCode === 36 ) {\n newValue = this['findLineBoundary' + direction](this[prop]);\n }\n else {\n this[prop] += direction === 'Left' ? -1 : 1;\n return true;\n }\n if (typeof newValue !== 'undefined' && this[prop] !== newValue) {\n this[prop] = newValue;\n return true;\n }\n },\n\n /**\n * @private\n */\n _moveLeft: function(e, prop) {\n return this._move(e, prop, 'Left');\n },\n\n /**\n * @private\n */\n _moveRight: function(e, prop) {\n return this._move(e, prop, 'Right');\n },\n\n /**\n * Moves cursor left without keeping selection\n * @param {Event} e\n */\n moveCursorLeftWithoutShift: function(e) {\n var change = true;\n this._selectionDirection = 'left';\n\n // only move cursor when there is no selection,\n // otherwise we discard it, and leave cursor on same place\n if (this.selectionEnd === this.selectionStart && this.selectionStart !== 0) {\n change = this._moveLeft(e, 'selectionStart');\n\n }\n this.selectionEnd = this.selectionStart;\n return change;\n },\n\n /**\n * Moves cursor left while keeping selection\n * @param {Event} e\n */\n moveCursorLeftWithShift: function(e) {\n if (this._selectionDirection === 'right' && this.selectionStart !== this.selectionEnd) {\n return this._moveLeft(e, 'selectionEnd');\n }\n else if (this.selectionStart !== 0){\n this._selectionDirection = 'left';\n return this._moveLeft(e, 'selectionStart');\n }\n },\n\n /**\n * Moves cursor right\n * @param {Event} e Event object\n */\n moveCursorRight: function(e) {\n if (this.selectionStart >= this._text.length && this.selectionEnd >= this._text.length) {\n return;\n }\n this._moveCursorLeftOrRight('Right', e);\n },\n\n /**\n * Moves cursor right or Left, fires event\n * @param {String} direction 'Left', 'Right'\n * @param {Event} e Event object\n */\n _moveCursorLeftOrRight: function(direction, e) {\n var actionName = 'moveCursor' + direction + 'With';\n this._currentCursorOpacity = 1;\n\n if (e.shiftKey) {\n actionName += 'Shift';\n }\n else {\n actionName += 'outShift';\n }\n if (this[actionName](e)) {\n this.abortCursorAnimation();\n this.initDelayedCursor();\n this._fireSelectionChanged();\n this._updateTextarea();\n }\n },\n\n /**\n * Moves cursor right while keeping selection\n * @param {Event} e\n */\n moveCursorRightWithShift: function(e) {\n if (this._selectionDirection === 'left' && this.selectionStart !== this.selectionEnd) {\n return this._moveRight(e, 'selectionStart');\n }\n else if (this.selectionEnd !== this._text.length) {\n this._selectionDirection = 'right';\n return this._moveRight(e, 'selectionEnd');\n }\n },\n\n /**\n * Moves cursor right without keeping selection\n * @param {Event} e Event object\n */\n moveCursorRightWithoutShift: function(e) {\n var changed = true;\n this._selectionDirection = 'right';\n\n if (this.selectionStart === this.selectionEnd) {\n changed = this._moveRight(e, 'selectionStart');\n this.selectionEnd = this.selectionStart;\n }\n else {\n this.selectionStart = this.selectionEnd;\n }\n return changed;\n },\n\n /**\n * Removes characters from start/end\n * start/end ar per grapheme position in _text array.\n *\n * @param {Number} start\n * @param {Number} end default to start + 1\n */\n removeChars: function(start, end) {\n if (typeof end === 'undefined') {\n end = start + 1;\n }\n this.removeStyleFromTo(start, end);\n this._text.splice(start, end - start);\n this.text = this._text.join('');\n this.set('dirty', true);\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n this._removeExtraneousStyles();\n },\n\n /**\n * insert characters at start position, before start position.\n * start equal 1 it means the text get inserted between actual grapheme 0 and 1\n * if style array is provided, it must be as the same length of text in graphemes\n * if end is provided and is bigger than start, old text is replaced.\n * start/end ar per grapheme position in _text array.\n *\n * @param {String} text text to insert\n * @param {Array} style array of style objects\n * @param {Number} start\n * @param {Number} end default to start + 1\n */\n insertChars: function(text, style, start, end) {\n if (typeof end === 'undefined') {\n end = start;\n }\n if (end > start) {\n this.removeStyleFromTo(start, end);\n }\n var graphemes = fabric.util.string.graphemeSplit(text);\n this.insertNewStyleBlock(graphemes, start, style);\n this._text = [].concat(this._text.slice(0, start), graphemes, this._text.slice(end));\n this.text = this._text.join('');\n this.set('dirty', true);\n if (this._shouldClearDimensionCache()) {\n this.initDimensions();\n this.setCoords();\n }\n this._removeExtraneousStyles();\n },\n\n});\n\n\n/* _TO_SVG_START_ */\n(function() {\n var toFixed = fabric.util.toFixed,\n multipleSpacesRegex = / +/g;\n\n fabric.util.object.extend(fabric.Text.prototype, /** @lends fabric.Text.prototype */ {\n\n /**\n * Returns SVG representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n _toSVG: function() {\n var offsets = this._getSVGLeftTopOffsets(),\n textAndBg = this._getSVGTextAndBg(offsets.textTop, offsets.textLeft);\n return this._wrapSVGTextAndBg(textAndBg);\n },\n\n /**\n * Returns svg representation of an instance\n * @param {Function} [reviver] Method for further parsing of svg representation.\n * @return {String} svg representation of an instance\n */\n toSVG: function(reviver) {\n return this._createBaseSVGMarkup(\n this._toSVG(),\n { reviver: reviver, noStyle: true, withShadow: true }\n );\n },\n\n /**\n * @private\n */\n _getSVGLeftTopOffsets: function() {\n return {\n textLeft: -this.width / 2,\n textTop: -this.height / 2,\n lineTop: this.getHeightOfLine(0)\n };\n },\n\n /**\n * @private\n */\n _wrapSVGTextAndBg: function(textAndBg) {\n var noShadow = true,\n textDecoration = this.getSvgTextDecoration(this);\n return [\n textAndBg.textBgRects.join(''),\n '\\t\\t',\n textAndBg.textSpans.join(''),\n '\\n'\n ];\n },\n\n /**\n * @private\n * @param {Number} textTopOffset Text top offset\n * @param {Number} textLeftOffset Text left offset\n * @return {Object}\n */\n _getSVGTextAndBg: function(textTopOffset, textLeftOffset) {\n var textSpans = [],\n textBgRects = [],\n height = textTopOffset, lineOffset;\n // bounding-box background\n this._setSVGBg(textBgRects);\n\n // text and text-background\n for (var i = 0, len = this._textLines.length; i < len; i++) {\n lineOffset = this._getLineLeftOffset(i);\n if (this.textBackgroundColor || this.styleHas('textBackgroundColor', i)) {\n this._setSVGTextLineBg(textBgRects, i, textLeftOffset + lineOffset, height);\n }\n this._setSVGTextLineText(textSpans, i, textLeftOffset + lineOffset, height);\n height += this.getHeightOfLine(i);\n }\n\n return {\n textSpans: textSpans,\n textBgRects: textBgRects\n };\n },\n\n /**\n * @private\n */\n _createTextCharSpan: function(_char, styleDecl, left, top) {\n var shouldUseWhitespace = _char !== _char.trim() || _char.match(multipleSpacesRegex),\n styleProps = this.getSvgSpanStyles(styleDecl, shouldUseWhitespace),\n fillStyles = styleProps ? 'style=\"' + styleProps + '\"' : '',\n dy = styleDecl.deltaY, dySpan = '',\n NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n if (dy) {\n dySpan = ' dy=\"' + toFixed(dy, NUM_FRACTION_DIGITS) + '\" ';\n }\n return [\n '',\n fabric.util.string.escapeXml(_char),\n ''\n ].join('');\n },\n\n _setSVGTextLineText: function(textSpans, lineIndex, textLeftOffset, textTopOffset) {\n // set proper line offset\n var lineHeight = this.getHeightOfLine(lineIndex),\n isJustify = this.textAlign.indexOf('justify') !== -1,\n actualStyle,\n nextStyle,\n charsToRender = '',\n charBox, style,\n boxWidth = 0,\n line = this._textLines[lineIndex],\n timeToRender;\n\n textTopOffset += lineHeight * (1 - this._fontSizeFraction) / this.lineHeight;\n for (var i = 0, len = line.length - 1; i <= len; i++) {\n timeToRender = i === len || this.charSpacing;\n charsToRender += line[i];\n charBox = this.__charBounds[lineIndex][i];\n if (boxWidth === 0) {\n textLeftOffset += charBox.kernedWidth - charBox.width;\n boxWidth += charBox.width;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n if (isJustify && !timeToRender) {\n if (this._reSpaceAndTab.test(line[i])) {\n timeToRender = true;\n }\n }\n if (!timeToRender) {\n // if we have charSpacing, we render char by char\n actualStyle = actualStyle || this.getCompleteStyleDeclaration(lineIndex, i);\n nextStyle = this.getCompleteStyleDeclaration(lineIndex, i + 1);\n timeToRender = fabric.util.hasStyleChanged(actualStyle, nextStyle, true);\n }\n if (timeToRender) {\n style = this._getStyleDeclaration(lineIndex, i) || { };\n textSpans.push(this._createTextCharSpan(charsToRender, style, textLeftOffset, textTopOffset));\n charsToRender = '';\n actualStyle = nextStyle;\n textLeftOffset += boxWidth;\n boxWidth = 0;\n }\n }\n },\n\n _pushTextBgRect: function(textBgRects, color, left, top, width, height) {\n var NUM_FRACTION_DIGITS = fabric.Object.NUM_FRACTION_DIGITS;\n textBgRects.push(\n '\\t\\t\\n');\n },\n\n _setSVGTextLineBg: function(textBgRects, i, leftOffset, textTopOffset) {\n var line = this._textLines[i],\n heightOfLine = this.getHeightOfLine(i) / this.lineHeight,\n boxWidth = 0,\n boxStart = 0,\n charBox, currentColor,\n lastColor = this.getValueOfPropertyAt(i, 0, 'textBackgroundColor');\n for (var j = 0, jlen = line.length; j < jlen; j++) {\n charBox = this.__charBounds[i][j];\n currentColor = this.getValueOfPropertyAt(i, j, 'textBackgroundColor');\n if (currentColor !== lastColor) {\n lastColor && this._pushTextBgRect(textBgRects, lastColor, leftOffset + boxStart,\n textTopOffset, boxWidth, heightOfLine);\n boxStart = charBox.left;\n boxWidth = charBox.width;\n lastColor = currentColor;\n }\n else {\n boxWidth += charBox.kernedWidth;\n }\n }\n currentColor && this._pushTextBgRect(textBgRects, currentColor, leftOffset + boxStart,\n textTopOffset, boxWidth, heightOfLine);\n },\n\n /**\n * Adobe Illustrator (at least CS5) is unable to render rgba()-based fill values\n * we work around it by \"moving\" alpha channel into opacity attribute and setting fill's alpha to 1\n *\n * @private\n * @param {*} value\n * @return {String}\n */\n _getFillAttributes: function(value) {\n var fillColor = (value && typeof value === 'string') ? new fabric.Color(value) : '';\n if (!fillColor || !fillColor.getSource() || fillColor.getAlpha() === 1) {\n return 'fill=\"' + value + '\"';\n }\n return 'opacity=\"' + fillColor.getAlpha() + '\" fill=\"' + fillColor.setAlpha(1).toRgb() + '\"';\n },\n\n /**\n * @private\n */\n _getSVGLineTopOffset: function(lineIndex) {\n var lineTopOffset = 0, lastHeight = 0;\n for (var j = 0; j < lineIndex; j++) {\n lineTopOffset += this.getHeightOfLine(j);\n }\n lastHeight = this.getHeightOfLine(j);\n return {\n lineTop: lineTopOffset,\n offset: (this._fontSizeMult - this._fontSizeFraction) * lastHeight / (this.lineHeight * this._fontSizeMult)\n };\n },\n\n /**\n * Returns styles-string for svg-export\n * @param {Boolean} skipShadow a boolean to skip shadow filter output\n * @return {String}\n */\n getSvgStyles: function(skipShadow) {\n var svgStyle = fabric.Object.prototype.getSvgStyles.call(this, skipShadow);\n return svgStyle + ' white-space: pre;';\n },\n });\n})();\n/* _TO_SVG_END_ */\n\n\n(function(global) {\n\n 'use strict';\n\n var fabric = global.fabric || (global.fabric = {});\n\n /**\n * Textbox class, based on IText, allows the user to resize the text rectangle\n * and wraps lines automatically. Textboxes have their Y scaling locked, the\n * user can only change width. Height is adjusted automatically based on the\n * wrapping of lines.\n * @class fabric.Textbox\n * @extends fabric.IText\n * @mixes fabric.Observable\n * @return {fabric.Textbox} thisArg\n * @see {@link fabric.Textbox#initialize} for constructor definition\n */\n fabric.Textbox = fabric.util.createClass(fabric.IText, fabric.Observable, {\n\n /**\n * Type of an object\n * @type String\n * @default\n */\n type: 'textbox',\n\n /**\n * Minimum width of textbox, in pixels.\n * @type Number\n * @default\n */\n minWidth: 20,\n\n /**\n * Minimum calculated width of a textbox, in pixels.\n * fixed to 2 so that an empty textbox cannot go to 0\n * and is still selectable without text.\n * @type Number\n * @default\n */\n dynamicMinWidth: 2,\n\n /**\n * Cached array of text wrapping.\n * @type Array\n */\n __cachedLines: null,\n\n /**\n * Override standard Object class values\n */\n lockScalingFlip: true,\n\n /**\n * Override standard Object class values\n * Textbox needs this on false\n */\n noScaleCache: false,\n\n /**\n * Properties which when set cause object to change dimensions\n * @type Object\n * @private\n */\n _dimensionAffectingProps: fabric.Text.prototype._dimensionAffectingProps.concat('width'),\n\n /**\n * Use this regular expression to split strings in breakable lines\n * @private\n */\n _wordJoiners: /[ \\t\\r]/,\n\n /**\n * Use this boolean property in order to split strings that have no white space concept.\n * this is a cheap way to help with chinese/japanese\n * @type Boolean\n * @since 2.6.0\n */\n splitByGrapheme: false,\n\n /**\n * Unlike superclass's version of this function, Textbox does not update\n * its width.\n * @private\n * @override\n */\n initDimensions: function() {\n if (this.__skipDimension) {\n return;\n }\n this.isEditing && this.initDelayedCursor();\n this.clearContextTop();\n this._clearCache();\n // clear dynamicMinWidth as it will be different after we re-wrap line\n this.dynamicMinWidth = 0;\n // wrap lines\n this._styleMap = this._generateStyleMap(this._splitText());\n // if after wrapping, the width is smaller than dynamicMinWidth, change the width and re-wrap\n if (this.dynamicMinWidth > this.width) {\n this._set('width', this.dynamicMinWidth);\n }\n if (this.textAlign.indexOf('justify') !== -1) {\n // once text is measured we need to make space fatter to make justified text.\n this.enlargeSpaces();\n }\n // clear cache and re-calculate height\n this.height = this.calcTextHeight();\n this.saveState({ propertySet: '_dimensionAffectingProps' });\n },\n\n /**\n * Generate an object that translates the style object so that it is\n * broken up by visual lines (new lines and automatic wrapping).\n * The original text styles object is broken up by actual lines (new lines only),\n * which is only sufficient for Text / IText\n * @private\n */\n _generateStyleMap: function(textInfo) {\n var realLineCount = 0,\n realLineCharCount = 0,\n charCount = 0,\n map = {};\n\n for (var i = 0; i < textInfo.graphemeLines.length; i++) {\n if (textInfo.graphemeText[charCount] === '\\n' && i > 0) {\n realLineCharCount = 0;\n charCount++;\n realLineCount++;\n }\n else if (!this.splitByGrapheme && this._reSpaceAndTab.test(textInfo.graphemeText[charCount]) && i > 0) {\n // this case deals with space's that are removed from end of lines when wrapping\n realLineCharCount++;\n charCount++;\n }\n\n map[i] = { line: realLineCount, offset: realLineCharCount };\n\n charCount += textInfo.graphemeLines[i].length;\n realLineCharCount += textInfo.graphemeLines[i].length;\n }\n\n return map;\n },\n\n /**\n * Returns true if object has a style property or has it on a specified line\n * @param {Number} lineIndex\n * @return {Boolean}\n */\n styleHas: function(property, lineIndex) {\n if (this._styleMap && !this.isWrapping) {\n var map = this._styleMap[lineIndex];\n if (map) {\n lineIndex = map.line;\n }\n }\n return fabric.Text.prototype.styleHas.call(this, property, lineIndex);\n },\n\n /**\n * Returns true if object has no styling or no styling in a line\n * @param {Number} lineIndex , lineIndex is on wrapped lines.\n * @return {Boolean}\n */\n isEmptyStyles: function(lineIndex) {\n if (!this.styles) {\n return true;\n }\n var offset = 0, nextLineIndex = lineIndex + 1, nextOffset, obj, shouldLimit = false,\n map = this._styleMap[lineIndex], mapNextLine = this._styleMap[lineIndex + 1];\n if (map) {\n lineIndex = map.line;\n offset = map.offset;\n }\n if (mapNextLine) {\n nextLineIndex = mapNextLine.line;\n shouldLimit = nextLineIndex === lineIndex;\n nextOffset = mapNextLine.offset;\n }\n obj = typeof lineIndex === 'undefined' ? this.styles : { line: this.styles[lineIndex] };\n for (var p1 in obj) {\n for (var p2 in obj[p1]) {\n if (p2 >= offset && (!shouldLimit || p2 < nextOffset)) {\n // eslint-disable-next-line no-unused-vars\n for (var p3 in obj[p1][p2]) {\n return false;\n }\n }\n }\n }\n return true;\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @private\n */\n _getStyleDeclaration: function(lineIndex, charIndex) {\n if (this._styleMap && !this.isWrapping) {\n var map = this._styleMap[lineIndex];\n if (!map) {\n return null;\n }\n lineIndex = map.line;\n charIndex = map.offset + charIndex;\n }\n return this.callSuper('_getStyleDeclaration', lineIndex, charIndex);\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @param {Object} style\n * @private\n */\n _setStyleDeclaration: function(lineIndex, charIndex, style) {\n var map = this._styleMap[lineIndex];\n lineIndex = map.line;\n charIndex = map.offset + charIndex;\n\n this.styles[lineIndex][charIndex] = style;\n },\n\n /**\n * @param {Number} lineIndex\n * @param {Number} charIndex\n * @private\n */\n _deleteStyleDeclaration: function(lineIndex, charIndex) {\n var map = this._styleMap[lineIndex];\n lineIndex = map.line;\n charIndex = map.offset + charIndex;\n delete this.styles[lineIndex][charIndex];\n },\n\n /**\n * probably broken need a fix\n * Returns the real style line that correspond to the wrapped lineIndex line\n * Used just to verify if the line does exist or not.\n * @param {Number} lineIndex\n * @returns {Boolean} if the line exists or not\n * @private\n */\n _getLineStyle: function(lineIndex) {\n var map = this._styleMap[lineIndex];\n return !!this.styles[map.line];\n },\n\n /**\n * Set the line style to an empty object so that is initialized\n * @param {Number} lineIndex\n * @param {Object} style\n * @private\n */\n _setLineStyle: function(lineIndex) {\n var map = this._styleMap[lineIndex];\n this.styles[map.line] = {};\n },\n\n /**\n * Wraps text using the 'width' property of Textbox. First this function\n * splits text on newlines, so we preserve newlines entered by the user.\n * Then it wraps each line using the width of the Textbox by calling\n * _wrapLine().\n * @param {Array} lines The string array of text that is split into lines\n * @param {Number} desiredWidth width you want to wrap to\n * @returns {Array} Array of lines\n */\n _wrapText: function(lines, desiredWidth) {\n var wrapped = [], i;\n this.isWrapping = true;\n for (i = 0; i < lines.length; i++) {\n wrapped = wrapped.concat(this._wrapLine(lines[i], i, desiredWidth));\n }\n this.isWrapping = false;\n return wrapped;\n },\n\n /**\n * Helper function to measure a string of text, given its lineIndex and charIndex offset\n * it gets called when charBounds are not available yet.\n * @param {CanvasRenderingContext2D} ctx\n * @param {String} text\n * @param {number} lineIndex\n * @param {number} charOffset\n * @returns {number}\n * @private\n */\n _measureWord: function(word, lineIndex, charOffset) {\n var width = 0, prevGrapheme, skipLeft = true;\n charOffset = charOffset || 0;\n for (var i = 0, len = word.length; i < len; i++) {\n var box = this._getGraphemeBox(word[i], lineIndex, i + charOffset, prevGrapheme, skipLeft);\n width += box.kernedWidth;\n prevGrapheme = word[i];\n }\n return width;\n },\n\n /**\n * Wraps a line of text using the width of the Textbox and a context.\n * @param {Array} line The grapheme array that represent the line\n * @param {Number} lineIndex\n * @param {Number} desiredWidth width you want to wrap the line to\n * @param {Number} reservedSpace space to remove from wrapping for custom functionalities\n * @returns {Array} Array of line(s) into which the given text is wrapped\n * to.\n */\n _wrapLine: function(_line, lineIndex, desiredWidth, reservedSpace) {\n var lineWidth = 0,\n splitByGrapheme = this.splitByGrapheme,\n graphemeLines = [],\n line = [],\n // spaces in different languages?\n words = splitByGrapheme ? fabric.util.string.graphemeSplit(_line) : _line.split(this._wordJoiners),\n word = '',\n offset = 0,\n infix = splitByGrapheme ? '' : ' ',\n wordWidth = 0,\n infixWidth = 0,\n largestWordWidth = 0,\n lineJustStarted = true,\n additionalSpace = this._getWidthOfCharSpacing(),\n reservedSpace = reservedSpace || 0;\n // fix a difference between split and graphemeSplit\n if (words.length === 0) {\n words.push([]);\n }\n desiredWidth -= reservedSpace;\n for (var i = 0; i < words.length; i++) {\n // if using splitByGrapheme words are already in graphemes.\n word = splitByGrapheme ? words[i] : fabric.util.string.graphemeSplit(words[i]);\n wordWidth = this._measureWord(word, lineIndex, offset);\n offset += word.length;\n\n lineWidth += infixWidth + wordWidth - additionalSpace;\n if (lineWidth > desiredWidth && !lineJustStarted) {\n graphemeLines.push(line);\n line = [];\n lineWidth = wordWidth;\n lineJustStarted = true;\n }\n else {\n lineWidth += additionalSpace;\n }\n\n if (!lineJustStarted && !splitByGrapheme) {\n line.push(infix);\n }\n line = line.concat(word);\n\n infixWidth = splitByGrapheme ? 0 : this._measureWord([infix], lineIndex, offset);\n offset++;\n lineJustStarted = false;\n // keep track of largest word\n if (wordWidth > largestWordWidth) {\n largestWordWidth = wordWidth;\n }\n }\n\n i && graphemeLines.push(line);\n\n if (largestWordWidth + reservedSpace > this.dynamicMinWidth) {\n this.dynamicMinWidth = largestWordWidth - additionalSpace + reservedSpace;\n }\n return graphemeLines;\n },\n\n /**\n * Detect if the text line is ended with an hard break\n * text and itext do not have wrapping, return false\n * @param {Number} lineIndex text to split\n * @return {Boolean}\n */\n isEndOfWrapping: function(lineIndex) {\n if (!this._styleMap[lineIndex + 1]) {\n // is last line, return true;\n return true;\n }\n if (this._styleMap[lineIndex + 1].line !== this._styleMap[lineIndex].line) {\n // this is last line before a line break, return true;\n return true;\n }\n return false;\n },\n\n /**\n * Detect if a line has a linebreak and so we need to account for it when moving\n * and counting style.\n * @return Number\n */\n missingNewlineOffset: function(lineIndex) {\n if (this.splitByGrapheme) {\n return this.isEndOfWrapping(lineIndex) ? 1 : 0;\n }\n return 1;\n },\n\n /**\n * Gets lines of text to render in the Textbox. This function calculates\n * text wrapping on the fly every time it is called.\n * @param {String} text text to split\n * @returns {Array} Array of lines in the Textbox.\n * @override\n */\n _splitTextIntoLines: function(text) {\n var newText = fabric.Text.prototype._splitTextIntoLines.call(this, text),\n graphemeLines = this._wrapText(newText.lines, this.width),\n lines = new Array(graphemeLines.length);\n for (var i = 0; i < graphemeLines.length; i++) {\n lines[i] = graphemeLines[i].join('');\n }\n newText.lines = lines;\n newText.graphemeLines = graphemeLines;\n return newText;\n },\n\n getMinWidth: function() {\n return Math.max(this.minWidth, this.dynamicMinWidth);\n },\n\n _removeExtraneousStyles: function() {\n var linesToKeep = {};\n for (var prop in this._styleMap) {\n if (this._textLines[prop]) {\n linesToKeep[this._styleMap[prop].line] = 1;\n }\n }\n for (var prop in this.styles) {\n if (!linesToKeep[prop]) {\n delete this.styles[prop];\n }\n }\n },\n\n /**\n * Returns object representation of an instance\n * @method toObject\n * @param {Array} [propertiesToInclude] Any properties that you might want to additionally include in the output\n * @return {Object} object representation of an instance\n */\n toObject: function(propertiesToInclude) {\n return this.callSuper('toObject', ['minWidth', 'splitByGrapheme'].concat(propertiesToInclude));\n }\n });\n\n /**\n * Returns fabric.Textbox instance from an object representation\n * @static\n * @memberOf fabric.Textbox\n * @param {Object} object Object to create an instance from\n * @param {Function} [callback] Callback to invoke when an fabric.Textbox instance is created\n */\n fabric.Textbox.fromObject = function(object, callback) {\n var styles = fabric.util.stylesFromArray(object.styles, object.text);\n //copy object to prevent mutation\n var objCopy = Object.assign({}, object, { styles: styles });\n return fabric.Object._fromObject('Textbox', objCopy, callback, 'text');\n };\n})(typeof exports !== 'undefined' ? exports : this);\n\n\n(function() {\n\n var controlsUtils = fabric.controlsUtils,\n scaleSkewStyleHandler = controlsUtils.scaleSkewCursorStyleHandler,\n scaleStyleHandler = controlsUtils.scaleCursorStyleHandler,\n scalingEqually = controlsUtils.scalingEqually,\n scalingYOrSkewingX = controlsUtils.scalingYOrSkewingX,\n scalingXOrSkewingY = controlsUtils.scalingXOrSkewingY,\n scaleOrSkewActionName = controlsUtils.scaleOrSkewActionName,\n objectControls = fabric.Object.prototype.controls;\n\n objectControls.ml = new fabric.Control({\n x: -0.5,\n y: 0,\n cursorStyleHandler: scaleSkewStyleHandler,\n actionHandler: scalingXOrSkewingY,\n getActionName: scaleOrSkewActionName,\n });\n\n objectControls.mr = new fabric.Control({\n x: 0.5,\n y: 0,\n cursorStyleHandler: scaleSkewStyleHandler,\n actionHandler: scalingXOrSkewingY,\n getActionName: scaleOrSkewActionName,\n });\n\n objectControls.mb = new fabric.Control({\n x: 0,\n y: 0.5,\n cursorStyleHandler: scaleSkewStyleHandler,\n actionHandler: scalingYOrSkewingX,\n getActionName: scaleOrSkewActionName,\n });\n\n objectControls.mt = new fabric.Control({\n x: 0,\n y: -0.5,\n cursorStyleHandler: scaleSkewStyleHandler,\n actionHandler: scalingYOrSkewingX,\n getActionName: scaleOrSkewActionName,\n });\n\n objectControls.tl = new fabric.Control({\n x: -0.5,\n y: -0.5,\n cursorStyleHandler: scaleStyleHandler,\n actionHandler: scalingEqually\n });\n\n objectControls.tr = new fabric.Control({\n x: 0.5,\n y: -0.5,\n cursorStyleHandler: scaleStyleHandler,\n actionHandler: scalingEqually\n });\n\n objectControls.bl = new fabric.Control({\n x: -0.5,\n y: 0.5,\n cursorStyleHandler: scaleStyleHandler,\n actionHandler: scalingEqually\n });\n\n objectControls.br = new fabric.Control({\n x: 0.5,\n y: 0.5,\n cursorStyleHandler: scaleStyleHandler,\n actionHandler: scalingEqually\n });\n\n objectControls.mtr = new fabric.Control({\n x: 0,\n y: -0.5,\n actionHandler: controlsUtils.rotationWithSnapping,\n cursorStyleHandler: controlsUtils.rotationStyleHandler,\n offsetY: -40,\n withConnection: true,\n actionName: 'rotate',\n });\n\n if (fabric.Textbox) {\n // this is breaking the prototype inheritance, no time / ideas to fix it.\n // is important to document that if you want to have all objects to have a\n // specific custom control, you have to add it to Object prototype and to Textbox\n // prototype. The controls are shared as references. So changes to control `tr`\n // can still apply to all objects if needed.\n var textBoxControls = fabric.Textbox.prototype.controls = { };\n\n textBoxControls.mtr = objectControls.mtr;\n textBoxControls.tr = objectControls.tr;\n textBoxControls.br = objectControls.br;\n textBoxControls.tl = objectControls.tl;\n textBoxControls.bl = objectControls.bl;\n textBoxControls.mt = objectControls.mt;\n textBoxControls.mb = objectControls.mb;\n\n textBoxControls.mr = new fabric.Control({\n x: 0.5,\n y: 0,\n actionHandler: controlsUtils.changeWidth,\n cursorStyleHandler: scaleSkewStyleHandler,\n actionName: 'resizing',\n });\n\n textBoxControls.ml = new fabric.Control({\n x: -0.5,\n y: 0,\n actionHandler: controlsUtils.changeWidth,\n cursorStyleHandler: scaleSkewStyleHandler,\n actionName: 'resizing',\n });\n }\n})();\n\n","(function(a,b){if(\"function\"==typeof define&&define.amd)define([],b);else if(\"undefined\"!=typeof exports)b();else{b(),a.FileSaver={exports:{}}.exports}})(this,function(){\"use strict\";function b(a,b){return\"undefined\"==typeof b?b={autoBom:!1}:\"object\"!=typeof b&&(console.warn(\"Deprecated: Expected third argument to be a object\"),b={autoBom:!b}),b.autoBom&&/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(a.type)?new Blob([\"\\uFEFF\",a],{type:a.type}):a}function c(a,b,c){var d=new XMLHttpRequest;d.open(\"GET\",a),d.responseType=\"blob\",d.onload=function(){g(d.response,b,c)},d.onerror=function(){console.error(\"could not download file\")},d.send()}function d(a){var b=new XMLHttpRequest;b.open(\"HEAD\",a,!1);try{b.send()}catch(a){}return 200<=b.status&&299>=b.status}function e(a){try{a.dispatchEvent(new MouseEvent(\"click\"))}catch(c){var b=document.createEvent(\"MouseEvents\");b.initMouseEvent(\"click\",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),a.dispatchEvent(b)}}var f=\"object\"==typeof window&&window.window===window?window:\"object\"==typeof self&&self.self===self?self:\"object\"==typeof global&&global.global===global?global:void 0,a=f.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),g=f.saveAs||(\"object\"!=typeof window||window!==f?function(){}:\"download\"in HTMLAnchorElement.prototype&&!a?function(b,g,h){var i=f.URL||f.webkitURL,j=document.createElement(\"a\");g=g||b.name||\"download\",j.download=g,j.rel=\"noopener\",\"string\"==typeof b?(j.href=b,j.origin===location.origin?e(j):d(j.href)?c(b,g,h):e(j,j.target=\"_blank\")):(j.href=i.createObjectURL(b),setTimeout(function(){i.revokeObjectURL(j.href)},4E4),setTimeout(function(){e(j)},0))}:\"msSaveOrOpenBlob\"in navigator?function(f,g,h){if(g=g||f.name||\"download\",\"string\"!=typeof f)navigator.msSaveOrOpenBlob(b(f,h),g);else if(d(f))c(f,g,h);else{var i=document.createElement(\"a\");i.href=f,i.target=\"_blank\",setTimeout(function(){e(i)})}}:function(b,d,e,g){if(g=g||open(\"\",\"_blank\"),g&&(g.document.title=g.document.body.innerText=\"downloading...\"),\"string\"==typeof b)return c(b,d,e);var h=\"application/octet-stream\"===b.type,i=/constructor/i.test(f.HTMLElement)||f.safari,j=/CriOS\\/[\\d]+/.test(navigator.userAgent);if((j||h&&i||a)&&\"undefined\"!=typeof FileReader){var k=new FileReader;k.onloadend=function(){var a=k.result;a=j?a:a.replace(/^data:[^;]*;/,\"data:attachment/file;\"),g?g.location.href=a:location=a,g=null},k.readAsDataURL(b)}else{var l=f.URL||f.webkitURL,m=l.createObjectURL(b);g?g.location=m:location.href=m,g=null,setTimeout(function(){l.revokeObjectURL(m)},4E4)}});f.saveAs=g.saveAs=g,\"undefined\"!=typeof module&&(module.exports=g)});\n\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '